이 페이지에서는 계층식 및 네트워크 방화벽 정책 규칙에 로깅을 사용 설정하거나 중지하는 방법을 보여줍니다. 방화벽 정책 규칙 로깅에 대한 안내는 방화벽 정책 규칙 로깅 사용 설정 및 중지를 참고하세요. 방화벽 정책 규칙에 대해 생성된 로그를 보는 방법도 알아볼 수 있습니다. 방화벽 정책 규칙 로깅에 대한 자세한 내용은 방화벽 정책 규칙 로깅 개요를 참고하세요.
방화벽 정책 규칙에 로깅을 사용하면 방화벽 통계에서 방화벽 정책 규칙에 대한 통계와 권장사항을 볼 수 있습니다. 자세한 내용은 Network Intelligence Center 문서의 방화벽 통계를 참고하세요.
권한
방화벽 정책 규칙을 수정하거나 로그에 액세스하려는 Identity and Access Management (IAM) 주 구성원에게는 다음 역할 중 하나가 필요합니다.
| 작업 | 필요한 역할 |
|---|---|
| 방화벽 규칙 만들기, 삭제, 업데이트 | 프로젝트 소유자나 편집자 또는 보안 관리자 역할 (roles/compute.securityAdmin)
|
| 로그 보기 | 프로젝트 소유자, 편집자 또는 뷰어 또는 로그 뷰어 역할 (roles/logging.viewer)
로깅 IAM 역할 및 권한에 대한 자세한 내용은 사전 정의된 역할을 참고하세요. |
방화벽 정책 규칙 로깅 사용 설정 및 사용 중지
방화벽 정책 규칙을 만들 때 방화벽 정책 규칙 로깅을 사용 설정할 수 있습니다. 자세한 내용은 다음을 참조하세요.
로깅을 사용 설정할 때 메타데이터 필드를 포함할지 여부를 지정할 수 있습니다. 이러한 필드를 생략하면 스토리지 비용을 절약할 수 있습니다. 기존 방화벽 정책 규칙에 방화벽 정책 규칙 로깅을 사용 설정하거나 사용 중지하려면 다음 섹션을 참고하세요.
계층적 방화벽 정책에 대한 방화벽 정책 규칙 로깅 사용 설정
콘솔
Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.
프로젝트 선택기 메뉴에서 계층적 방화벽 정책을 만든 조직의 이름을 선택합니다.
이 조직에 있는 방화벽 정책 섹션에서 계층식 방화벽 정책의 이름을 클릭합니다.
로그 열에서 각 방화벽 정책 규칙에 대해 방화벽 정책 규칙 로깅이 사용 중지됨 또는 사용 설정됨인지 확인합니다.
방화벽 정책 규칙에 대한 로깅을 사용 설정하려면 규칙 우선순위를 클릭한 다음 수정을 클릭합니다.
로그 섹션에서 사용을 선택합니다.
저장을 클릭합니다.
gcloud
조직 방화벽 정책 규칙을 업데이트하려면 gcloud compute firewall-policies rules update 명령어를 사용합니다.
gcloud compute firewall-policies rules update PRIORITY \
--firewall-policy= FIREWALL_POLICY \
--enable-logging
다음을 바꿉니다.
PRIORITY: 업데이트할 방화벽 정책 규칙의 우선순위입니다.FIREWALL_POLICY: 규칙이 업데이트되는 방화벽 정책의 이름입니다.
자세한 내용은 SDK 참고 문서를 참고하세요.
Terraform
Terraform 리소스를 사용하여 로깅이 사용 설정된 방화벽 정책 규칙을 만들 수 있습니다.
resource "google_compute_firewall_policy_rule" "primary" {
firewall_policy = google_compute_firewall_policy.POLICY_ID
description = "Creates an ingress firewall policy rule with logging enabled"
priority = PRIORITY
enable_logging = true
action = "allow"
direction = "INGRESS"
disabled = false
match {
layer4_configs {
ip_protocol = "tcp"
ports = [8080]
}
layer4_configs {
ip_protocol = "udp"
ports = [22]
}
src_ip_ranges = ["SOURCE_IP_ADDRESS"]
}
}
Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.
API
기존 계층적 방화벽 정책 규칙에 대한 방화벽 정책 규칙 로깅을 사용 설정합니다.
POST https://compute.googleapis.com/compute/v1/locations/global/firewallPolicies/POLICY_ID/patchRule?priority=PRIORITY
{
"enableLogging": true,
}
다음을 바꿉니다.
POLICY_ID: 방화벽 정책 규칙이 있는 계층식 방화벽 정책의 ID입니다.PRIORITY: 방화벽 정책 규칙의 우선순위입니다.
자세한 내용은 firewallPolicies.patchRule 메서드를 참조하세요.
계층적 방화벽 정책의 방화벽 정책 규칙 로깅 사용 중지
콘솔
Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.
프로젝트 선택기 메뉴에서 계층적 방화벽 정책을 만든 조직의 이름을 선택합니다.
이 조직에 있는 방화벽 정책 섹션에서 계층식 방화벽 정책의 이름을 클릭합니다.
로그 열에서 각 방화벽 정책 규칙에 대해 방화벽 정책 규칙 로깅이 사용 중지됨 또는 사용 설정됨인지 확인합니다.
방화벽 정책 규칙의 로깅을 사용 중지하려면 규칙 우선순위를 클릭한 다음 수정을 클릭합니다.
로그 섹션에서 사용 안함을 선택합니다.
저장을 클릭합니다.
gcloud
조직 방화벽 정책 규칙을 업데이트하려면 gcloud compute firewall-policies rules update 명령어를 사용합니다.
gcloud compute firewall-policies rules update PRIORITY \
--firewall-policy= FIREWALL_POLICY \
--no-enable-logging
다음을 바꿉니다.
PRIORITY: 업데이트할 방화벽 정책 규칙의 우선순위입니다.FIREWALL_POLICY: 규칙이 업데이트되는 방화벽 정책의 이름입니다.
자세한 내용은 SDK 참고 문서를 참고하세요.
API
기존 계층식 방화벽 정책 규칙에 대한 방화벽 정책 규칙 로깅 사용 중지
POST https://compute.googleapis.com/compute/v1/locations/global/firewallPolicies/POLICY_ID/patchRule?priority=PRIORITY
{
"enableLogging": false,
}
다음을 바꿉니다.
POLICY_ID: 방화벽 정책 규칙이 있는 계층식 방화벽 정책의 ID입니다.PRIORITY: 방화벽 정책 규칙의 우선순위입니다.
자세한 내용은 firewallPolicies.patchRule 메서드를 참조하세요.
네트워크 방화벽 정책의 방화벽 정책 규칙 로깅 사용 설정
콘솔
Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.
프로젝트 선택기 메뉴에서 네트워크 방화벽 정책을 만든 프로젝트의 이름을 선택합니다.
네트워크 방화벽 정책 섹션에서 로깅을 사용 설정할 네트워크 방화벽 정책의 이름을 클릭합니다.
로그 열에서 각 방화벽 정책 규칙에 대해 방화벽 정책 규칙 로깅이 사용 중지됨 또는 사용 설정됨인지 확인합니다.
네트워크 방화벽 정책 규칙의 로깅을 사용 설정하려면 규칙 우선순위를 클릭한 다음 수정을 클릭합니다.
로그 섹션에서 사용을 선택합니다.
저장을 클릭합니다.
gcloud
네트워크 방화벽 정책 규칙을 업데이트하려면 gcloud compute network-firewall-policies rules update 명령어를 사용합니다.
gcloud compute network-firewall-policies rules update PRIORITY \
--firewall-policy= FIREWALL_POLICY \
--enable-logging
다음을 바꿉니다.
PRIORITY: 업데이트할 방화벽 정책 규칙의 우선순위입니다.FIREWALL_POLICY: 방화벽 정책 규칙이 있는 네트워크 방화벽 정책의 이름입니다.
자세한 내용은 SDK 참고 문서를 참고하세요.
Terraform
Terraform 리소스를 사용하여 로깅이 사용 설정된 방화벽 정책 규칙을 만들 수 있습니다.
resource "google_compute_firewall_policy_rule" "primary" {
firewall_policy = google_compute_firewall_policy.POLICY_ID
description = "Creates an ingress firewall policy rule with logging enabled"
priority = PRIORITY
enable_logging = true
action = "allow"
direction = "INGRESS"
disabled = false
match {
layer4_configs {
ip_protocol = "tcp"
ports = [8080]
}
layer4_configs {
ip_protocol = "udp"
ports = [22]
}
src_ip_ranges = ["SOURCE_IP_ADDRESS"]
}
}
Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.
API
기존 네트워크 방화벽 정책 규칙에 대한 방화벽 정책 규칙 로깅을 사용 설정합니다.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewallPolicies/POLICY_ID/patchRule?priority=PRIORITY
{
"enableLogging": true,
}
다음을 바꿉니다.
PROJECT_ID: 네트워크 정책이 있는 프로젝트의 ID입니다.POLICY_ID: 방화벽 정책 규칙이 있는 계층식 방화벽 정책의 ID입니다.PRIORITY: 방화벽 정책 규칙의 우선순위입니다.
자세한 내용은 networkFirewallPolicies.patchRule 메서드를 참조하세요.
네트워크 방화벽 정책의 방화벽 정책 규칙 로깅 사용 중지
콘솔
Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.
프로젝트 선택기 메뉴에서 네트워크 방화벽 정책을 만든 프로젝트의 이름을 선택합니다.
네트워크 방화벽 정책 섹션에서 로깅을 사용 설정할 네트워크 방화벽 정책의 이름을 클릭합니다.
로그 열에서 각 방화벽 정책 규칙에 대해 방화벽 정책 규칙 로깅이 사용 중지됨 또는 사용 설정됨인지 확인합니다.
네트워크 방화벽 정책 규칙의 로깅을 사용 중지하려면 규칙 우선순위를 클릭한 다음 수정을 클릭합니다.
로그 섹션에서 사용 안함을 선택합니다.
저장을 클릭합니다.
gcloud
네트워크 방화벽 정책 규칙을 업데이트하려면 gcloud compute network-firewall-policies rules update 명령어를 사용합니다.
gcloud compute network-firewall-policies rules update PRIORITY \
--firewall-policy= FIREWALL_POLICY \
--no-enable-logging
다음을 바꿉니다.
PRIORITY: 업데이트할 방화벽 정책 규칙의 우선순위입니다.FIREWALL_POLICY: 방화벽 정책 규칙이 있는 네트워크 방화벽 정책의 이름입니다.
자세한 내용은 SDK 참고 문서를 참고하세요.
API
기존 계층식 방화벽 정책 규칙에 대한 방화벽 정책 규칙 로깅 사용 중지
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewallPolicies/POLICY_ID/patchRule?priority=PRIORITY
{
"enableLogging": false,
}
다음을 바꿉니다.
POLICY_ID: 방화벽 정책 규칙이 있는 계층식 방화벽 정책의 ID입니다.PRIORITY: 방화벽 정책 규칙의 우선순위입니다.
자세한 내용은 networkFirewallPolicies.patchRule 메서드를 참조하세요.
로그 보기
방화벽 정책 규칙 로그는 VM 인스턴스 및 방화벽 규칙이 포함된 네트워크를 호스팅하는 프로젝트에 생성됩니다. 공유 VPC를 사용하면 서비스 프로젝트에 VM 인스턴스를 만들지만 이러한 인스턴스는 호스트 프로젝트에 있는 공유 VPC 네트워크를 사용합니다. 이러한 시나리오에서는 호스트 프로젝트에 방화벽 정책 규칙 로그가 저장됩니다.
방화벽 정책 규칙 로그를 보려면 Google Cloud 콘솔의 로그 탐색기 섹션을 사용하세요. 자세한 내용은 로그 보기 및 분석을 참고하세요.
다음 쿼리는 특정 방화벽 이벤트를 검색하는 방법을 보여줍니다.
모든 방화벽 로그 보기
방화벽 정책 규칙 로그를 보려면 다음 옵션 중 하나를 사용하세요.
옵션 1
Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.
모든 리소스를 클릭합니다.
리소스 선택 목록에서 서브네트워크를 클릭한 후 적용을 클릭합니다.
모든 로그 이름을 클릭한 후 목록에서 방화벽을 선택합니다.
적용을 클릭합니다.
옵션 2
Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.
다음을 쿼리 편집기 필드에 붙여넣습니다.
resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
PROJECT_ID를 프로젝트 ID로 바꿉니다.쿼리 편집기 필드가 표시되지 않으면 쿼리 표시 전환을 클릭합니다.
쿼리 실행을 클릭합니다.
특정 서브넷 로그 보기
특정 서브넷의 방화벽 정책 규칙 로그를 보려면 다음 옵션 중 하나를 사용하세요.
옵션 1
Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.
모든 리소스를 클릭합니다.
리소스 선택 목록에서 서브네트워크를 클릭합니다.
로그를 보려는 서브네트워크를 선택하고 적용을 클릭합니다.
모든 로그 이름을 클릭한 후 목록에서 방화벽을 선택합니다.
적용을 클릭합니다.
옵션 2
Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.
다음을 쿼리 편집기 필드에 붙여넣습니다.
resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall" resource.labels.subnetwork_name="SUBNET_NAME"
다음을 바꿉니다.
PROJECT_ID: 프로젝트의 IDSUBNET_NAME: 서브네트워크의 이름
쿼리 편집기 필드가 표시되지 않으면 쿼리 표시 전환을 클릭합니다.
쿼리 실행을 클릭합니다.
특정 VM에서 로그 보기
특정 VM의 방화벽 정책 규칙 로그를 보려면 다음 옵션 중 하나를 사용하세요.
옵션 1
Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.
모든 리소스를 클릭합니다.
리소스 선택 목록에서 VM 인스턴스를 클릭합니다.
로그를 보려는 인스턴스를 선택하고 적용을 클릭합니다.
모든 로그 이름을 클릭한 후 목록에서 방화벽을 선택합니다.
적용을 클릭합니다.
옵션 2
Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.
다음을 쿼리 편집기 필드에 붙여넣습니다.
resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall" jsonPayload.instance.vm_name="INSTANCE_ID"
다음을 바꿉니다.
PROJECT_ID: 프로젝트의 IDINSTANCE_ID: 로그를 보려는 VM의 ID
쿼리 편집기 필드가 표시되지 않으면 쿼리 표시 전환을 클릭합니다.
쿼리 실행을 클릭합니다.
특정 국가의 연결 로그 보기
특정 국가의 방화벽 정책 규칙 로그를 보려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.
다음을 쿼리 편집기 필드에 붙여넣습니다.
resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall" jsonPayload.remote_location.country=COUNTRY
다음을 바꿉니다.
PROJECT_ID: 프로젝트의 IDCOUNTRY: 로그를 보려는 국가의 ISO 3166-1alpha-3 코드
쿼리 편집기 필드가 표시되지 않으면 쿼리 표시 전환을 클릭합니다.
쿼리 실행을 클릭합니다.
로그 내보내기
방화벽 정책 규칙 로그를 내보내려면 지원되는 대상으로 로그 라우팅을 참고하세요. 쿼리 예시를 사용하여 내보내는 로그의 범위를 좁힐 수 있습니다.
상호작용 테이블
- VM 간 통신의 경우 각 방화벽 규칙에 따라 두 VM에서 로그 레코드가 생성될 수 있습니다.
- 로깅된 연결에는 방화벽이 초기 패킷을 허용한 경우 양방향으로 흐르는 패킷이 포함됩니다.
- 지정된 VM의 경우 수신 연결은 해당 VM에 구성된 방화벽 규칙과 비교되고 발신 연결은 해당 VM에 구성된 이그레스 방화벽 규칙과 비교됩니다.
- '허용 및 로깅'이 있는 방화벽 규칙과 일치하는 허용된 연결은 한 번만 로깅됩니다. 연결이 지속되더라도 로그 항목은 5초마다 반복되지 않습니다.
- '거부 및 로깅'이 있는 방화벽 규칙과 일치하는 거부된 연결은 관찰된 패킷이 거부된 연결에 있으면 5초마다 로그 항목을 반복합니다.
- 이미 활성 상태인 TCP 또는 UDP 연결과 일치하는 방화벽 규칙에서 로깅을 사용 설정하면 새 로그 항목이 생성되지 않습니다. 로그 항목은 연결이 10분 이상 유휴 상태로 유지되고 동일한 연결에서 새 패킷이 전송되는 경우에만 생성됩니다. 유휴 기간이 10분 미만인 연속 트래픽의 경우 연결에 대해 하나의 로그 항목만 생성됩니다.
이 테이블은 단일 VM의 관점에서 방화벽 로깅 동작을 보여줍니다.
VM1에 패킷과 일치하는 수신 규칙 R1과 패킷과 일치하는 송신 규칙 R2도 있는 시나리오에서 방화벽 로깅 동작은 다음과 같습니다.
| VM1에 패킷과 일치하는 인그레스 규칙 R1이 있음 | VM1에 패킷과 일치하는 이그레스 규칙 R2가 있음 | 연결 방향 | 작업 | 로그 |
|---|---|---|---|---|
| 허용 + 로깅 | 허용 | 인그레스 | 허용 | 하나의 로그 항목: 처분=허용, 규칙=R1 |
| 거부 | ||||
| 허용 + 로깅 | ||||
| 거부 + 로깅 | ||||
| 허용 | 허용 | 인그레스 | 허용 | 로깅 안함 |
| 거부 | ||||
| 허용 + 로깅 | ||||
| 거부 + 로깅 | ||||
| 거부 + 로깅 | 해당 사항 없음 | 인그레스 | 거부 | 5초마다 하나의 로그 항목: 처분=거부, 규칙=R1 |
| 거부 | 해당 사항 없음 | 인그레스 | 거부 | 로깅 안함 |
| 허용 | 허용 + 로깅 | 이그레스 | 허용 | 하나의 로그 항목: 처분=허용, 규칙=R2 |
| 거부 | ||||
| 허용 + 로깅 | ||||
| 거부 + 로깅 | ||||
| 허용 | 허용 | 이그레스 | 허용 | 로깅 안함 |
| 거부 | ||||
| 허용 + 로깅 | ||||
| 거부 + 로깅 | ||||
| 해당 사항 없음 | 거부 + 로깅 | 이그레스 | 거부 | 5초마다 하나의 로그 항목: 처분=거부, 규칙=R2 |
| 해당 사항 없음 | 거부 | 이그레스 | 거부 | 로깅 안함 |
인그레스와 이그레스는 대칭적입니다.
다음은 방화벽 로그 시맨틱스에 대한 자세한 설명입니다.
허용 + 로깅(TCP 및 UDP에만 로깅 지원)
- 규칙이 적용되는 방향에서 연결이 시작되면 단일 로그 레코드가 생성됩니다.
- 연결 추적으로 인해 응답 트래픽이 허용됩니다. 응답 트래픽에서는 해당 방향의 VPC 방화벽 규칙에 관계없이 로깅이 발생하지 않습니다.
- 방화벽에서 연결이 만료되면(10분 동안 비활성 상태이거나 TCP RST가 수신되는 경우) 어느 방향으로든 다른 패킷이 로깅을 트리거할 수 있습니다.
- 로깅은 5-튜플을 기반으로 합니다. TCP 플래그는 로깅 동작에 영향을 주지 않습니다.
거부 + 로깅(TCP 및 UDP에만 로깅 지원)
- 패킷이 중단됩니다(연결이 시작되지 않음).
- 고유한 5-튜플에 해당하는 각 패킷은 실패한 연결 시도로 로깅됩니다.
- 동일한 5-튜플은 패킷을 계속 수신하는 경우 5초마다 다시 로깅됩니다.