GCP API 키 호출자 IP는 Cloud Audit Data Access Log를 켜야 추적할 수 있다
·수정 2026.05.14·수정 2회
요약
- API 키 사용 audit 시 Cloud Monitoring 메트릭은 "언제·어떤 메서드·어떤 응답"은 보여주지만 호출자 IP·User-Agent는 안 보인다
- IP 추적이 필요하면 사전에 Cloud Audit Logs의 Data Access Log를 활성화해두어야 함
- Admin Activity Log는 기본 켜짐(무료, 400일 보관), Data Access Log는 기본 꺼짐(유료, 일부만 30일)
본문
Cloud Monitoring 메트릭으로 보이는 것
consumed_api::serviceruntime.googleapis.com/api/request_count 메트릭에 붙는 라벨:
| 라벨 | 예시 | 추적 가능 |
|---|---|---|
resource.credential_id |
apikey:<CREDENTIAL_ID> |
어떤 키가 호출 |
resource.service |
generativelanguage.googleapis.com |
어떤 API |
resource.method |
...GenerateContent |
어떤 메서드 |
resource.version |
v1, v1beta |
API 버전 |
resource.location |
us-central1 |
리전 |
metric.response_code |
200, 429, 404 |
응답 결과 |
metric.protocol |
grpc, http |
프로토콜 |
못 보는 것: 호출자 IP, User-Agent, 실제 요청 페이로드.
Cloud Audit Log의 3가지 종류
| 로그 종류 | 기본 상태 | 보관 기간 | 비용 | 기록 내용 |
|---|---|---|---|---|
| Admin Activity | 켜짐(off 불가) | 400일 | 무료 | 리소스 생성/수정/삭제 |
| System Event | 켜짐(off 불가) | 400일 | 무료 | GCP 시스템 자동 변경 |
| Data Access | 꺼짐(BigQuery만 켜짐) | 30일 | 유료 | 데이터 읽기/쓰기, callerIp/userAgent 포함 |
→ API 키 호출 IP 추적은 Data Access Log 영역. 안 켜놨으면 IP 못 잡음.
Data Access Log 켜는 법
콘솔: IAM & Admin → Audit Logs → 서비스 선택 → "Data Read / Data Write / Admin Read" 체크.
CLI:
# 현재 정책 확인
gcloud projects get-iam-policy <PROJECT_ID> \
--format=json > policy.json
# auditConfigs 추가 후 적용 (예: Generative Language API의 DATA_READ)
gcloud projects set-iam-policy <PROJECT_ID> policy.json
auditConfigs 구조:
auditConfigs:
- service: generativelanguage.googleapis.com
auditLogConfigs:
- logType: DATA_READ
- logType: DATA_WRITE
비용 고려
Data Access Log는 트래픽 1MB당 $0.50 (Cloud Logging ingestion 요금). 호출량 많은 API에 켜면 월 수십~수백 달러 나갈 수 있음. 고가치 키 관련 서비스만 선택적으로 켜는 게 정석.
사후 분석 한계
뒤늦게 IP를 알고 싶을 때 Data Access Log가 안 켜져 있으면 소급 추적 불가능. 메트릭의 resource.location(리전 단위)만 단서로 남음. 고가치 키 관련 서비스는 사전에 Data Access Log를 켜두는 것이 안전.
대안: VPC Service Controls / IAM Conditions
IP 기반 접근 제어가 필요하면 Data Access Log 추적 대신 VPC Service Controls로 사전 차단하거나, IAM Conditions로 IP 화이트리스트 거는 방법도 있음. API 키는 본질적으로 익명이라 IP 제한이 가장 강력한 통제 수단.