방화벽 규칙 개요

Google Cloud Platform(GCP) 방화벽 규칙을 사용하면 지정한 구성에 따라 가상 머신(VM) 인스턴스와의 트래픽을 허용하거나 거부할 수 있습니다. 사용 설정한 GCP 방화벽 규칙은 인스턴스의 구성 및 운영 체제와 상관없이 인스턴스를 보호할 수 있도록 항상 실행됩니다. 아직 시작하지 않은 인스턴스도 마찬가지입니다.

모든 VPC 네트워크는 분산형 방화벽으로 작동합니다. 방화벽 규칙은 네트워크 수준에서 정의되지만 연결은 인스턴스별로 허용되거나 거부됩니다. GCP 방화벽 규칙은 인스턴스와 다른 네트워크 사이뿐만 아니라 동일한 네트워크 내의 개별 인스턴스 간에 존재하는 것으로 생각할 수 있습니다. 방화벽 규칙을 만들고 사용하는 방법은 방화벽 규칙 사용을 참조하세요.

GCP 방화벽 규칙

GCP 방화벽 규칙을 만들 때는 규칙이 수행할 작업을 정의하는 구성요소 집합을 지정합니다. 구성요소를 사용하면 트래픽의 프로토콜, 포트, 소스, 목적지를 기준으로 특정 트래픽 유형을 대상으로 지정할 수 있습니다. 자세한 내용은 방화벽 규칙 구성요소를 참조하세요.

GCP 방화벽 규칙은 Google Cloud Platform Console, gcloud 명령줄 도구, REST API를 통해 만들거나 수정합니다. 방화벽 규칙을 만들거나 수정할 때 규칙의 대상 구성요소를 사용하여 적용하려는 인스턴스를 지정할 수 있습니다.

GCP에는 생성할 방화벽 규칙은 물론, 수신 및 통신 트래픽에 영향을 주는 다른 규칙도 존재합니다.

  • GCP는 VPC 네트워크 내에서는 GRE 같은 특정 IP 프로토콜을 허용하지 않습니다. 자세한 내용은 항상 차단된 트래픽을 참조하세요.

  • GCP는 VM 인스턴스와 169.254.169.254에 있는 대응하는 메타데이터 서버 간의 연결을 항상 허용합니다. 자세한 내용은 항상 허용된 트래픽을 참조하세요.

  • 모든 네트워크에는 나가는 연결을 허용하고 들어오는 연결을 차단하는 두 가지 묵시적인 방화벽 규칙이 있습니다. 생성한 방화벽 규칙은 이러한 묵시적 규칙에 우선합니다.

  • default 네트워크에는 방화벽 규칙이 미리 입력되며, 이러한 규칙은 삭제하거나 수정할 수 있습니다.

사양

GCP 방화벽 규칙에는 다음과 같은 특징이 있습니다.

  • 방화벽 규칙은 IPv4 트래픽만 지원합니다. 인그레스 규칙 소스 또는 주소별 이그레스 규칙 대상을 지정할 때는 CIDR 표기법으로 IPv4 주소 또는 IPv4 블록만 사용할 수 있습니다.

  • 각 방화벽 규칙의 행동은 allow 또는 deny입니다. 규칙은 시행되는 중에만 트래픽에 적용됩니다. 문제 해결 등을 위해 규칙을 사용 중지할 수도 있습니다.

  • 각 방화벽 규칙은 수신(ingress)이나 송신(egress) 트래픽 중 하나에 적용됩니다. 두 트래픽 모두에 함께 적용되지는 않습니다. 자세한 내용은 트래픽 방향을 참조하세요.

  • 방화벽 규칙을 만들 때는 VPC 네트워크를 선택해야 합니다. 규칙을 인스턴스 수준에서 시행한다면, 규칙의 구성은 VPC 네트워크와 연결됩니다. 따라서 VPC 네트워크 피어링이나 Cloud VPN 터널로 연결되는 네트워크를 포함한, VPC 네트워크 간에는 방화벽 규칙을 공유할 수 없습니다.

  • GCP 방화벽 규칙은 상태 저장이 가능합니다. 소스와 대상 또는 대상과 대상 간에 연결이 허용되는 경우 두 방향 모두에서 이후의 모든 트래픽이 허용됩니다. 즉, 방화벽 규칙은 세션이 설정되면 양방향 통신을 허용합니다. 10분마다 하나 이상의 패킷이 전송되는 경우 연결은 활성 상태로 간주됩니다. 방화벽 규칙은 연결된 반환 트래픽을 거부하면서 한 방향으로 트래픽을 허용할 수 없습니다.

  • GCP 방화벽 규칙은 분리된 TCP 패킷을 재구성하지 않습니다. 따라서 TCP 프로토콜에 적용할 수 있는 방화벽 규칙은 첫 번째 조각에만 적용할 수 있습니다(TCP 헤더가 포함되어 있기 때문에). TCP 프로토콜에 적용할 수 있는 방화벽 규칙은 후속 TCP 조각에는 적용되지 않습니다.

  • 방화벽 규칙 테이블에서 추적된 최대 연결 수는 인스턴스의 머신 유형에서 지원하는 상태 저장 연결 수에 따라 다릅니다.

인스턴스 머신 유형 최대 상태 추적 수
공유 코어 머신 유형 130,000
1~8개의 vCPU가 있는 인스턴스 vCPU당 130,000개의 연결
9개 이상의 vCPU가 있는 인스턴스 총 1,040,000(130,000 × 8)개의 연결

묵시적인 규칙

모든 VPC 네트워크에는 두 가지 묵시적인 방화벽 규칙이 있습니다. 다음과 같은 규칙이 있지만 Cloud Console에는 표시되지 않습니다.

  • 묵시적 이그레스 허용 규칙: 작업이 allow, 대상이 0.0.0.0/0, 우선순위가 가장 낮은(65535) egress 규칙을 사용하면 모든 인스턴스가 GCP에서 차단하는 트래픽을 제외한 모든 대상에 트래픽을 전송할 수 있습니다. 아웃바운드 액세스는 우선순위가 더 높은 방화벽 규칙에 따라 제한될 수 있습니다. 아웃바운드 트래픽을 거부하는 다른 방화벽 규칙이 없고 인스턴스에 외부 IP 주소가 있거나 NAT 인스턴스를 사용하는 경우 인터넷 액세스가 허용됩니다. 자세한 내용은 인터넷 액세스 요구사항을 참조하세요.

  • 묵시적 인그레스 거부 규칙: 작업이 deny, 소스가 0.0.0.0/0, 우선순위가 가장 낮은(65535) ingress 규칙은 수신 트래픽을 차단하여 모든 인스턴스를 보호합니다. 수신 액세스는 우선순위가 더 높은 규칙에 의해 허용될 수 있습니다. default 네트워크에는 이 유형을 재정의하는 추가 규칙이 일부 포함되어 있어 특정 유형의 수신 트래픽을 허용합니다.

묵시적 규칙은 삭제할 수 없지만 우선순위는 가장 낮습니다. 만든 규칙의 우선순위가 더 높으면 묵시적 규칙을 재정의할 수 있습니다(우선순위 번호가 65535 미만). deny 규칙은 우선순위가 같은 allow 규칙에 우선하며, 따라서 우선순위가 65535인 인그레스 allow 규칙은 절대로 적용되지 않습니다.

default 네트워크에 미리 입력된 규칙

default 네트워크에는 인스턴스로 들어오는 트래픽을 허용하는 방화벽 규칙이 미리 입력됩니다. 이러한 규칙은 필요에 따라 삭제하거나 수정할 수 있습니다.

  • default-allow-internal
    네트워크 인스턴스 간에 모든 프로토콜 및 포트에 대한 수신 연결을 허용합니다. 이 규칙은 두 번째로 낮은 우선순위인 65534를 가지며 동일한 네트워크에 있는 다른 인스턴스에서 VM 인스턴스로 들어오는 연결을 효과적으로 허용합니다.
  • default-allow-ssh
    모든 소스의 TCP 포트 22에서 네트워크의 모든 인스턴스에 이르는 수신 연결을 허용합니다. 이 규칙의 우선순위는 65534입니다.
  • default-allow-rdp
    모든 소스의 TCP 포트 3389에서 네트워크의 모든 인스턴스에 이르는 수신 연결을 허용합니다. 이 규칙의 우선순위는 65534이며 Microsoft RDP(원격 데스크톱 프로토콜)를 실행하는 인스턴스에 연결할 수 있습니다.
  • default-allow-icmp
    모든 소스에서 네트워크의 모든 인스턴스에 이르는 수신 ICMP 트래픽을 허용합니다. 이 규칙의 우선순위는 65534이며 ping 같은 도구를 사용할 수 있게 합니다.

항상 차단된 트래픽

Google Cloud Platform은 다음 트래픽은 항상 차단합니다. 방화벽 규칙을 이용해 아래 표에서 설명하는 트래픽을 허용할 수는 없습니다.

항상 차단된 트래픽 적용 대상
GRE 트래픽 모든 소스, 모든 목적지(내부 IP 주소를 사용하는 인스턴스 포함)
TCP, UDP, ICMP, IPIP 이외의 프로토콜 다음 간 트래픽:
• 인스턴스 및 인터넷
• 외부 IP 주소로 주소가 지정되는 경우
• 외부 IP 주소가 있는 부하 분산기가 관련된 경우
TCP 포트 25에서 이그레스 트래픽(SMTP) 다음에서의 트래픽:
• 인터넷에 대한 인스턴스
• 외부 IP 주소로 처리되는 다른 인스턴스에 대한 인스턴스

항상 허용된 트래픽

Google에서는 로컬 메타데이터 서버를 169.254.169.254에 있는 각 인스턴스와 함께 실행합니다. 이 서버는 인스턴스 작동에 필수적이며, 따라서 어떤 방화벽 규칙을 구성하더라도 인스턴스는 이 서버에 액세스할 수 있습니다. 메타데이터 서버는 다음과 같은 기본 서비스를 인스턴스에 제공합니다.

방화벽 규칙 구성요소

각 방화벽 규칙은 다음 구성 요소로 구성됩니다.

  • 숫자 우선순위: 규칙이 적용될 것인지 여부를 결정하는 데 사용됩니다. 다른 구성요소가 트래픽과 일치하는 가장 높은 우선순위(가장 낮은 우선순위 번호) 규칙만 적용됩니다. 우선순위가 낮은 충돌 규칙은 무시됩니다.

  • 트래픽 방향: ingress 규칙은 지정된 소스에서 GCP 대상으로 들어오는 연결에 적용되며, egress 규칙은 대상에서 지정된 목적지로 이동하는 트래픽에 적용됩니다.

  • 일치 시 작업(allow 또는 deny): 규칙이 트래픽을 허용할지 차단할지를 결정합니다.

  • 대상: 규칙이 적용될 인스턴스(GKE 클러스터 및 App Engine Flex 인스턴스 포함)를 정의합니다.

  • ingress 규칙의 소스 또는 egress 규칙의 목적지

  • 프로토콜(예: TCP, UDP, ICMP) 및 포트

  • 방화벽 규칙 적용 상태: 방화벽 규칙을 삭제하지 않고도 사용 설정하거나 사용 중지할 수 있습니다.

구성요소 요약

수신(인바운드) 규칙
우선순위 작업 적용 대상(목적지 정의) 소스 프로토콜 및 포트
0부터 65535까지의 정수이며 기본값은 1000입니다.
allow 또는 deny. enabled(기본값) 또는 disabled. 대상 매개변수가 목적지를 지정합니다. 다음 중 하나일 수 있습니다.
• VPC 네트워크의
   모든 인스턴스
• 서비스 계정별
  인스턴스
네트워크 태그별 인스턴스
다음 중 하나입니다.
• IPv4 주소의 범위
  기본값은 모두(0.0.0.0/0)
• 서비스 계정별
  인스턴스
네트워크 태그별 인스턴스
프로토콜 또는 프로토콜과 포트를 지정합니다.
설정되지 않은 경우 규칙이 모든 프로토콜에 적용됩니다.
이그레스(아웃바운드) 규칙
우선순위 작업 적용 대상(소스 정의) 목적지 프로토콜 및 포트
0부터 65535까지의 정수이며 기본값은 1000입니다.
allow 또는 deny. enabled(기본값) 또는 disabled. 대상 매개변수가 소스를 지정합니다. 다음 중 하나일 수 있습니다.
• VPC 네트워크의
   모든 인스턴스
• 서비스 계정별
  인스턴스
네트워크 태그별 인스턴스
모든 네트워크 또는 IPv4 주소의 특정 범위이며 기본값은 모두(0.0.0.0/0)입니다. 프로토콜 또는 프로토콜과 포트를 지정합니다.
설정되지 않은 경우 규칙이 모든 프로토콜에 적용됩니다.

우선순위

방화벽 규칙 우선 순위는 0에서 65535 사이의 정수입니다. 낮은 정수는 높은 우선 순위를 나타냅니다. 규칙을 만들 때 우선 순위를 지정하지 않으면 우선 순위가 1000으로 지정됩니다.

방화벽 규칙의 상대적 우선 순위는 다른 규칙에 대해 평가할 때 적용 가능한지 여부를 결정합니다. 평가 논리는 다음과 같습니다.

  • 지정된 유형의 트래픽 대상에 적용할 수 있는 최우선 순위 규칙이 우선시됩니다. 대상 특이성은 중요하지 않습니다. 예를 들어, 모든 대상을 대상으로 하는 특정 포트 및 프로토콜에 대한 우선순위가 높은 ingress 규칙은 특정 대상을 대상으로 하는 동일한 포트 및 프로토콜에 대해 비슷하게 정의된 규칙을 재정의합니다.

  • 프로토콜 및 포트 정의가 보다 일반적인 경우에도 주어진 프로토콜 및 포트 정의에 적용할 수 있는 최상위 우선순위 규칙이 우선시됩니다. 예를 들어, 지정된 대상을 대상으로 하는 모든 프로토콜 및 포트에 대한 트래픽을 허용하는 우선순위가 높은 ingress 규칙은 동일한 대상의 TCP 22를 거부하는 우선순위가 낮은 ingress 규칙을 재정의합니다.

  • deny 작업이 있는 규칙은 두 규칙의 우선순위가 같은 경우에만 allow 작업으로 다른 작업을 재정의합니다. 상대적 우선순위를 사용하면 deny 규칙을 재정의하는 allow 규칙을 작성할 수 있으며 반대의 경우도 마찬가지입니다.

  • 동일한 우선순위와 작업을 갖고 있는 규칙은 동일한 결과를 도출합니다. 하지만 평가 과정에서 사용하는 규칙은 확정적이지 않습니다. 일반적으로는 방화벽 규칙 로깅을 사용 설정할 때가 아니라면, 어떤 규칙을 사용하는가는 중요하지 않습니다. 평가 중인 방화벽 규칙이 일관되고 명확한 순서로 로그에 표시되도록 하려면 고유한 우선순위를 할당하세요. 로깅에 관한 자세한 내용은 방화벽 규칙 로깅 개요를 참조하세요.

두 가지 방화벽 규칙이 있는 다음 예시를 고려합니다.

  • 소스 0.0.0.0/0(모든 위치)의 ingress 규칙은 deny 작업이 있고 우선순위가 1000인 모든 대상, 모든 프로토콜 및 모든 포트에 적용할 수 있습니다.

  • 소스 0.0.0.0/0(모든 위치)의 ingress 규칙은 webserver 태그가 있는 특정 대상에 적용할 수 있습니다(TCP 80 트래픽의 경우 allow 작업으로).

두 번째 규칙의 우선순위는 포트 80의 TCP 트래픽이 webserver 대상에 허용되는지 여부를 결정합니다.

  • 두 번째 규칙의 우선순위가 1000보다 숫자로 설정되면 우선순위가 낮아지므로, 모든 트래픽을 거부하는 첫 번째 규칙이 적용됩니다.

  • 두 번째 규칙의 우선순위를 1000으로 설정하면 두 규칙의 우선순위가 동일하므로 모든 트래픽을 거부하는 첫 번째 규칙이 적용됩니다.

  • 두 번째 규칙의 우선순위가 1000보다 작은 숫자로 설정되면 우선순위가 높아지므로 TCP 80에서 webserver 대상에 대한 트래픽을 허용합니다. 다른 규칙이 없으면 첫 번째 규칙은 webserver 대상에 대한 다른 유형의 트래픽을 거부하며, webserver 태그가 없는 인스턴스에 대해 TCP 80을 포함한 모든 트래픽을 거부합니다.

앞의 예는 우선순위를 사용하여 선택적 allow 규칙 및 전역 deny 규칙을 만들어 최소 권한의 보안 권장사항을 구현하는 방법을 보여줍니다.

트래픽 방향

방화벽 규칙의 방향은 ingress 또는 egress일 수 있습니다. 방향은 항상 대상의 관점에서 정의됩니다.

  • ingress 방향은 소스에서 대상으로 전송된 트래픽을 말합니다. 인그레스 규칙은 패킷의 목적지가 대상인 경우 새 세션의 패킷에 적용됩니다.

  • egress 방향은 대상에서 목적지로 전송된 트래픽을 말합니다. 이그레스 규칙은 패킷의 소스가 대상인 경우 새 세션의 패킷에 적용됩니다.

  • 방향을 지정하지 않으면 GCP가 ingress를 사용합니다.

동일한 네트워크에서 두 VM 간의 연결을 예로 생각해 보시기 바랍니다. VM1에서 VM2로의 트래픽은 다음 방화벽 규칙 중 하나를 사용하여 제어할 수 있습니다.

  • 대상이 VM2이고 소스가 VM1인 ingress 규칙입니다.

  • 대상이 VM1이고 목적지가 VM2인 egress 규칙입니다.

일치 시 작업

방화벽 규칙의 작업 구성요소는 규칙의 다른 구성 요소에 따라 트래픽을 허용할지 아니면 차단할지 여부를 결정합니다.

  • allow 작업은 지정된 다른 구성요소와 일치하는 연결을 허용합니다.

  • deny 작업은 지정된 다른 구성요소와 일치하는 연결을 차단합니다.

적용

상태를 사용 또는 사용 중지로 설정하여 방화벽 규칙의 적용 여부를 변경할 수 있습니다. 규칙을 사용하지 않도록 설정하면 문제 해결이나 인스턴스에 임시 액세스 권한을 부여할 때 유용합니다. 규칙을 삭제하고 다시 만드는 것보다 규칙을 사용 중지하고 테스트한 다음 다시 사용 설정하는 것이 훨씬 쉽습니다.

별도로 지정하지 않으면 모든 방화벽 규칙은 생성 당시에 사용 설정됩니다. 사용 중지된 상태에서 규칙을 생성할 수도 있습니다.

규칙을 업데이트하여 방화벽 규칙의 적용 상태를 사용에서 사용 중지로 변경하고 다시 적용할 수 있습니다.

다음과 같은 경우 방화벽 규칙을 사용하지 않도록 설정하는 것이 좋습니다.

  • 문제 해결: 방화벽 규칙이 트래픽을 차단하고 허용하는지 여부를 잘 모르는 경우 트래픽을 허용 또는 차단할지 여부를 결정하기 위해 일시적으로 사용 중지합니다. 이는 다른 규칙과 함께 한 규칙의 효과 문제를 해결하는 데 유용합니다.
  • 유지 보수: 방화벽 규칙을 사용 중지하면 더 간단하게 주기적인 유지 보수가 가능합니다. 대상(예: 대상 태그별 인스턴스)으로 들어오는 SSH를 차단하는 방화벽 규칙이 있고 해당 규칙이 일반적으로 사용으로 설정되어 있다고 가정합니다. 유지 관리를 수행해야 하는 경우 규칙을 사용 중지할 수 있습니다. 완료한 후 규칙을 다시 사용으로 설정합니다.

대상

인그레스(인바운드) 규칙에서는 대상 매개변수가 GKE 클러스터 및 App Engine Flex 인스턴스를 포함한 목적지 VM 인스턴스를 지정합니다. 이그레스(아웃바운드) 규칙에서는 대상이 소스 인스턴스를 지정합니다. 따라서 GCP 인스턴스를 지정할 때는 항상 대상 매개변수를 사용하지만, 대상이 트래픽의 목적지인지 아니면 트래픽의 소스인지는 규칙 방향에 따라 달라집니다.

다음 옵션 중 하나만 사용하여 대상을 지정합니다.

  • 네트워크의 모든 인스턴스: 방화벽 규칙이 네트워크의 모든 인스턴스에 적용됩니다.

  • 대상 태그별 인스턴스: 방화벽 규칙이 일치하는 네트워크 태그가 있는 인스턴스에만 적용됩니다.

  • 대상 서비스 계정별 인스턴스: 방화벽 규칙이 특정 서비스 계정을 사용하는 인스턴스에만 적용됩니다. 방화벽 규칙별로 적용할 수 있는 대상 서비스 계정 상한은 VPC 할당량 및 제한을 참조하세요.

대상 태그 및 대상 서비스 계정에 대한 자세한 내용은 서비스 계정별 및 네트워크 태그별 필터링을 참조하세요.

대상 및 IP 주소

인그레스 방화벽 규칙은 대상 지정 방법과 상관없이, 인스턴스의 VPC 네트워크 내 네트워크 인터페이스도착하는 모든 트래픽에 적용됩니다. 인그레스 방화벽 규칙은 목적지가 다음 IP 주소 중 하나와 일치하는 패킷에 적용됩니다.

  • 인스턴스의 VPC 네트워크 내 네트워크 인터페이스에 할당된 기본 내부 IP 주소

  • 인스턴스의 VPC 네트워크 내 네트워크 인터페이스에서 구성된 별칭 IP 범위

  • 인스턴스의 VPC 네트워크 내 네트워크 인터페이스와 연결된 외부 IP 주소

  • 인스턴스가 부하 분산기의 백엔드일 경우 GCP 부하 분산기

이그레스 방화벽 규칙은 대상 지정 방법과 상관없이, 인스턴스의 VPC 네트워크 내 네트워크 인터페이스에서 나가는 모든 트래픽에 적용됩니다. 이그레스 방화벽 규칙은 소스가 인스턴스의 VPC 네트워크 내 네트워크 인터페이스의 기본 내부 IP 주소 또는 구성된 별칭 IP 범위와 일치하는 패킷에만 적용됩니다.

소스 또는 목적지

생성하는 방화벽의 방향을 기준으로 소스와 목적지 모두가 아닌 둘 중 하나를 지정합니다.

  • 인그레스(인바운드) 규칙에서는 대상 매개변수가 트래픽의 목적지 인스턴스를 지정하며, 목적지 매개변수를 사용할 수 없습니다. 소스는 소스 매개변수를 사용하여 지정합니다.

  • 이그레스(아웃바운드) 규칙에서는 대상 매개변수가 트래픽의 소스 인스턴스를 지정하며, 소스 매개변수를 사용할 수 없습니다. 목적지는 목적지 매개변수를 사용하여 지정합니다.

소스

소스 매개변수는 인그레스 규칙에만 적용되며, 다음 중 정확히 하나여야 합니다.

  • 소스 IP 범위: IP 주소의 범위를 패킷의 소스로 지정할 수 있습니다. 범위는 VPC 네트워크 내부 및 외부의 주소를 포함할 수 있습니다. 소스 IP 범위는 GCP 내부 및 외부 소스를 정의하는 데 사용할 수 있습니다.

  • 소스 태그: 패킷의 소스를 동일한 VPC 네트워크 내 다른 VM의 네트워크 인터페이스 기본 내부 IP 주소로 정의하고 네트워크 태그를 일치시켜 해당 소스 인스턴스를 식별할 수 있습니다. 소스 태그는 VPC 네트워크의 다른 관련 인스턴스에서 전송한 트래픽에만 적용됩니다. 소스 태그는 외부 IP 주소가 인스턴스에 속해 있더라도, 소스가 외부 IP 주소인 패킷은 제어하지 못합니다. 방화벽 규칙별로 적용할 수 있는 소스 태그 상한은 VPC 할당량 및 제한을 참조하세요.

  • 소스 서비스 계정: 패킷의 소스를 동일한 VPC 네트워크 내 다른 VM의 네트워크 인터페이스 기본 내부 IP 주소로 정의하고, 사용하는 서비스 계정별로 소스 인스턴스를 식별할 수 있습니다. 소스 서비스 계정은 VPC 네트워크의 다른 관련 인스턴스에서 전송한 트래픽에만 적용됩니다. 소스 서비스 계정은 외부 IP 주소가 인스턴스에 속해 있더라도, 소스가 외부 IP 주소인 패킷은 제어하지 못합니다. 방화벽 규칙별로 적용할 수 있는 소스 서비스 계정 상한은 VPC 할당량 및 제한을 참조하세요.

  • 소스 IP 범위소스 태그의 조합을 사용할 수 있습니다.

  • 소스 IP 범위소스 서비스 계정의 조합을 사용할 수 있습니다.

  • 소스 IP 범위, 소스 태그, 소스 서비스 계정을 모두 생략하면 GCP가 소스를 임의의 IP 주소(0.0.0.0/0)로 정의합니다.

목적지

목적지 매개변수는 이그레스 규칙에만 적용되며, IP 주소 범위만 허용합니다. 범위는 VPC 네트워크 내부 및 외부의 주소를 포함할 수 있습니다.

목적지 범위를 지정하지 않으면 GCP가 목적지를 모든 IP 주소(0.0.0.0/0)로 정의합니다.

프로토콜 및 포트

프로토콜을 지정하거나 프로토콜 및 포트를 함께 지정하여 방화벽 규칙의 범위를 좁힐 수 있습니다. 프로토콜만 지정할 수도 있고 프로토콜과 포트의 조합을 지정할 수도 있습니다. 프로토콜과 포트를 모두 생략하면 방화벽 규칙이 전체 프로토콜과 포트의 모든 트래픽에 적용됩니다.

구체적인 방화벽 규칙을 만들려면 먼저 프로토콜을 지정해야 합니다. 프로토콜이 포트를 지원한다면 포트 번호나 포트 범위를 지정해도 됩니다. 하지만 포트를 지원하지 않는 프로토콜도 있습니다. 예를 들어 TCP와 UDP용 포트는 있지만 ICMP용은 없습니다(ICMP에는 다양한 ICMP 유형이 있지만 이러한 유형은 포트가 아닙니다).

프로토콜 이름(tcp, udp, icmp, esp, ah, sctp, ipip)이나 10진수 IP 프로토콜 번호를 사용하여 프로토콜을 지정할 수 있습니다.

GCP 방화벽 규칙은 포트 정보를 사용하여 소스 포트 대신 패킷의 목적지 포트를 참조합니다.

  • 인그레스(인바운드) 방화벽 규칙에서 목적지 포트는 규칙의 대상 매개변수로 식별한 시스템에 있는 포트입니다. (인그레스 규칙에서는 대상 매개변수가 트래픽의 목적지 VM을 지정합니다.)

  • 이그레스(아웃바운드) 방화벽 규칙에서 목적지 포트는 규칙의 목적지 매개변수로 식별한 시스템에 있는 포트를 말합니다.

다음은 GCP 방화벽 규칙에서 사용할 수 있는 프로토콜 및 포트 사양 조합을 요약한 표입니다.

사양 설명
프로토콜 및 포트 없음 프로토콜을 지정하지 않으면 방화벽 규칙은 모든 프로토콜과 관련 포트에 적용됩니다.
프로토콜 tcp 포트 정보 없이 프로토콜만 지정하면 방화벽 규칙은 해당 프로토콜과 프로토콜 관련 포트 전체에 적용됩니다.
프로토콜 및 단일 포트 tcp:80 프로토콜과 단일 포트를 지정하면 방화벽 규칙은 프로토콜의 해당 포트에만 적용됩니다.
프로토콜 및 포트 범위 tcp:20-22 프로토콜과 포트 범위를 지정하면 방화벽 규칙은 프로토콜의 해당 포트 범위에만 적용됩니다.
조합 icmp,tcp:80,tcp:443,udp:67-69 쉼표로 구분한 프로토콜 또는 프로토콜 및 포트 목록을 지정하면, 방화벽 규칙은 지정한 각 프로토콜과 포트에 적용됩니다. 자세한 내용은 방화벽 규칙 만들기를 참조하세요.

서비스 계정별 소스 및 대상 필터링

서비스 계정을 사용하여 실제로 더욱 구체적인 방화벽 규칙을 만들 수 있습니다.

  • 인그레스 및 이그레스 규칙 모두에 대해 서비스 계정을 사용하여 대상을 지정할 수 있습니다.

  • 인그레스 규칙의 경우 수신 패킷에 대한 소스를 VM이 특정 서비스 계정을 사용하는 네트워크 내 VM의 기본 내부 IP 주소로 지정할 수 있습니다.

서비스 계정에 의존하는 방화벽 규칙을 만들기 전에 서비스 계정을 만들어야 합니다.

서비스 계정을 사용하여 인스턴스를 식별하는 방화벽 규칙은 서비스 계정으로 생성되어 연결된 새 인스턴스에 적용되며, 서비스 계정을 변경했다면 기존 인스턴스에도 적용됩니다. 인스턴스와 관련된 서비스 계정을 변경하려면 인스턴스를 중지했다가 다시 시작해야 합니다. 서비스 계정을 개별 인스턴스 및 관리형 인스턴스 그룹에서 사용하는 인스턴스 템플릿과 연결할 수 있습니다.

서비스 계정별 및 네트워크 태그별 필터링

이 섹션에서는 대상 또는 소스(인그레스 규칙의 경우)를 정의하는 데 서비스 계정이나 네트워크 태그를 사용해야 하는지 여부를 결정할 때 고려해야 할 주요 사항을 강조 표시합니다.

VM에 적용되는 방화벽 규칙을 엄격하게 제어해야 하는 경우 대상 태그 및 소스 태그 대신 대상 서비스 계정 및 소스 서비스 계정을 사용합니다.

  • 네트워크 태그는 임의의 속성입니다. 하나 이상의 네트워크 태그를 수정 권한이 있는 IAM 구성원별 인스턴스와 연결할 수 있습니다. 프로젝트에 대한 Compute Engine 인스턴스 관리자 역할이 있는 IAM 구성원에게 이 권한이 있습니다. 인스턴스를 편집할 수 있는 IAM 구성원은 해당 네트워크 태그를 변경할 수 있으며, 이로 인해 해당 인스턴스에 해당하는 방화벽 규칙 세트가 변경될 수 있습니다.

  • 서비스 계정은 인스턴스와 관련된 ID를 나타냅니다. 하나의 서비스 계정만 인스턴스와 연결할 수 있습니다. 다른 IAM 구성원에 대한 서비스 계정 사용자 역할의 권한을 제어하여 서비스 계정에 대한 액세스를 제어할 수 있습니다. IAM 구성원이 서비스 계정을 사용하여 인스턴스를 시작하려면 해당 구성원에게 최소 해당 서비스 계정에 대한 서비스 계정 사용자 역할과 인스턴스를 만들 수 있는 적합한 권한이 필요합니다(예: 프로젝트에 대한 Compute Engine 인스턴스 관리자 역할 보유).

어떠한 방화벽 규칙에서도 서비스 계정과 네트워크 태그를 조합하여 사용할 수 없습니다.

  • 어떠한 방화벽 규칙에서도(인그레스 또는 이그레스) 대상 서비스 계정과 대상 태그를 함께 사용할 수 없습니다.

  • 다음은 대상 태그 또는 대상 서비스 계정별로 대상을 지정할 경우 인그레스 방화벽 규칙에 대해 잘못된 소스입니다.

대상 잘못된 소스
대상 태그 소스 서비스 계정
소스 IP 범위 및 소스 서비스 계정의 조합
대상 서비스 계정 소스 태그
소스 IP 범위 및 소스 태그의 조합

서비스 계정 및 네트워크 태그에 대한 운영 고려사항은 다음과 같습니다.

  • 인스턴스의 서비스 계정을 변경하려면 인스턴스를 중지했다가 다시 시작해야 합니다. 인스턴스 실행 중 태그를 추가하거나 삭제할 수 있습니다.

  • 방화벽 규칙에 지정할 수 있는 대상 서비스 계정, 소스 서비스 계정, 대상 네트워크 태그, 소스 네트워크 태그에는 상한이 존재합니다. 자세한 내용은 VPC 리소스 할당량을 참조하세요.

  • 네트워크 태그로 인스턴스를 식별한다면 방화벽 규칙이 인스턴스의 기본 내부 IP 주소에 적용됩니다.

활용 사례

다음 사용 사례에서는 방화벽 규칙의 작동 방식을 보여줍니다. 이 예제에서는 모든 방화벽 규칙을 사용할 수 있습니다.

인그레스 사례

인그레스 방화벽 규칙은 소스에서 VPC 네트워크의 대상 인스턴스로 들어가는 연결을 제어합니다. 인그레스 규칙의 소스는 다음 중 하나로 정의할 수 있습니다.

  • IPv4 주소의 범위, 기본값은 모두(0.0.0.0/0)
  • 서비스 계정별로 식별된 VPC 네트워크의 다른 인스턴스
  • 네트워크 태그별로 식별된 VPC 네트워크의 다른 인스턴스

기본 소스는 아무 IP 주소(0.0.0.0/0)입니다. 인터넷 상의 다른 소스를 포함한, VPC 네트워크 외부에 있는 소스의 들어오는 연결을 제어하려면 CIDR 형식의 IPv4 주소 범위를 사용하세요.

allow 작업이 있는 인그레스 규칙은 규칙의 다른 구성요소를 기반으로 수신 트래픽을 허용합니다. 규칙의 소스와 대상을 지정하는 것 외에도 특정 프로토콜과 포트에 적용되도록 규칙을 제한할 수 있습니다. 마찬가지로 deny 작업이 있는 인그레스 규칙을 사용하여 방화벽 규칙 구성 요소를 기반으로 수신 트래픽을 차단함으로써 인스턴스를 보호할 수 있습니다.

인그레스 예제

다음 다이어그램은 방화벽 규칙으로 제어할 수 있는 인그레스 연결의 몇 가지 예를 보여줍니다. 예에서는 규칙 할당에서 target 매개변수를 사용하여 특정 인스턴스에 규칙을 적용합니다.

인그레스 방화벽 규칙 예제(확대하려면 클릭)
인그레스 방화벽 규칙 예제(확대하려면 클릭)
  • 우선순위가 1000인 인그레스 규칙은 VM 1에 적용할 수 있습니다. 이 규칙은 모든 소스(0.0.0.0/0)에서 들어오는 TCP 트래픽을 허용합니다. VPC 네트워크의 다른 인스턴스에서 들어오는 TCP 트래픽은 해당 인스턴스에 적용 가능한 이그레스 규칙에 따라 허용됩니다. VM 4에는 이러한 통신을 차단하는 이그레스 규칙이 없으므로 VM 4는 TCP를 통해 VM 1과 통신할 수 있습니다. 묵시적 이그레스 허용 규칙만 적용할 수 있습니다. VM 1에는 외부 IP가 있으므로 이 규칙은 인터넷의 외부 호스트에서 들어오는 TCP 트래픽도 허용합니다.

  • VM 2에는 지정된 인그레스 방화벽 규칙이 없으므로 묵시적 인그레스 거부 규칙은 들어오는 모든 트래픽을 차단합니다. 다른 인스턴스의 이그레스 규칙과 상관없이 네트워크의 다른 인스턴스에서 오는 연결은 차단됩니다. VM 2에는 외부 IP가 있기 때문에 인터넷의 외부 호스트에서 외부 IP로 이어지는 경로가 있지만, 이 묵시적 거부 규칙은 외부 수신 트래픽도 차단합니다.

  • 우선순위가 1000인 인그레스 규칙은 VM 3에 적용할 수 있습니다. 이 규칙은 VM 4 같은 네트워크 태그client가 있는 네트워크의 인스턴스에서 들어오는 TCP 트래픽을 허용합니다. VM 4에는 이러한 통신을 차단하는 이그레스 규칙이 없으므로 VM 4에서 VM 3으로 이동하는 TCP 트래픽이 허용됩니다. 묵시적 이그레스 허용 규칙만 적용할 수 있습니다. VM 3에는 외부 IP가 없기 때문에 인터넷의 외부 호스트에서 외부 IP로 이어지는 경로가 없습니다.

이그레스 사례

이그레스 방화벽 규칙은 VPC 네트워크의 대상 인스턴스에서 나가는 연결을 제어합니다. allow 작업이 있는 이그레스 규칙은 규칙의 다른 구성요소를 기반으로 인스턴스에서 트래픽을 허용합니다. 예를 들어 지정한 프로토콜 및 포트에서 특정 목적지(예: IPv4 주소 범위)로 가는 아웃바운드 트래픽을 허용할 수 있습니다. 마찬가지로 deny 작업이 있는 이그레스 규칙은 규칙의 다른 구성 요소를 기반으로 트래픽을 차단합니다.

모든 egress 규칙에는 목적지가 필요합니다. 기본 대상은 모든 IP 주소(0.0.0.0/0)이지만 CIDR 형식의 IPv4 주소 범위를 사용하여 보다 구체적인 대상을 만들 수 있습니다. IPv4 주소 범위를 지정할 때 네트워크의 인스턴스 및 인터넷에 있는 대상을 포함하여 네트워크 외부 대상에 대한 트래픽을 제어할 수 있습니다.

이그레스 예제

다음 다이어그램은 방화벽 규칙으로 제어할 수 있는 이그레스 연결의 몇 가지 예를 보여줍니다. 예에서는 규칙 할당에서 target 매개변수를 사용하여 특정 인스턴스에 규칙을 적용합니다.

이그레스 방화벽 규칙 예제(확대하려면 클릭)
이그레스 방화벽 규칙 예제(확대하려면 클릭)
  • VM 1에는 지정된 이그레스 방화벽 규칙이 없으므로 묵시적 이그레스 허용 규칙을 사용하면 모든 목적지로 트래픽을 보낼 수 있습니다. VPC 네트워크의 다른 인스턴스에 대한 연결은 해당 인스턴스에 적용 가능한 인그레스 규칙에 따라 허용됩니다. VM 4는 임의의 IP 주소 범위에서 들어오는 트래픽을 허용하는 인그레스 규칙을 가지고 있으므로 VM 1VM 4로 트래픽을 보낼 수 있습니다. VM 1에는 외부 IP 주소가 있으므로 인터넷의 외부 호스트로 트래픽을 보낼 수 있습니다. 방화벽 규칙이 상태 저장 방식이므로 VM 1에서 보낸 트래픽에 대한 수신 응답이 허용됩니다.

  • 우선순위가 1000인 이그레스 규칙은 VM 2에 적용할 수 있습니다. 이 규칙은 모든 목적지(0.0.0.0/0)로 나가는 모든 트래픽을 거부합니다. VPC의 다른 인스턴스로 나가는 트래픽은 다른 인스턴스에 적용된 인그레스 규칙에 관계없이 차단됩니다. VM 2에 외부 IP가 있더라도 이 방화벽 규칙은 인터넷의 외부 호스트로 나가는 트래픽을 차단합니다.

  • 우선순위가 1000인 이그레스 규칙은 VM 3에 적용할 수 있습니다. 이 규칙은 192.168.1.0/24 IP 범위의 모든 목적지로 나가는 TCP 트래픽을 차단합니다. VM 4의 인그레스 규칙이 들어오는 모든 트래픽을 허용하더라도 VM 3은 TCP 트래픽을 VM 4로 보낼 수 없습니다. 그러나 이그레스 규칙이 TCP 프로토콜에만 적용되기 때문에 VM 3VM 4로 UDP 트래픽을 보낼 수 있습니다. 또한 VM 3192.168.1.0/24 IP 범위를 벗어나는 VPC 네트워크의 다른 인스턴스로 트래픽을 전송할 수 있습니다. 단, 다른 인스턴스에 이러한 트래픽을 허용하는 인그레스 규칙이 있어야 합니다. 외부 IP 주소가 없기 때문에 VPC 네트워크 외부로 트래픽을 전송할 경로가 없습니다.

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...