방화벽 규칙 개요

Google Cloud Platform(GCP) 방화벽 규칙을 사용하면 지정한 구성에 따라 가상 머신(VM) 인스턴스와의 트래픽을 허용하거나 거부할 수 있습니다. GCP 방화벽 규칙은 가상 네트워크 수준에서 적용되므로 인스턴스가 사용하는 운영 체제에 관계없이 효과적인 보호 및 트래픽 제어를 제공합니다.

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

GCP 방화벽 규칙

GCP 방화벽 규칙은 VPC 네트워크에만 적용됩니다. 각 규칙은 조건이 충족될 때 트래픽을 허용하거나 거부합니다. 조건을 사용하면 IP 주소, 서브넷 및 인스턴스를 포함하여 트래픽 유형(예: 포트 및 프로토콜)과 트래픽의 소스 또는 대상을 지정할 수 있습니다. 방화벽 규칙을 정의하는 구성 요소에 대한 설명은 방화벽 규칙 구성 요소를 참조하세요.

모든 네트워크에는 나가는 연결을 허용하고 들어오는 연결을 차단하는 두 가지 영구적이고 묵시적인 방화벽 규칙이 있습니다. 적용 가능성 및 정의한 규칙과 상호 작용하는 방법에 대한 자세한 내용은 기본 및 묵시적 방화벽 규칙 섹션을 참조하세요. 또한 default 네트워크에는 몇 가지 수정 가능한 추가 규칙이 미리 채워져 있습니다.

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

사양

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

  • 방화벽 규칙은 VPC 네트워크 수준에서 정의되며 정의된 네트워크에만 적용됩니다. 규칙 자체는 네트워크 간에 공유될 수 없습니다.

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

  • 방화벽 규칙에 의해 수행된 작업은 allow 또는 deny 중 하나입니다. 규칙은 단순히 작업으로 로깅할 수 없습니다. 자세한 내용은 방화벽 규칙의 일치 시 작업 구성요소를 참조하세요.

  • 각 방화벽 규칙은 수신(ingress) 또는 송신(egress) 트래픽 중 하나에 적용되도록 정의됩니다. 두 가지 모두에는 적용되지 않습니다. 자세한 내용은 방화벽 규칙의 트래픽 방향 구성요소를 참조하세요.

  • 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 미만).

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 주소로 처리되는 다른 인스턴스에 대한 인스턴스

방화벽 규칙 구성 요소

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

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

  • 트래픽 방향: 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 트래픽에 적용되는 규칙은 egress 트래픽에 적용되는 규칙과 충돌할 수 없습니다.

  • 지정된 유형의 트래픽 대상에 적용할 수 있는 최우선 순위 규칙이 우선시됩니다. 대상 특이성은 중요하지 않습니다. 예를 들어, 모든 대상을 대상으로 하는 특정 포트 및 프로토콜에 대한 우선순위가 높은 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을 지정합니다. 송신 규칙의 경우에는 대상이 소스 VM, 클러스터, 인스턴스를 지정합니다. 따라서 GCP VM을 지정하는 데 항상 대상 매개변수가 사용되지만 대상이 트래픽의 목적지인지 아니면 트래픽의 소스인지는 규칙 방향에 따라 달라집니다.

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

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

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

  • 대상 서비스 계정별 인스턴스: 방화벽 규칙이 특정 서비스 계정을 사용하는 VM에만 적용됩니다.

태그 또는 서비스 계정을 대상 매개변수로 사용하는 규칙을 만들면 이 규칙이 네트워크에서 모든 대상 VM의 기본 내부 IP 주소에 적용됩니다.

방화벽 규칙을 계층화하여 특정 예외를 만들 수 있습니다. 예를 들어, 인터넷(모든 IP, 소스 0.0.0.0/0)에서 VM으로 들어오는 액세스(ingress 방향)를 차단(deny 작업)하는 우선 순위가 1000인 방화벽 규칙이 있다고 가정합니다. 들어오는 인터넷 연결에 응답할 수 있어야 하는 특정 VM이 있습니다. 필요한 프로토콜 및 포트에 대한 수신 연결을 허용하는 두 번째 방화벽 규칙(예: 900)을 만들 수 있습니다. 이 두 번째 방화벽 규칙은 들어오는 인터넷 연결을 필요로 하는 VM에 대해서만 범위를 지정해야 합니다. 이 두 번째 규칙의 범위를 지정하려면 대상 태그 또는 대상 서비스 계정을 사용합니다. 각 범위 지정 메소드의 장점과 제한사항에 대한 자세한 내용은 서비스 계정별 및 네트워크 태그별 필터링을 참조하세요.

소스 또는 목적지

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

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

  • 송신(아웃바운드) 규칙의 경우 대상 매개변수가 트래픽의 소스 VM을 지정하며, 소스 매개변수를 사용할 수 없습니다. 목적지는 목적지 매개변수를 사용하여 지정합니다.

소스

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

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

  • 소스 태그: 패킷의 소스를 동일한 VPC 네트워크 내 다른 VM의 네트워크 인터페이스 기본 내부 IP 주소로 정의하고 네트워크 태그를 일치시켜 해당 소스 VM을 식별할 수 있습니다. 소스 태그는 네트워크 내 다른 GCP VM에만 적용됩니다.

  • 소스 서비스 계정: 패킷의 소스를 동일한 VPC 네트워크 내 다른 VM의 네트워크 인터페이스 기본 내부 IP 주소로 정의하고 사용하는 서비스 계정별로 소스 VM을 식별할 수 있습니다. 소스 서비스 계정은 네트워크 내 다른 GCP VM에만 적용됩니다.

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

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

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

목적지

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

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

프로토콜 및 포트

각 방화벽 규칙에 대한 구성요소에서 프로토콜과 포트를 지정하여 원하는 적용 가능성 범위를 줄일 수 있습니다. 프로토콜, 프로토콜과 하나 이상의 포트, 프로토콜과 포트 조합을 지정하거나 아무 것도 지정하지 않을 수 있습니다.

  • 프로토콜이나 포트가 지정되지 않으면 방화벽 규칙이 모든 트래픽(모든 프로토콜과 포트)에 적용됩니다.

  • 프로토콜 이름(tcp, udp, icmp, esp, ah, sctp, ipip) 또는 해당 10진수 프로토콜 번호를 사용하여 프로토콜을 지정할 수 있습니다. 포트 없이 프로토콜을 지정하면(예: tcp) 방화벽 규칙이 해당 프로토콜과 관련된 모든 포트에 적용됩니다.

  • 프로토콜이 포트를 지원하는 경우 관련 프로토콜로 포트 또는 포트 범위를 지정할 수 있습니다.

    • 개별 프로토콜과 포트를 지정하려면 프로토콜과 포트를 콜론으로 구분합니다(예: tcp:80).

    • 프로토콜과 인접한 포트 범위를 지정하려면 대시를 사용하여 범위를 정의합니다(예: tcp:20-22).

    • 프로토콜 및 연속되지 않은 포트 범위를 지정하려면 세미콜론(Cloud Console을 사용하여 규칙을 만드는 경우) 또는 쉼표(gcloud를 사용하는 경우)로 구분된 여러 프로토콜/포트 조합을 만듭니다. tcp:80;tcp:443(Console) 또는 tcp:80,tcp:443(gcloud)를 예로 들 수 있습니다.

  • 각 유형의 프로토콜 또는 인접하지 않은 포트 범위를 세미콜론(Cloud Console) 또는 콜론(gcloud)으로 구분하여 여러 프로토콜 및 포트 조합을 지정할 수 있습니다. icmp;tcp:80;tcp:443;udp:67-69(Console) 또는 icmp,tcp:80,tcp:443,udp:67-69(gcloud)를 예로 들 수 있습니다.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 하나의 방화벽 규칙에는 하나의 대상 서비스 계정만 지정할 수 있습니다. 단일 방화벽 규칙에서 2개 이상의 대상 태그를 지정할 수 있습니다.

  • 하나의 수신 방화벽 규칙에는 하나의 소스 서비스 계정만 지정할 수 있습니다. 단일 방화벽 규칙에서 2개 이상의 소스 태그를 지정할 수 있습니다.

  • 네트워크 태그로 인스턴스를 식별하는 경우 방화벽 규칙이 인스턴스의 기본 내부 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 네트워크 외부로 트래픽을 전송할 경로가 없습니다.

다음 단계

  • 방화벽 규칙을 만들고 사용하는 방법에 대한 안내는 방화벽 규칙 사용을 참조하세요.
이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

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