프록시 트랜잭션 로그는 Secure Web Proxy가 처리하는 각 요청에 관한 자세한 정보를 제공합니다. 이러한 로그에는 Secure Web Proxy가 사용자와 인터넷 간에 중재하는 모든 트랜잭션에 대한 레코드가 포함됩니다. 이 문서에서는 Secure Web Proxy 인스턴스에서 생성하는 트랜잭션 로그에 액세스하고 이를 해석하는 방법을 설명합니다.
프록시 트랜잭션 로그 항목 유형
프록시 트랜잭션 로그 항목에는 세 가지 유형이 있습니다.
이러한 로그는 다음 작업에 유용합니다.
- 보안 분석 및 위협 감지
- 연결 및 정책 문제 해결
- 웹 액세스 감사
- Secure Web Proxy 성능 분석
HttpRequest
이러한 로그 항목에는 다음 정보가 포함됩니다.
| 이름 | 유형 | 설명 |
|---|---|---|
requestMethod
|
문자열 | 요청 메서드 유형(예: GET, HEAD, PUT, POST)입니다.
|
requestUrl
|
문자열 | 요청된 URL의 스키마 (http 또는 https), 호스트 이름, 경로, 쿼리 부분 예를 들면 http://example.com/some/info?color=red와 같습니다.
|
requestSize
|
문자열(int64 형식) |
요청 헤더와 요청 본문을 포함하는 HTTP 요청 메시지의 크기(바이트)입니다. |
status
|
정수 | 응답을 나타내는 HTTP 또는 HTTPS 상태 코드입니다. 예를 들면 200 OK 또는 404 Not Found입니다.
|
responseSize
|
문자열(int64 형식) | 헤더와 본문을 포함하여 클라이언트로 다시 전송되는 HTTP 상태 코드의 크기(바이트)입니다. |
userAgent
|
문자열 | 클라이언트가 전송하는 사용자 에이전트입니다(예: Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Q312461;
.NET CLR 1.0.3705)).
|
remoteIp
|
문자열 | HTTP 요청을 실행한 클라이언트의 IP 주소 (IPv4 또는 IPv6)입니다. 이 필드에는 포트 정보가 포함될 수 있습니다. 예를 들면 192.168.1.1, 10.0.0.1:80, FE80::0202:B3FF:FE1E:8329입니다.
|
serverIp
|
문자열 | 요청이 전송된 원본 서버의 IP 주소 (IPv4 또는 IPv6)입니다. 이 필드에는 포트 정보가 포함될 수 있습니다. 예를 들면 192.168.1.1, 10.0.0.1:80, FE80::0202:B3FF:FE1E:8329입니다.
|
referrer
|
문자열 | HTTP/1.1 헤더 필드 정의에 정의된 요청의 리퍼러 URL입니다. |
latency
|
문자열(기간 형식) | 요청이 수신된 시점부터 응답이 전송될 때까지 서버의 요청 처리 지연 시간입니다.
지연 시간은 최대 9자리 소수의 초 단위 기간이며 |
cacheLookup
|
불리언 | 캐시 조회를 시도했는지 여부를 나타냅니다. |
cacheHit
|
불리언 | 항목이 캐시에서 제공되었는지 여부를 나타냅니다 (검증 유무에 관계없음). |
cacheValidatedWithOriginServer
|
불리언 | 캐시에서 제공되기 전에 원본 서버로 응답이 검증되었는지 여부를 나타냅니다. 이 필드는 cacheHit이 True인 경우에만 의미가 있습니다.
|
cacheFillBytes
|
문자열(int64 형식) | 삽입된 HTTP 상태 코드 바이트 수입니다. |
protocol
|
문자열 | 요청에 사용된 프로토콜(예: HTTP/1.1, HTTP/2, websocket)입니다.
|
LoadBalancerLogEntry
이러한 로그 항목에는 다음 정보가 포함됩니다.
| 이름 | 유형 | 설명 |
|---|---|---|
insertId
|
문자열 | 고유한 로그 ID입니다. |
jsonPayload.@type
|
문자열 | 로그 유형입니다. 로그 유형 값은 항상 type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry입니다.
|
jsonPayload.enforcedGatewaySecurityPolicy.hostname
|
문자열 | 요청과 연결된 호스트 이름입니다. |
jsonPayload.enforcedGatewaySecurityPolicy.matchedRules.action
|
문자열 | 요청에 대해 취해진 조치입니다. |
jsonPayload.enforcedGatewaySecurityPolicy.matchedRules.rule
|
문자열 | 요청에 적용된 규칙의 이름입니다. |
jsonPayload.enforcedGatewaySecurityPolicy.clientServiceAccount
|
문자열 | 요청과 연결된 서비스 계정입니다. |
jsonPayload.enforcedGatewaySecurityPolicy.clientSecureTags
|
문자열 | 요청과 연결된 보안 태그입니다. |
GatewayLogEntry
이러한 로그 항목에는 다음 정보가 포함됩니다.
| 이름 | 유형 | 설명 |
|---|---|---|
resource_container
|
문자열 | 게이트웨이와 연결된 컨테이너입니다. |
location
|
문자열 | 게이트웨이가 정의된 리전의 이름입니다. |
network_name
|
문자열 | 게이트웨이가 생성된 Virtual Private Cloud (VPC) 네트워크의 이름입니다. |
gateway_type
|
문자열 | 게이트웨이의 enum 유형입니다. Secure Web Proxy의 경우 값은 SECURE_WEB_GATEWAY여야 합니다.
|
gateway_name
|
문자열 | 게이트웨이 리소스의 이름입니다. |
프록시 트랜잭션 로그 형식
프록시 트랜잭션 로그는 로그 이름이 projects/PROJECT_ID/logs/networkservices.googleapis.com%2Fgateway_requests인 Cloud Logging에 기록됩니다.
각 로그 항목의 JSON 페이로드에는 트랜잭션에 관한 세부정보가 포함되어 있습니다. 로그 항목에는 다음 주요 필드가 포함됩니다.
| 이름 | 유형 | 설명 |
|---|---|---|
destination_ip |
문자열 | 대상의 확인된 IP 주소입니다. |
instance |
문자열 | 요청을 처리한 Secure Web Proxy 인스턴스의 이름입니다. |
mtls_info |
객체 | mTLS 핸드셰이크에 관한 정보입니다(해당하는 경우). |
policy_evaluation_results |
객체 | 일치한 규칙과 결과 작업(예: allow 또는 deny)에 관한 정보입니다. |
request_host |
문자열 | 요청된 호스트 이름입니다. |
request_method |
문자열 | HTTP 메서드(예: GET 또는 POST) |
request_path |
문자열 | 요청 경로입니다. |
request_port |
정수 | 대상 포트. |
request_protocol |
문자열 | HTTP 프로토콜 버전입니다. |
request_scheme |
문자열 | URL 요청의 스키마입니다(예: http 또는 https). |
request_time |
타임스탬프 | 프록시가 요청을 수신한 날짜와 시간입니다. 타임스탬프는 ISO 8601 형식으로 지정됩니다. YYYY-MM-DDTHH:MM:SS.MsMsMsZoneOffset 예를 들면 2025-06-03T11:52:26.452Z입니다. |
response_code |
정수 | 클라이언트에 반환되는 HTTP 상태 코드입니다. |
response_size |
정수 | 응답 본문의 크기(바이트 단위)입니다. |
response_time |
타임스탬프 | 프록시가 클라이언트에 응답을 전송한 날짜와 시간입니다.
타임스탬프는 ISO 8601 형식으로 지정됩니다.
YYYY-MM-DDTHH:MM:SS.MsMsMsZoneOffset 예를 들면 2025-06-03T11:52:26.452Z입니다. |
source_ip |
문자열 | 클라이언트 IP 주소입니다. |
source_port |
정수 | 클라이언트 소스 포트입니다. |
tls_cipher_suite |
문자열 | TLS 연결에 사용되는 암호화 스위트입니다. |
tls_version |
문자열 | 연결에 사용된 TLS 버전입니다. |
프록시 트랜잭션 로그 모니터링
Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.
Google Cloud 프로젝트를 선택합니다.
다음 쿼리를 사용하여 모든 Secure Web Proxy 트랜잭션 로그를 확인합니다.
logName="projects/PROJECT_ID/logs/networkservices.googleapis.com%2Fgateway_requests"
PROJECT_ID를 타겟Google Cloud 프로젝트의 ID로 바꿉니다.다음은 특정 세부정보를 확인하는 데 사용할 수 있는 몇 가지 샘플 쿼리입니다.
거부된 요청을 모두 찾습니다.
logName="projects/PROJECT_ID/logs/networkservices.googleapis.com%2Fgateway_requests" jsonPayload.policy_evaluation_results.policy_action="DENY"
특정 소스 IP 주소의 요청을 찾습니다.
logName="projects/PROJECT_ID/logs/networkservices.googleapis.com%2Fgateway_requests" jsonPayload.source_ip="192.0.2.1"
특정 호스트에 대한 요청을 찾습니다.
logName="projects/PROJECT_ID/logs/networkservices.googleapis.com%2Fgateway_requests" jsonPayload.request_host="example.com"
프록시 트랜잭션 로그와 Cloud Trace의 상관관계 분석
Secure Web Proxy 게이트웨이에서 분산 추적을 사용 설정하면 다음 단계에 따라 프록시 트랜잭션 로그 항목을 Trace의 추적 스팬과 상호 연관시킬 수 있습니다.
Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.
gateway_requests로그 항목을 펼칩니다.최상위
trace필드를 찾습니다.projects/PROJECT_ID/traces/TRACE_ID
다음을 바꿉니다.
PROJECT_ID: Google Cloud 프로젝트 IDTRACE_ID: 클라이언트 또는 추적 스팬의 128비트 (32자 16진수) 추적 ID입니다. 예를 들면4bf92f3577b34da6a3ce929d0e0e4736입니다.
traceURL을 클릭한 다음 trace 세부정보 보기를 선택하여 Cloud Trace의 trace 폭포로 직접 이동합니다.OpenTelemetry로 계측된 클라이언트에서 알려진 추적 ID의 로그를 필터링하려면 로그 탐색기에서 다음 쿼리를 실행합니다.
logName="projects/PROJECT_ID/logs/networkservices.googleapis.com%2Fgateway_requests" trace="projects/PROJECT_ID/traces/TRACE_ID"
자세한 내용은 분산 추적 개요 및 Cloud Trace로 아웃바운드 트래픽 추적을 참고하세요.
프록시 트랜잭션 로그 라우팅
로그 싱크를 사용하여 프록시 트랜잭션 로그를 Cloud Storage, BigQuery, Pub/Sub과 같은 다른 대상으로 라우팅할 수 있습니다. 자세한 내용은 로그 항목 라우팅을 참고하세요.