URL 필터링 서비스 로그를 사용하면 네트워크에서 URL 기반 트래픽 필터링을 감사, 확인, 분석할 수 있습니다.
Cloud Next Generation Firewall은 레이어 7 검사가 사용 설정된 트래픽에 대해 URL 기반 필터링을 실행할 때 연결에 관한 세부정보가 포함된 각 연결에 대한 로그 항목을 생성합니다. Cloud NGFW는 Cloud Logging 사용 설정 여부와 관계없이 레이어 7 검사가 있는 방화벽 규칙이 활성화되면 로그 항목을 생성합니다.
URL 필터링 로그를 보고 검사하려면 로그 탐색기에서 networksecurity.googleapis.com/firewall_url_filter
로그를 검색합니다.
이 페이지에서는 Cloud NGFW가 트래픽을 허용하거나 거부할 때 각 연결에 대해 생성하는 URL 필터링 로그의 형식과 구조를 설명합니다.
URL 필터링 로그 형식
Cloud NGFW는 특정 영역의 가상 머신 (VM) 인스턴스와 주고받는 트래픽을 모니터링하기 위해 URL 필터링을 거치는 각 연결에 대해 Cloud Logging에 로그 기록 항목을 만듭니다. 로그 기록은 LogEntry의 JSON 페이로드 필드에 포함됩니다.
일부 로그 필드는 한 필드에 두 가지 이상의 데이터를 포함하는 다중 필드 형식입니다. 예를 들어 connection
필드는 Connection
형식이며 서버 IP 주소 및 포트, 클라이언트 IP 주소 및 포트, 프로토콜 번호가 단일 필드에 포함됩니다.
다음 표에서는 URL 필터링 로그 필드의 형식을 설명합니다.
필드 | 유형 | 설명 |
---|---|---|
connection
|
Connection
|
도메인 및 서버 이름 표시 (SNI) 정보에 따라 허용되거나 거부된 트래픽과 연결된 연결 파라미터를 설명하는 5-튜플입니다. |
interceptInstance
|
InterceptInstance
|
도메인 및 SNI 정보를 기반으로 트래픽이 허용되거나 거부되는 VM 인스턴스의 세부정보입니다. |
detectionTime
|
string
|
방화벽 엔드포인트가 도메인 및 SNI 정보의 일치 항목을 감지한 시간 (UTC)입니다. |
uriMatched
|
string
|
방화벽 엔드포인트가 일치 항목을 감지한 도메인입니다. |
interceptVpc
|
VpcDetails
|
도메인 및 SNI 정보를 기반으로 트래픽이 허용되거나 거부되는 VM 인스턴스와 연결된 가상 프라이빗 클라우드 (VPC) 네트워크의 세부정보입니다. |
ruleIndex
|
integer
|
방화벽 엔드포인트에서 일치하는 항목을 감지한 URL 필터의 색인 또는 순서 번호입니다. |
direction
|
string
|
방화벽 엔드포인트에서 일치 항목을 감지한 트래픽의 방향 (CLIENT_TO_SERVER 또는 SERVER_TO_CLIENT )입니다.
|
securityProfileGroupDetails
|
SecurityProfileGroupDetails
|
가로챈 트래픽에 적용된 보안 프로필 그룹의 세부정보입니다. |
denyType
|
string
|
방화벽 엔드포인트가 트래픽을 거부하는 데 사용하는 정보의 유형입니다.
|
action
|
string
|
도메인 및 SNI 정보를 기반으로 필터링된 트래픽에 대해 실행된 작업(allow 또는 deny )입니다. 보안 프로필에서 이 작업을 정의합니다. 구성된 작업에 대해 자세히 알아보려면 URL 필터링 보안 프로필을 참고하세요.
|
applicationLayerDetails
|
ApplicationLayerDetails
|
애플리케이션 계층 처리와 관련된 세부정보입니다. |
sessionLayerDetails
|
SessionLayerDetails
|
세션 레이어 처리와 관련된 세부정보입니다. |
Connection
필드 형식
다음 표에서는 Connection
필드의 형식을 설명합니다.
필드 | 유형 | 설명 |
---|---|---|
clientIp
|
string
|
클라이언트 IP 주소입니다. 클라이언트가 Compute Engine VM인 경우 clientIp 는 기본 내부 IP 주소이거나 VM 네트워크 인터페이스의 별칭 IP 범위에 있는 주소입니다. 외부 IP 주소는 표시되지 않습니다. 로그에는 VM 인스턴스의 TCP 덤프와 유사한, IP 헤더에서 확인된 VM 인스턴스의 IP 주소가 표시됩니다.
|
clientPort
|
integer
|
클라이언트 포트 번호입니다. |
serverIp
|
string
|
서버 IP 주소입니다. 서버가 Compute Engine VM인 경우 serverIp 는 기본 내부 IP 주소이거나 VM 네트워크 인터페이스의 별칭 IP 범위에 있는 주소입니다. 외부 IP 주소는 연결에 사용된 경우에도 표시되지 않습니다.
|
serverPort
|
integer
|
서버 포트 번호입니다. |
protocol
|
string
|
연결의 IP 프로토콜입니다. |
InterceptInstance
필드 형식
다음 표에서는 InterceptInstance
필드의 형식을 설명합니다.
필드 | 유형 | 설명 |
---|---|---|
zone
|
string
|
가로챈 트래픽과 연결된 VM 인스턴스가 있는 영역의 이름입니다. |
vm
|
string
|
가로챈 트래픽과 연결된 VM 인스턴스의 이름입니다. |
projectId
|
string
|
가로챈 트래픽과 연결된 Google Cloud 프로젝트의 이름입니다. |
VpcDetails
필드 형식
다음 표에서는 VpcDetails
필드의 형식을 설명합니다.
필드 | 유형 | 설명 |
---|---|---|
vpc
|
string
|
가로챈 트래픽과 연결된 VPC 네트워크의 이름입니다. |
projectId
|
string
|
VPC 네트워크와 연결된 Google Cloud 프로젝트의 이름입니다. |
SecurityProfileGroupDetails
필드 형식
다음 표에서는 SecurityProfileGroupDetails
필드의 형식을 설명합니다.
필드 | 유형 | 설명 |
---|---|---|
securityProfileGroupId
|
string
|
트래픽에 적용되는 보안 프로필 그룹 이름입니다. |
organizationId
|
string
|
VM 인스턴스가 속한 조직 ID입니다. |
ApplicationLayerDetails
필드 형식
다음 표에서는 ApplicationLayerDetails
필드의 형식을 설명합니다.
필드 | 유형 | 설명 |
---|---|---|
protocol
|
string
|
방화벽 엔드포인트가 애플리케이션 레이어에서 사용하는 프로토콜 버전입니다.
|
uri
|
string
|
방화벽 엔드포인트가 트래픽에서 읽어오는 도메인 및 하위 도메인 정보입니다. |
SessionLayerDetails
필드 형식
다음 표에서는 SessionLayerDetails
필드의 형식을 설명합니다.
필드 | 유형 | 설명 |
---|---|---|
sni
|
string
|
방화벽 엔드포인트가 트래픽에서 읽어오는 서버 이름 표시 (SNI)입니다. |
protocolVersion
|
string
|
세션 계층에서 방화벽 엔드포인트가 사용하는 프로토콜 버전입니다.
|
방화벽 로그와의 URL 필터링 로그 상관관계
트래픽이 방화벽 규칙에 의해 평가되면 Cloud NGFW는 방화벽 규칙 로깅 항목을 기록합니다. 이 항목에는 소스 IP 주소, 대상 IP 주소, 트래픽 검사 시간과 같은 필드가 포함됩니다. 이러한 방화벽 규칙 로그를 보려면 로그 보기를 참고하세요.
레이어 7 검사가 사용 설정된 방화벽 정책 규칙에 로깅이 사용 설정된 경우 Cloud NGFW는 먼저 평가된 트래픽에 대한 방화벽 규칙 로깅 항목을 로깅합니다. 그런 다음 레이어 7 검사를 위해 트래픽을 방화벽 엔드포인트로 보냅니다.
방화벽 엔드포인트는 도메인과 SNI를 사용하여 트래픽을 분석하고 연결에 대한 별도의 URL 필터링 로그를 만듭니다. 이 URL 필터링 로그에는 도메인 이름, 트래픽 소스, 트래픽 대상과 같은 필드가 포함됩니다.
URL 필터링 로그를 보려면 로그 탐색기에서 networksecurity.googleapis.com/firewall_url_filter
로그를 검색합니다.
방화벽 규칙 로그와 URL 필터링 로그의 필드를 비교하여 URL 필터링을 트리거한 연결을 식별하고 적절한 조치를 취하여 해결할 수 있습니다.
예를 들어 다음과 같은 설정으로 구성된 방화벽 정책 규칙이 있습니다.
- 소스 IP 주소:
192.0.2.0
- 소스 포트:
47644
- 대상 IP 주소:
192.0.2.1
- 대상 포트:
80
- 로깅:
Enabled
이 규칙과 연결된 URL 필터링 로그를 보려면 로그 탐색기 페이지로 이동하세요. 쿼리 창의 쿼리 편집기 필드에 다음 쿼리를 붙여넣습니다.
resource.type="networksecurity.googleapis.com/FirewallEndpoint" jsonPayload.source_ip_address="192.0.2.0" jsonPayload.source_port="47644" jsonPayload.destination_ip_address="192.0.2.1" jsonPayload.destination_port="80"
쿼리 결과 섹션에 다음 URL 필터링 로그가 표시됩니다.
{ "insertId": "akxp8uf5f0fuv", "jsonPayload": { "connection": { "serverPort": 80, "clientPort": 47644, "protocol": "TCP", "clientIp": "192.0.2.0", "serverIp": "192.0.2.1" }, "interceptInstance": { "zone": "us-central1-c", "vm": "aied-test-dont-delete", "projectId": "project_001" }, "detectionTime": "2025-06-02T19:09:27.802711668Z", "uriMatched": "", "interceptVpc": { "projectId": "project_001", "vpc": "default" }, "ruleIndex": 0, "direction": "CLIENT_TO_SERVER", "@type": "type.googleapis.com/google.cloud.networksecurity.logging.v1.URLFilterLog", "securityProfileGroupDetails": { "securityProfileGroupId": "project_001/spg/my-spg-id", "organizationId": "organization_001" }, "denyType": "HOST", "action": "DENY", "applicationLayerDetails": { "protocol": "HTTP1", "uri": "server.fwp.com" }, "sessionLayerDetails": { "sni": "", "protocolVersion": "PROTOCOL_VERSION_UNSPECIFIED" } }, "resource": { "type": "networksecurity.googleapis.com/FirewallEndpoint", "labels": { "location": "us-central1-c", "resource_container": "organizations/organization_001", "id": "pg-ni-latencyayzl8peq" } }, "timestamp": "2025-06-02T19:09:35.452299517Z", "logName": "projects/project_001/logs/networksecurity.googleapis.com%2Ffirewall_url_filter", "receiveTimestamp": "2025-06-02T19:09:35.452299517Z" }
마찬가지로 이 규칙과 연결된 방화벽 로그를 보려면 로그 탐색기 페이지로 이동하세요. 쿼리 창의 쿼리 편집기 필드에 다음 쿼리를 붙여넣습니다.
jsonPayload.rule_details.action="APPLY_SECURITY_PROFILE_GROUP" jsonPayload.connection.src_ip="192.0.2.0" jsonPayload.connection.src_port="47644" jsonPayload.connection.dest_ip="192.0.2.1" jsonPayload.connection.dest_port="80"
쿼리 결과 섹션에 다음 방화벽 로그가 표시됩니다.
{ insertId: "qn82vdg109q3r9" jsonPayload: { connection: { } dest_ip: "192.0.2.1" dest_port: 80 protocol: 6 src_ip: "192.0.2.0" src_port: 47644 disposition: "INTERCEPTED" ►instance: {4} ▸ remote_instance: {4} ▸ remote_vpc: {3} rule_details: { action: "APPLY_SECURITY_PROFILE_GROUP" apply_security_profile_fallback_action: "UNSPECIFIED" direction: "INGRESS" ▸ ip_port_info: [1] ▼ priority: 6000 reference: "network: fwplus-vpc/firewallPolicy: fwplus-fwpolicy" source_range: [ 1 0: "192.0.2.0/24" target_secure_tag: [ 0: "tagValues/281479199099651" ] } vpc: { project_id: "project_001" subnetwork_name: "fwplus-us-central1-subnet" vpc_name: "fwplus-vpc" } } logName: "projects/project_001/logs/compute.googleapis.com%2Ffirewall", receiveTimestamp: "2023-11-28T19:08:46.749244092Z" resource: {2} timestamp: "2023-11-28T19:08:40.207465099Z" }
URL 필터링 로그와 방화벽 로그 쿼리를 모두 사용하여 두 로그 간의 상관관계를 확인할 수 있습니다. 다음 표에서는 방화벽 로그 필드를 해당 URL 필터링 로그 필드에 매핑합니다.
방화벽 로그 필드 | URL 필터링 로그 필드 | 설명 |
---|---|---|
src_ip
|
clientIp
|
방화벽 로그의 소스 IP 주소는 URL 필터링 로그의 클라이언트 IP 주소와 상관관계가 있어 필터링된 트래픽의 출처를 식별합니다. |
src_port
|
clientPort
|
방화벽 로그의 소스 포트는 URL 필터링 로그의 클라이언트 포트와 상관관계가 있어 필터링된 트래픽에서 사용되는 소스 포트를 식별합니다. |
dest_ip
|
serverIp
|
방화벽 로그의 대상 IP 주소는 URL 필터링 로그의 서버 IP 주소와 상관관계가 있어 필터링된 트래픽의 대상을 정확히 파악합니다. |
dest_port
|
serverPort
|
방화벽 로그의 대상 포트는 URL 필터링 로그의 서버 포트와 상관관계가 있어 필터링된 트래픽에서 사용되는 대상 포트를 식별합니다. |