2025. 3. 30. 23:05ㆍData Engineering
들어가며
최근 GCP 내 *Zabbix 서버에서 MySQL 모니터링을 위한 Zabbix Agent 설치 중 포트 에러가 발생했습니다. 원인은 VPC 방화벽 규칙에서 인그레스 규칙이 설정되지 않아 10050 포트 접속이 차단된 것이었습니다. 방화벽 규칙을 새로 생성해 적용하고 나서야 Zabbix 서버와 정상적으로 연결이 되었는데요, 이 과정에서 방화벽 설정의 중요성을 다시 한번 깨달았습니다. 오늘은 앞으로 비슷한 문제 해결을 위해 GCP 네트워크와 방화벽을 정리해 보겠습니다.
*Zabbix: 서버 및 네트워크의 상태를 실시간으로 모니터링할 수 있는 오픈소스 기반의 모니터링 툴
1. GCP 네트워크
1-1. VPC
공식 문서에서는 Virtual Private Cloud(VPC) 네트워크를 구글의 프로덕션 네트워크 내에서 구현되는 물리적 네트워크의 가상버전이라고 정의[1]합니다. 즉, 구글 클라우드 내에서 가상 네트워크를 생성할 수 있는 서비스입니다.
- 한 프로젝트에는 여러 개의 VPC 네트워크가 있을 수 있습니다.
- VPC 내의 네트워크 트래픽은 다른 모든 VPC에서 격리됩니다.
- VPC 내에서 각 리소스(VM, Cloud SQL 등)를 위한 서브넷을 생성할 수 있습니다.
1-2. 서브넷
앞서 언급했듯 각 VPC 네트워크는 서브넷으로 구성됩니다. 이때 서브넷은 VPC 내에서 IP 주소 대역을 나누는 논리적인 네트워크 단위를 말합니다. 전역 리소스(Global Resource)인 VPC와 달리 서브넷은 리전 리소스(Region Resource)입니다. VPC 네트워크는 IPv4 전용(단일 스택) 서브넷과, IPv4 및 IPv6 (이중 스택) 서브넷을 지원합니다.
*참고로 구글에서 서브네트워크와 서브넷은 동의어입니다.
1-3. 방화벽
방화벽은 VPC 네트워크 안에서 트래픽을 허용하거나 차단하는 규칙을 정의합니다. 이를 위해 인그레스(Ingress)와 이그레스(Egress)를 설정합니다. 인그레스는 서비스 경계 외부의 리소스가 내부의 리소스에 접근하는 것을, 이그레스는 그 반대를 의미합니다. 모니터링을 예로 들자면 Zabbix 서버에서 Agent로 접근이 필요할 때 외부에서 트래픽이 들어오는 것을 허용하도록 인그레스 규칙을 만들 수 있습니다.
2. VPC 방화벽 규칙
2-1. VPC 방화벽 규칙 생성
VPC 방화벽 규칙 생성 방법 중 GCP 콘솔에서 생성하는 법을 알아보겠습니다. 네트워크 보안 > Cloud NGFW > 방화벽 정책 > 방화벽 규칙 만들기에서 생성할 수 있습니다.
- 로그: 방화벽 규칙의 영향을 감사, 확인, 분석하는 데 사용 (기본값: 사용 안 함)
- 네트워크: VPC 네트워크 선택
- 우선순위: 숫자가 작을수록 높은 우선순위
- 0부터 65535까지의 정수이며 기본값은 1000
- 트래픽과 일치하는 가장 높은 우선순위만 적용되며 낮은 순위는 무시
- 트래픽 방향: 인그레스 또는 이그레스
- 대상: 모든 인스턴스, 지정된 대상 태그 또는 서비스 계정
- 지정된 대상 태그 또는 서비스 계정의 경우 대상 필수 입력
- 방화벽 규칙 생성 후 적용할 리소스(예) VM)의 *네트워크 태그 부분에 입력 필요
*적용할 때는 방화벽 규칙 이름이 아닌 태그 이름을 사용한다는 것에 주의
- 소스 필터: *IP 범위 또는 소스 태그 지정
*참고로 모든 IPv4 소스에는 0.0.0.0/0을, 모든 IPv6 소스에 ::/0을 사용
- 프로토콜 및 포트: 프로토콜 및 포트 지정(TCP, UDP, SCTP 등)
3. GCP 방화벽 설정 시 주의사항
사내에서도 강조하는 부분이지만 방화벽 규칙을 설계할 때에는 최소 원칙으로 구현합니다. 예를 들어 위 설정에서는 0.0.0.0/0과 같이 모든 범위의 IP를 허용하는 것을 제한합니다. 이번 작업에서도 IP는 MySQL 서버의 IP 범위를 설정하고, 프로토콜 및 포트는 tcp:10050으로 제한하였습니다.
4. VPC 피어링
프로젝트와 프로젝트 간 통신이 필요한 경우 VPC 피어링을 사용할 수도 있습니다. VPC 피어링은 2개의 VPC 네트워크를 연결해 리소스가 서로 통신할 수 있게 합니다. 이때 VPC 네트워크는 각 네트워크의 관리자가 구성한 경로만 교환하며 방화벽 규칙 또는 정책을 교환하지는 않습니다.
마치며
이번 Zabbix 에이전트 설치를 계기로 GCP 네트워크에 대해 간단히 정리해 보았습니다. 네트워크와 관련된 문제 발생 시 사내 보안팀에 요청해 도움을 구할 수 있는데요, 이번 글을 통해 앞으로 비슷한 상황에서 조금 더 명확하게 문제를 설명할 수 있을 것 같습니다. 앞으로도 GCP에 대해 차근차근 알아가 보도록 하겠습니다. 도움이 되셨길 바라며 글 읽어주셔서 감사합니다☘️
참고자료
[1] Google Cloud VPC 네트워크
https://cloud.google.com/vpc/docs/vpc?hl=ko
VPC 네트워크 | Google Cloud
의견 보내기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. VPC 네트워크 Virtual Private Cloud(VPC) 네트워크는 Andromeda를 사용하여 Google의 프로덕션 네트워크 내
cloud.google.com
'Data Engineering' 카테고리의 다른 글
PostgreSQL 핫 백업을 해보자 (feat. 젠킨스) (0) | 2024.11.10 |
---|---|
[PROJECT] 나만의 작고 소중한 데이터 파이프라인 만들기🌱 | 책방 사장님의 큐레이션을 위한 대시보드 구축기 (1) | 2024.03.09 |