계층식 방화벽 정책 예시

이 페이지에서는 계층식 방화벽 정책 구현의 예시를 살펴봅니다. 여기서는 계층식 방화벽 정책에 설명된 개념에 익숙하다고 가정하였습니다.

예시 1: 모든 VM에 대한 프로버 액세스 허용

이 사용 사례에서는 조직의 모든 가상 머신(VM) 인스턴스를 특정 대상 포트(123)의 특정 IP 주소(10.100.0.1)에서 프로브를 사용하여 스캔하고 조사해야 합니다. 조직 보안 관리자는 네트워크 관리자나 다른 보안 관리자가 조직의 모든 VM 인스턴스에서 해당 포트를 차단할 수 없도록 합니다.

이 예시에서는 폴더 수준 방화벽 정책이 배포되지 않았다고 가정합니다.

다음 다이어그램은 이 사용 사례의 구성 설정을 설명합니다.

모든 VM에 대한 프로버 액세스 허용
모든 VM에 대한 프로버 액세스 허용

VM에 적용되는 유효 정책

이 예시에서 계층 구조에서 규칙을 평가한 후의 유효 VM 방화벽 정책은 다음과 같습니다.

인그레스 연결

  • 소스 IP가 10.100.0.1이고 대상 포트가 123인 인그레스 연결은 정책에 정의된 대로 허용됩니다. 조직 정책과 일치하면 프로브 연결이 허용되며 계층 구조에서 추가 규칙이 평가되지 않습니다.

  • 소스 IP가 10.100.0.1이 아니고 대상 포트가 123이 아닌 인그레스 연결의 경우 일치 항목이 없습니다. 따라서 VPC 방화벽 규칙의 기본 인그레스 규칙이 적용되어 연결을 거부합니다.

이그레스 연결

  • 계층 구조 정의 규칙에 일치하는 항목이 없습니다. 따라서 VPC 방화벽 규칙의 기본 이그레스 규칙이 적용되어 이그레스 연결을 허용합니다.

구성 방법

  1. 규칙을 포함할 방화벽 정책을 만듭니다.

    gcloud compute firewall-policies create \
         --organization=123456789012 \
         --short-name="example-firewall-policy" \
         --description="rules that apply to all VMs in the organization"
    
  2. 방화벽 정책에 규칙을 추가합니다.

    gcloud compute firewall-policies rules create 1000 \
        --action=allow \
        --description="allow-scan-probe" \
        --layer4-configs=tcp:123 \
        --firewall-policy=example-firewall-policy \
        --organization=123456789012 \
        --src-ip-ranges=10.100.0.1/32
  3. 방화벽 정책을 조직 노드와 연결합니다.

    gcloud compute firewall-policies associations create \
        --firewall-policy=example-firewall-policy \
        --organization=123456789012

예시 2: 특정 포트를 제외한 모든 외부 연결 거부

이 사용 사례에서 방화벽 정책은 대상 포트 80, 443, 22의 연결을 제외한 외부 인터넷 소스의 모든 연결을 차단합니다. 80, 443, 22 이외의 모든 포트의 인그레스 인터넷 연결은 VPC 네트워크 수준의 방화벽 규칙이 무엇이든 차단됩니다. 포트 80, 443 또는 22의 모든 연결의 경우 이 정책은 각 VPC 네트워크에서 해당 포트에 적용할 동작을 VPC 보안 관리자에게 위임합니다.

다음 다이어그램은 이 사용 사례의 구성 설정을 설명합니다.

특정 대상 포트를 제외한 모든 외부 연결 거부
특정 대상 포트를 제외한 모든 외부 연결 거부

VM에 적용되는 유효 정책

이 예시에서 계층 구조에서 규칙을 평가한 후의 유효 VM 방화벽 정책은 다음과 같습니다.

인그레스 연결

  • 10.0.0.0/8의 모든 인그레스 연결은 우선순위가 가장 높은 조직 수준 규칙 delegate-internal-traffic과 일치하며, VPC 네트워크 수준에서 구성된 방화벽 규칙에 따라 평가되는 조직 정책의 나머지 규칙을 우회합니다. VPC 방화벽 규칙에서 10.2.0.0/16의 연결이 허용되며 나머지 연결은 묵시적 인그레스 규칙(deny)에 따라 평가됩니다.

  • 대상 포트 22, 80, 443에서 소스 IP 범위가 10.0.0.0/8이 아닌 인그레스 연결은 다음 수준으로 위임됩니다. 이 수준에서는 포트 80443은 허용되지만 22는 허용되지 않습니다.

  • 다른 모든 연결은 차단됩니다.

이그레스 연결

  • 계층 구조 정의 규칙에 일치하는 항목이 없습니다. 따라서 VPC 방화벽 규칙의 기본 이그레스 규칙이 적용되어 이그레스 연결을 허용합니다.

구성 방법

  1. 규칙을 포함할 방화벽 정책을 만듭니다.

    gcloud compute firewall-policies create \
        --organization=123456789012 \
        --short-name="example-firewall-policy" \
        --description="rules that apply to all VMs in the organization"
    
  2. 내부 연결을 프로젝트 소유자에게 위임하는 규칙을 추가합니다.

    gcloud compute firewall-policies rules create 1000 \
        --action=goto_next \
        --description="delegate-internal-traffic" \
        --organization=123456789012 \
        --firewall-policy="example-firewall-policy" \
        --src-ip-ranges=10.0.0.0/8
    
  3. 포트 80/443/22에 대한 외부 연결 규칙을 프로젝트 소유자에게 위임하는 규칙을 추가합니다.

    gcloud compute firewall-policies rules create 2000 \
        --action=goto_next \
        --description="delegate-external-traffic-spec-ports" \
        --layer4-configs=tcp:80,tcp:443,tcp:22 \
        --organization=123456789012 \
        --firewall-policy="example-firewall-policy"
  4. 다른 모든 외부 연결을 거부하는 규칙을 추가합니다.

    gcloud compute firewall-policies rules create 3000 \
        --action=deny \
        --description="block-other-external-traffic-spec-ports" \
        --organization=123456789012 \
        --firewall-policy="example-firewall-policy" \
        --src-ip-ranges=0.0.0.0/0
    
  5. 방화벽 정책을 조직 노드와 연결합니다.

    gcloud compute firewall-policies associations create \
        --organization=123456789012 \
        --firewall-policy="example-firewall-policy"
  6. 프로젝트에서 지정된 서브넷의 내부 연결을 허용하는 방화벽 규칙을 추가합니다.

    gcloud compute firewall-rules create allow-internal-traffic \
        --action=allow \
        --priority=1000 \
        --source-ranges=10.2.0.0/16
    
  7. 프로젝트에서 외부 TCP 80/443 연결을 허용하는 방화벽 규칙을 추가합니다.

    gcloud compute firewall-rules create allow-external-traffic \
        --action=allow \
        --priority=2000 \
        --rules=tcp:80,tcp:443
    

예시 3: 특정 VPC 네트워크의 이그레스 연결을 제외한 이그레스 연결 거부

이 사용 사례에서 조직 보안 관리자는 VPC 네트워크 myvpc에서 시작된 연결을 제외하고 모든 VPC 네트워크에서 이그레스 연결을 허용하지 않습니다. 관리자는 공개 서버 203.0.113.1에 대한 이그레스를 여는 결정을 myvpc 보안 관리자에 위임합니다.

이 예시에서는 폴더 수준 방화벽 정책이 배포되지 않았다고 가정합니다. 다음 다이어그램은 이 사용 사례의 구성 설정을 설명합니다.

특정 네트워크의 이그레스 연결을 제외한 이그레스 연결 거부
특정 네트워크의 이그레스 연결을 제외한 이그레스 연결 거부

VM에 적용되는 유효 정책

이 예시에서 계층 구조에서 규칙을 평가한 후의 유효 VM 방화벽 정책은 다음과 같습니다.

인그레스 연결

  • 계층 구조 정의 규칙에 일치하는 항목이 없습니다. 따라서 VPC 방화벽 규칙의 기본 인그레스 규칙이 적용되고 인그레스 연결을 거부합니다.

이그레스 연결

  • 203.0.113.1로 지정된 모든 이그레스 연결이 허용되고 나머지 연결은 거부됩니다. 203.0.113.1로 향하는 모든 이그레스 연결은 delegate-egress-my-vpc 규칙과 일치하고 조직 정책의 나머지 규칙을 우회합니다.

  • 그런 다음 이그레스 연결은 myvpc에 구성된 방화벽 규칙에 따라 평가됩니다. 기본 규칙은 이그레스 연결을 허용합니다. 조직 수준 정책의 block-egress-traffic-sepc-ports 규칙은 나머지 연결을 거부합니다.

구성 방법

  1. 규칙을 포함할 방화벽 정책을 만듭니다.

    gcloud compute firewall-policies create \
        --organization=123456789012 \
        --short-name="example-firewall-policy" \
        --description="rules that apply to all VMs in the organization"
    
  2. 특정 이그레스 연결을 위임하는 규칙을 추가합니다.

    gcloud compute firewall-policies rules create 1000 \
        --action=goto_next \
        --description="delegate-egress-myvpc" \
        --dest-ip-ranges=203.0.113.1/32
        --direction=egress
        --organization=123456789012 \
        --short-name="example-firewall-policy" \
        --target-resources=projects/PROJECT_ID/networks/myvpc
    
  3. 다른 모든 이그레스 연결을 거부하는 규칙을 추가합니다.

    gcloud compute firewall-policies rules create 2000 \
        --action=deny \
        --description="block-egress-external-traffic-spec-ports" \
        --direction=egress \
        --dest-ip-ranges=0.0.0.0/0 \
        --organization=123456789012 \
        --short-name="example-firewall-policy"
  4. 방화벽 정책을 조직 노드와 연결합니다.

    gcloud compute firewall-policies associations create \
        --organization=123456789012 \
        --short-name="example-firewall-policy"

예시 4: 조직 전체 규칙 및 폴더별 규칙 구성

이 사용 사례에서 보안 관리자는 허용된 범위 203.0.113.0/24에서의 연결을 제외하고 조직의 VM에 대한 인그레스 연결을 허용하지 않습니다. 관리자는 203.0.113.0/24에서의 연결에 대한 추가 결정을 폴더 수준에서 보안 관리자에게 위임합니다.

다음과 같은 두 가지 폴더가 있습니다.

  • Folder1: 정책이 백엔드 VM에서 포트 80443에만 연결을 허용하고 나머지 포트를 차단합니다.
  • Folder2: Folder2의 VM이 IP 주소 203.0.113.1의 트래픽에 대해 모든 대상 포트를 차단할 수 없도록 정책이 적용됩니다. Folder2 보안 관리자가 VPC 보안 관리자에게 다른 결정을 위임하면 VPC 네트워크 관리자는 포트 80, 443, 22를 열고 나머지 포트를 거부하기로 결정합니다.

다음 다이어그램은 이 사용 사례의 구성 설정을 설명합니다.

조직 전체 규칙 및 폴더별 규칙
조직 전체 규칙 및 폴더별 규칙

VM에 적용되는 유효 정책

이 예시에서 계층 구조에서 규칙을 평가한 후의 유효 VM 방화벽 정책은 다음과 같습니다.

my-vpc에 속한 VM

  • 대상 포트 TCP 80443에서 203.0.113.0/24의 모든 인그레스 연결이 허용됩니다. 다른 모든 인그레스 연결은 거부됩니다.

  • 상위 수준 방화벽 정책 규칙에 일치 항목이 없으므로 모든 이그레스 연결은 적용되는 VPC 방화벽 규칙에 따라 허용됩니다.

vpc2에 속한 VM

  • 203.0.113.1의 모든 인그레스 연결이 허용됩니다. 203.0.113.1가 아닌 다른 203.0.113.0/24 소스의 인그레스 연결은 포트 80, 443, 22에서만 허용됩니다. 다른 모든 인그레스 연결은 거부됩니다.

  • 상위 수준 방화벽 정책 규칙에 일치 항목이 없으므로 모든 이그레스 연결은 적용되는 VPC 방화벽 규칙에 따라 허용됩니다.

구성 방법

  1. Org_A의 규칙을 포함하는 방화벽 정책을 만듭니다.

    gcloud compute firewall-policies create \
        --organization=100000000000 \
        --short-name="example-firewall-policy-org-a" \
        --description="rules that apply to all VMs in the organization"
    
  2. 203.0.113.0/24에서의 인그레스를 프로젝트 소유자에게 위임하는 규칙을 추가합니다.

    gcloud compute firewall-policies rules create 1000 \
        --action=goto_next \
        --description="delegate-ingress" \
        --organization=100000000000 \
        --short-name="example-firewall-policy-org-a" \
        --src-ip-ranges=203.0.113.0/24
    
  3. 다른 모든 외부 연결을 거부하는 규칙을 추가합니다.

    gcloud compute firewall-policies rules create 2000 \
        --action=deny
        --description="block-ingress-external-traffic"
        --organization=100000000000 \
        --short-name="example-firewall-policy-org-a" \
        --src-ip-ranges=0.0.0.0/0
    
  4. 방화벽 정책을 조직 노드와 연결합니다.

    gcloud compute firewall-policies associations create \
        --organization=100000000000 \
        --short-name="example-firewall-policy-org-a"
  5. Folder1의 규칙을 포함할 방화벽 정책을 만듭니다.

    gcloud compute firewall-policies create \
        --organization=100000000000 \
        --short-name="example-firewall-policy-folder1" \
        --description="rules that apply to all VMs under Folder1"
    
  6. 모든 HTTP(S) 인그레스를 허용하는 규칙을 추가합니다.

    gcloud compute firewall-policies rules create 1000 \
        --action=allow \
        --description="allow-http-s-ingress" \
        --layer4-configs=tcp:80,tcp:443 \
        --organization=100000000000 \
        --short-name="example-firewall-policy-folder1"
  7. 다른 모든 포트 또는 프로토콜에서 인그레스를 거부하는 규칙을 추가합니다.

    gcloud compute firewall-policies rules create 2000 \
        --action=deny \
        --description="block-ingress-external-traffic" \
        --organization=100000000000 \
        --short-name="example-firewall-policy-folder1" \
        --src-ip-ranges=0.0.0.0/0
  8. 방화벽 정책을 Folder1과 연결합니다.

    gcloud compute firewall-policies associations create \
        --organization=100000000000 \
        --short-name="example-firewall-policy-folder1" \
        --folder=200000000000
  9. Folder2의 규칙을 포함할 보안 정책을 만듭니다.

    gcloud compute firewall-policies create \
        --organization=100000000000 \
        --short-name="example-firewall-policy-folder2" \
        --description="rules that apply to all VMs under Folder2"
  10. 203.0.113.1에서의 인그레스를 허용하는 규칙을 추가합니다.

    gcloud compute firewall-policies rules create 1000 \
        --action=allow \
        --description="allow-vul-scan-ingress" \
        --organization=100000000000 \
        --short-name="example-firewall-policy-folder2" \
        --src-ip-ranges=203.0.113.1/32
  11. 방화벽 정책을 Folder2와 연결합니다.

    gcloud compute firewall-policies associations create \
        --organization=100000000000 \
        --short-name="example-firewall-policy-folder2" \
        --folder=300000000000
  12. HTTP(S) 연결 인그레스를 허용하는 방화벽 규칙을 추가합니다.

    gcloud compute firewall-rules create allow-internal-traffic \
        --action=allow \
        --rules=tcp:80,tcp:443,tcp:22
    

다음 단계