네트워크 에지 보안 정책 구성

네트워크 에지 보안 정책을 사용하면 Google 네트워크 에지에서 트래픽을 허용하거나 차단하는 규칙을 구성할 수 있습니다. 다음 프런트엔드 유형에 대해 네트워크 에지 보안 정책을 구성할 수 있습니다.

  • 외부 패스 스루 네트워크 부하 분산기
  • 프로토콜 전달
  • 공개 IP 주소가 있는 VM

네트워크 에지 보안 정책을 사용하면 리소스를 소비하지 않고도 Cloud Next Generation Firewall과 유사하게 소스 및 대상 IP 주소 범위를 기준으로 필터링할 수 있습니다. 또한 네트워크 에지 보안 정책은 바이트 오프셋 필터링을 지원하는 유일한 보안 정책 유형입니다.

네트워크 에지 보안 정책의 커스텀 규칙 구성

백엔드 및 에지 보안 정책과 마찬가지로 네트워크 에지 보안 정책의 커스텀 규칙을 구성할 수 있습니다. 다음 예시에서는 네트워크 에지 보안 정책을 만들고, 지정된 소스 IP 주소 범위의 트래픽만 허용하도록 커스텀 규칙을 구성하고, 백엔드 서비스에 정책을 연결합니다.

네트워크 에지 보안 정책은 바이트 오프셋 필터링과 같은 고유 필터를 포함하여 여러 Google Cloud Armor 필터를 지원합니다. 네트워크 에지 보안 정책이 지원하는 기능에 대한 자세한 내용은 보안 정책 개요를 참조하세요. 또한 미리보기 모드에서 네트워크 에지 보안 정책을 배포할 수 있습니다.

계속하기 전에 Google Cloud Armor Enterprise에 등록하고 고급 네트워크 DDoS 보호를 구성해야 합니다. Cloud Armor Enterprise 구독 및 고급 네트워크 DDoS 보호가 활성화되지 않으면 네트워크 에지 보안 정책의 커스텀 규칙을 사용할 수 없습니다.

커스텀 규칙을 구성하려면 다음 단계를 따르세요.

  1. REGION 리전에 POLICY_NAME이라는 새 네트워크 에지 보안 정책을 만듭니다. 고급 네트워크 DDoS 보호를 사용 설정할 때 사용한 것과 동일한 보안 정책을 사용하지 마세요.

    gcloud compute security-policies create POLICY_NAME \
       --type=CLOUD_ARMOR_NETWORK \
       --region=REGION
    
  2. 다른 규칙에서 명시적으로 허용하지 않는 트래픽을 차단하려면 정책의 기본 규칙allow에서 deny로 변경합니다.

    gcloud compute security-policies rules update 2147483647 \
       --security-policy=POLICY_NAME \
       --action=deny \
       --region=REGION
    
  3. 동일한 보안 정책에서 소스 IP 주소 범위 RANGE의 요청을 허용하는 규칙을 RULE_PRIORITY 우선순위에 추가합니다.

    gcloud compute security-policies rules create RULE_PRIORITY \
       --security-policy=POLICY_NAME \
       --network-src-ip-ranges=RANGE \
       --action=allow \
       --region=REGION
    
  4. 보안 정책을 백엔드 서비스 BACKEND_SERVICE_NAME에 연결합니다.

    gcloud compute backend-services update BACKEND_SERVICE_NAME \
       --security-policy=POLICY_NAME \
       --region=REGION
    

    또는 다음 명령어를 사용하여 단일 VM 인스턴스와 보안 정책을 연결할 수 있습니다.

    gcloud beta compute instances network-interfaces update VM_NAME \
       --security-policy=POLICY_NAME \
       --security-policy-region=REGION \
       --network-interface=NETWORK_INTERFACE \
       --zone=ZONE_NAME
    
  5. 선택사항: 다음 명령어를 사용하여 보안 정책이 연결되었는지 확인할 수 있습니다. 연결된 경우 출력의 securityPolicy 필드에 보안 정책 리소스 링크가 표시됩니다.

    gcloud compute instances describe VM_NAME --zone=ZONE_NAME
    

앞의 예시를 만든 후 security-policies rules update 명령어를 사용하여 네트워크 에지 보안 정책에 규칙을 계속 추가할 수 있습니다. 네트워크 에지 보안 정책에 지원되는 필드는 다음과 같습니다.

필드 플래그 설명
소스 IP 주소 --network-src-ip-ranges 표준 텍스트 형식의 소스 IPv4/6 주소 또는 CIDR 프리픽스입니다.
소스 포트 --network-src-ports TCP/UDP/SCTP의 소스 포트 번호입니다. 각 요소는 (16비트) 숫자(예: '80') 또는 범위(예: '0-1023')일 수 있습니다.
소스 리전 코드 --network-src-region-codes 2자리 국가 코드(ISO 3166-1 alpha-2).
소스 ASN --network-src-asns 소스 IP 주소의 BGP 자율 시스템 번호.
대상 IP 주소 범위 --network-dest-ip-ranges 표준 텍스트 형식의 대상 IPv4/6 주소 또는 CIDR 프리픽스입니다.
대상 포트 --network-dest-ports TCP/UDP/SCTP의 목적지 포트 번호입니다. 각 요소는 (16비트) 숫자(예: '80') 또는 범위(예: '0-1023')일 수 있습니다.
IP 주소 프로토콜 --network-ip-protocols IPv4 프로토콜/IPv6 다음 헤더 (확장 헤더 뒤) 각 요소는 8비트 숫자(예: '6') 또는 범위(예: '253-254') 또는 다음 프로토콜 이름 중 하나일 수 있습니다.
  • tcp
  • udp
  • icmp
  • esp
  • ah
  • ipip
  • sctp
바이트 오프셋 필터링 해당 사항 없음 다음 섹션을 참조하세요.

네트워크 에지 보안 정책에 --network-src-region-codes 플래그를 사용하면 포괄적인 미국 제재가 적용되는 다음 지역에 대해 리전 코드를 사용할 수 있습니다.

지역 할당된 코드
크리미아 XC
일명 도네츠크 인민공화국(DNR) 및
일명 루간스크 인민공화국(LNR)
XD

바이트 오프셋 필터링 구성

패스 스루 네트워크 부하 분산기, 프로토콜 전달 또는 공개 IP 주소가 포함된 VM을 사용할 경우 Google Cloud Armor가 인그레스 트래픽에 대해 심층 패킷 검사를 수행할 수 있습니다. 특정 TCP/UDP 바이트 오프셋 값과 일치하는 보안 정책 규칙을 구성할 수 있습니다. 규칙을 구성하면 구성된 값이 있을 때 또는 없을 때 규칙 작업을 적용할 수 있습니다.

다음 예시에서는 값이 있을 때 트래픽을 허용하고 다른 트래픽은 모두 거부합니다.

  1. 새 네트워크 에지 보안 정책을 만듭니다. 기존 네트워크 에지 보안 정책이 있는 경우 이 단계를 건너뛸 수 있습니다.

    gcloud compute security-policies create POLICY_NAME \
       --type=CLOUD_ARMOR_NETWORK \
       --region=REGION_NAME
    
  2. 다음 매개변수를 사용해 네트워크 에지 보안 정책을 업데이트하여 사용자 정의 필드를 추가합니다.

    • 기본: 값은 IPv4, IPv6, TCP 또는 UDP입니다.
    • 오프셋: 기본을 기준으로 하는 필드의 오프셋(바이트 단위)입니다.
    • 크기: 필드의 크기(바이트 단위)이며 최댓값은 4입니다.
    • 마스크: 필드에서 일치시킬 비트 마스크입니다.

    정책당 최대 8개의 사용자 정의 필드를 사용할 수 있습니다. 다음 예시에서는 사용자 정의 필드 2개를 만듭니다.

    gcloud compute security-policies add-user-defined-field POLICY_NAME \
       --user-defined-field-name=USER_DEFINED_FIELD_NAME_TCP \
       --base=TCP \
       --offset=OFFSET \
       --size=SIZE \
       --mask=MASK \
       --region=REGION_NAME
    
    gcloud compute security-policies add-user-defined-field POLICY_NAME \
       --user-defined-field-name=USER_DEFINED_FIELD_NAME_UDP \
       --base=UDP \
       --offset=OFFSET \
       --size=SIZE \
       --mask=MASK \
       --region=REGION_NAME
    
  3. 네트워크 에지 보안 정책에서 이전 예시에 사용한 것과 동일한 커스텀 필드 이름의 규칙을 추가합니다. VALUE1VALUE2를 허용하려는 트래픽과 일치하는 값으로 바꿉니다.

    gcloud compute security-policies rules create RULE_PRIORITY \
       --security-policy=POLICY_NAME \
       --network-user-defined-fields="USER_DEFINED_FIELD_NAME_TCP;VALUE1:VALUE2,USER_DEFINED_FIELD_NAME_UDP;VALUE1:VALUE2,USER_DEFINED_FIELD_NAME_UDP;VALUE1,VALUE2" \
       --action=allow \
       --region=REGION_NAME
    
  4. 네트워크 에지 보안 정책의 기본 규칙을 거부 규칙으로 설정합니다. 보안 정책의 기본 규칙이 이미 거부 규칙인 경우 이 단계를 건너뛸 수 있습니다.

    gcloud compute security-policies rules update 2147483647 \
       --security-policy=POLICY_NAME \
       --action=deny \
       --region=REGION_NAME
    
  5. 네트워크 에지 보안 정책을 외부 패스 스루 네트워크 부하 분산기의 백엔드 서비스에 연결합니다.

    gcloud compute backend-services update BACKEND_SERVICE_NAME \
       --security-policy=POLICY_NAME \
       --region=REGION_NAME
    

모니터링

Google Cloud Armor는 각 네트워크 에지 보안 정책 규칙에 대해 다음 측정항목을 Cloud Monitoring으로 내보냅니다.

  • packet_count
    • Blocked: allow 또는 deny
      규칙 작업의 결과를 나타내는 불리언 값입니다.
    • Count: 10,000개 패킷마다 한 번씩 증가하는 packet_count 값입니다. 예를 들어 packet_count 값이 5이면 최소 50,000개의 패킷이 규칙과 일치했음을 의미합니다.
  • preview_packet_count: packet_count와 동일하며 미리보기 모드의 규칙에 사용됩니다.

네트워크 에지 보안 정책의 측정항목을 보려면 먼저 Network Security API(networksecurity.googleapis.com)를 사용 설정해야 합니다. 이 권한은 Compute 보안 관리자 역할(roles/compute.securityAdmin)에 포함되어 있습니다. Network Security API를 사용 설정한 후 Google Cloud 콘솔의 Monitoring에서 측정항목을 볼 수 있습니다.

Monitoring으로 이동