VPC 방화벽 규칙 로깅 예

Virtual Private Cloud (VPC) 방화벽 규칙은 트래픽에 적용될 때 로그 항목을 생성합니다. 패킷 흐름은 여러 로그 항목을 생성할 수 있지만 VPC 방화벽 규칙은 가상 머신 (VM) 인스턴스의 연결당 최대 하나의 로그 항목을 생성합니다. 다음 예에서는 다양한 시나리오에서 VPC 방화벽 규칙 로깅이 작동하는 방식을 보여줍니다.

이그레스 거부 예시

이 예에서는 동일한 VPC 네트워크에 있는 두 VM 인스턴스 간의 트래픽을 차단하는 이그레스 거부 VPC 방화벽 규칙의 로깅을 보여줍니다.

이 예시에서는 example-proj 프로젝트의 example-net VPC 네트워크에 있는 VM 인스턴스 간에 트래픽이 흐릅니다.

  • 두 개의 VM 인스턴스는 다음과 같습니다.

    • west-subnet(us-west1 리전)에서 IP 주소가 10.10.0.99us-west1-a 영역의 VM1
    • east-subnet(us-east1 리전)에서 IP 주소가 10.20.0.99us-east1-b 영역의 VM2
  • 규칙 A: 이그레스 거부 방화벽 규칙은 네트워크의 모든 인스턴스 대상인 10.20.0.99 (VM2) 대상을 포함하며 TCP 포트 80에 적용됩니다. 이 규칙에 로깅이 사용 설정됩니다.

  • 규칙 B: 인그레스 허용 방화벽 규칙은 네트워크의 모든 인스턴스 대상인 10.10.0.99 (VM1) 소스를 포함하며 TCP 포트 80에 적용됩니다. 이 규칙에도 로깅이 사용 설정됩니다.

VPC 방화벽 규칙을 만들려면 다음 gcloud 명령어를 사용하세요.

  • 규칙 A: TCP 포트 80에 대한 이그레스 거부 규칙이며 모든 인스턴스, 10.20.0.99 대상에 적용 가능합니다.

    gcloud compute firewall-rules create rule-a \
        --network example-net \
        --action deny \
        --direction EGRESS \
        --rules tcp:80 \
        --destination-ranges 10.20.0.99/32 \
        --priority 10 \
        --enable-logging
    
  • 규칙 B: TCP 포트 80에 대한 인그레스 허용 규칙이며 모든 인스턴스, 10.10.0.99 소스에 적용 가능합니다.

    gcloud compute firewall-rules create rule-b \
        --network example-net \
        --action allow \
        --direction INGRESS \
        --rules tcp:80 \
        --source-ranges 10.10.0.99/32 \
        --priority 10 \
        --enable-logging
    
이그레스 거부 규칙은 VM1에서 VM2로의 연결을 차단합니다.
이그레스 거부 규칙이 VM1에서 VM2로의 연결을 차단합니다 (확대하려면 클릭).

VM1이 TCP 포트 80에서 VM2로 연결을 시도하는 시나리오에서는 다음이 발생합니다.

  • VM1이 10.20.0.99 (VM2)에 연결을 시도하는 동안 VM1의 관점에서 규칙 A의 로그 항목이 생성됩니다.
  • 규칙 A가 트래픽을 차단하여 규칙 B는 고려되지 않으므로 VM2의 관점에서 규칙 B의 로그 항목은 없습니다.

VM1은 다음 VPC 방화벽 규칙 로그 레코드를 보고합니다.

필드
connection src_ip=10.10.0.99
src_port=[EPHEMERAL_PORT]
dest_ip=10.20.0.99
dest_port=80
protocol=6
disposition 거부됨
rule_details reference = "network:example-net/firewall:rule-a"
priority = 10
action = DENY
destination_range = 10.20.0.99/32
ip_port_info = tcp:80
direction = egress
instance project_id="example-proj"
instance_name=VM1
region=us-west1
zone=us-west1-a
vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=west-subnet
remote_instance project_id="example-proj"
instance_name=VM2
region=us-east1
zone=us-east1-b
remote_vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=east-subnet
remote_location 정보가 없습니다. 이 필드는 대상이 VPC 네트워크 외부에 있는 경우에만 사용됩니다.

이그레스 허용, 인그레스 허용 예시

이 예에서는 동일한 VPC 네트워크에 있는 두 VM 인스턴스 간의 트래픽을 함께 허용하는 이그레스 허용 VPC 방화벽 규칙과 인그레스 허용 VPC 방화벽 규칙의 로깅을 보여줍니다.

이 예시에서는 example-proj 프로젝트의 example-net VPC 네트워크에 있는 VM 인스턴스 간에 트래픽이 흐릅니다.

  • 두 개의 VM 인스턴스는 다음과 같습니다.

    • west-subnet(us-west1 리전)에서 IP 주소가 10.10.0.99us-west1-a 영역의 VM1
    • east-subnet(us-east1 리전)에서 IP 주소가 10.20.0.99us-east1-b 영역의 VM2
  • 규칙 A: 이그레스 허용 방화벽 규칙은 네트워크의 모든 인스턴스 대상인 10.20.0.99 (VM2) 대상을 포함하며 TCP 포트 80에 적용됩니다. 이 규칙에 로깅이 사용 설정됩니다.

  • 규칙 B: 인그레스 허용 방화벽 규칙은 네트워크의 모든 인스턴스 대상인 10.10.0.99 (VM1) 소스를 포함하며 TCP 포트 80에 적용됩니다. 이 규칙에도 로깅이 사용 설정됩니다.

VPC 방화벽 규칙을 만들려면 다음 gcloud 명령어를 사용하세요.

  • 규칙 A: TCP 포트 80에 대한 이그레스 허용 규칙이며 모든 인스턴스, 10.20.0.99 (VM2) 대상에 적용 가능합니다.

    gcloud compute firewall-rules create rule-a \
        --network example-net \
        --action allow \
        --direction EGRESS \
        --rules tcp:80 \
        --destination-ranges 10.20.0.99/32 \
        --priority 10 \
        --enable-logging
    
  • 규칙 B: TCP 포트 80에 대한 인그레스 허용 규칙이며 모든 인스턴스, 10.10.0.99 (VM1) 소스에 적용 가능합니다.

    gcloud compute firewall-rules create rule-b \
        --network example-net \
        --action allow \
        --direction INGRESS \
        --rules tcp:80 \
        --source-ranges 10.10.0.99/32 \
        --priority 10 \
        --enable-logging
    
이그레스 허용 및 인그레스 허용 규칙은 VM1에서 VM2로의 연결을 허용합니다.
이그레스 허용 및 인그레스 허용 규칙을 통해 VM1에서 VM2로 연결할 수 있습니다 (확대하려면 클릭).

VM1이 TCP 포트 80에서 VM2로 연결을 시도하는 시나리오에서는 다음이 발생합니다.

  • VM1이 10.20.0.99 (VM2)에 연결되면 VM1의 관점에서 규칙 A의 로그 항목이 생성됩니다.
  • VM2가 10.10.0.99 (VM1)의 수신 연결을 허용하면 VM2의 관점에서 규칙 B의 로그 항목이 생성됩니다.

VM1은 다음 VPC 방화벽 규칙 로그 레코드를 보고합니다.

필드
connection src_ip=10.10.0.99
src_port=[EPHEMERAL_PORT]
dest_ip=10.20.0.99
dest_port=80
protocol=6
disposition 허용됨
rule_details reference = "network:example-net/firewall:rule-a"
priority = 10
action = ALLOW
destination_range = 10.20.0.99/32
ip_port_info = tcp:80
direction = egress
instance project_id="example-proj"
instance_name=VM1
region=us-west1
zone=us-west1-a
vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=west-subnet
remote_instance project_id="example-proj"
instance_name=VM2
region=us-east1
zone=us-east1-b
remote_vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=east-subnet
remote_location 정보가 없습니다. 이 필드는 대상이 VPC 네트워크 외부에 있는 경우에만 사용됩니다.

VM2는 다음 VPC 방화벽 규칙 로그 레코드를 보고합니다.

필드
connection src_ip=10.10.0.99
src_port=[EPHEMERAL_PORT]
dest_ip=10.20.0.99
dest_port=80
protocol=6
disposition 허용됨
rule_details reference = "network:example-net/firewall:rule-b"
priority = 10
action = ALLOW
source_range = 10.10.0.99/32
ip_port_info = tcp:80
direction = ingress
instance project_id="example-proj"
instance_name=VM2
region=us-east1
zone=us-east1-b
vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=east-subnet
remote_instance project_id="example-proj"
instance_name=VM1
region=us-west1
zone=us-west1-a
remote_vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=west-subnet
remote_location 정보가 없습니다. 이 필드는 대상이 VPC 네트워크 외부에 있는 경우에만 사용됩니다.

인터넷 인그레스 예시

이 예에서는 인터넷에서 VM 인스턴스로의 트래픽을 허용하는 인그레스 허용 방화벽 규칙의 로깅을 보여줍니다. 또한 상태 저장 방화벽 동작이 이그레스 거부 규칙에 미치는 영향도 보여줍니다.

이 예에서는 외부 리소스에서 example-net VPC 네트워크 내의 VM 인스턴스로 트래픽이 흐릅니다. 네트워크는 example-proj 프로젝트에 있습니다.

  • 인터넷 시스템의 IP 주소는 203.0.113.114입니다.
  • west-subnet(us-west1 리전)에서 IP 주소가 10.10.0.99us-west1-a 영역의 VM1
  • 규칙 C: 인그레스 허용 방화벽 규칙은 네트워크의 모든 인스턴스 대상인 모든 IP 주소 (0.0.0.0/0) 소스를 포함하며 TCP 포트 80에 적용됩니다. 이 규칙에 로깅이 사용 설정됩니다.
  • 규칙 D: 이그레스 거부 방화벽 규칙은 네트워크의 모든 인스턴스 대상인 IP 주소 (0.0.0.0/0) 대상을 포함하며 모든 프로토콜에 적용됩니다. 이 규칙에 로깅이 사용 설정됩니다.

VPC 방화벽 규칙을 만들려면 다음 gcloud 명령어를 사용하세요.

  • 규칙 C: TCP 포트 80에 대한 인그레스 허용 규칙이며 모든 인스턴스, 모든 소스에 적용 가능합니다.

    gcloud compute firewall-rules create rule-c \
        --network example-net \
        --action allow \
        --direction INGRESS \
        --rules tcp:80 \
        --source-ranges 0.0.0.0/0 \
        --priority 10 \
        --enable-logging
    
  • 규칙 D: 모든 프로토콜에 대한 송신 거부 규칙이며 모든 인스턴스, 모든 대상에 적용 가능합니다.

    gcloud compute firewall-rules create rule-d \
        --network example-net \
        --action deny \
        --direction EGRESS \
        --rules all \
        --destination-ranges 0.0.0.0/0 \
        --priority 10 \
        --enable-logging
    
인그레스 허용 규칙은 인터넷에서 VM1로의 연결을 허용합니다.
인터넷-VM 연결(확대하려면 클릭)

IP 주소가 203.0.113.114인 시스템이 TCP 포트 80에서 VM1로 연결을 시도하는 시나리오에서는 다음이 발생합니다.

  • VM1이 203.0.113.114의 트래픽을 허용하는 동안 규칙 C의 로그 항목이 생성됩니다.
  • Google Cloud 방화벽 규칙은 상태를 저장할 수 있으므로 규칙 D에도 불구하고 VM1은 수신 요청에 응답할 수 있습니다. 수신 요청이 허용되는 경우 설정된 응답은 이그레스 규칙으로 차단할 수 없습니다.
  • 규칙 D가 적용되지 않아 시스템에서 고려하지 않으므로 규칙 D의 로그 항목은 없습니다.

VM1은 다음 VPC 방화벽 규칙 로그 레코드를 보고합니다.

필드
connection src_ip=203.0.113.114
src_port=[EPHEMERAL_PORT]
dest_ip=10.10.0.99
dest_port=80
protocol=6
disposition 허용됨
rule_details reference = "network:my-vpc/firewall:rule-c"
priority = 10
action = ALLOW
source_range = 0.0.0.0/0
ip_port_info = tcp:80
direction = ingress
instance project_id="example-proj"
instance_name=VM1
region=us-west1
zone=us-west1-a
vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=west-subnet
remote_location continent
country
region
city

다음 단계