Google Cloud 감사 로그 내보내는 방법

Google Cloud 감사 로그 내보내는 방법

SOC Prime Team
SOC Prime Team linkedin icon 팔로우

cloudaudit.googleapis.com에 대한 필터를 사용하여 gcloud logging read를 사용하거나 Logs Explorer에서 동일한 쿼리를 실행하고 결과를 JSON으로 다운로드하십시오:

gcloud logging read 'logName:"cloudaudit.googleapis.com" AND timestamp>="2026-10-19T00:00:00Z" AND timestamp<"2026-10-20T00:00:00Z"' 

  --project=my-project --format=json > gcp_audit_1019.json

관리 활동 감사 로그는 항상 켜져 있으며 400일 동안 유지됩니다. 데이터 액세스 로그는 기본적으로 꺼져 있으며, BigQuery를 제외하고 활성화되면 30일 동안 유지됩니다.

Cloud Audit Logs는 Google Cloud 프로젝트에서 누가 무엇을 변경했는지 기록합니다: IAM 권한 부여, 새로운 서비스 계정 키, 방화벽 변경, 이상한 지역에서 스핀업 된 VM 등. Prime Core는 Google Cloud 감사 로그에 140개의 탐지 규칙을 가지고 있으며, 74개의 MITRE ATT&CK 기술에 매핑되어 있습니다. 그 중에는 클라우드 계정 남용(T1078.004), 새로운 서비스 계정 키와 같은 추가 자격 증명(T1098.001), 로깅 자체 조작(T1562.008)이 포함됩니다.

무료로 시작하기

시작하기 전에

필요한 감사 로그를 파악하십시오.

유형기본적으로 켜져 있나요?보존내용
관리 활동항상, 비활성화 불가400일구성 및 IAM 변경
시스템 이벤트항상400일Google 시스템이 자원에 취한 조치
데이터 액세스아니오 (BigQuery 제외)30일데이터 및 메타데이터 읽기
정책 차단Yes30일보안 정책에 의해 차단된 요청

질문이 ‘이 버킷을 누가 읽었습니까?’이고 데이터 액세스 로그가 활성화되지 않았다면, 답변은 Cloud Logging에 없습니다.

권한. Logs Viewer (roles/logging.viewer)는 관리 활동, 시스템 이벤트 및 정책 차단을 포함합니다. 데이터 액세스 로그는 Private Logs Viewer (roles/logging.privateLogViewer)를 필요로 합니다.

범위. 감사 로그는 프로젝트마다 존재합니다. 조직 및 폴더 수준의 활동에는 자체 로그가 있습니다. –project 대신 –organization=<ORG_ID> 또는 –folder=<FOLDER_ID>로 쿼리하십시오.

옵션 1: Logs Explorer

콘솔에서 열기 Logging → Logs Explorer, logName:”cloudaudit.googleapis.com”을 입력하고, 시간 범위를 설정하고, 쿼리를 실행한 후 결과를 JSON으로 다운로드하십시오. 다운로드는 제한됩니다. 더 큰 범위의 경우 gcloud를 사용하십시오.

옵션 2: gcloud logging read

맨 위의 명령은 기본 형태입니다. 세 가지 세부 사항이 시간을 절약합니다.

항상 필터에 시간 창을 넣으십시오. 타임스탬프 조건 없이, gcloud logging read는 조용히 마지막 하루로 제한됩니다 (–freshness는 기본적으로 1d). 이는 거의 모든 사람에게 놀라움을 줍니다.

필요할 때 제한을 높이십시오. 큰 창의 경우 –limit=100000 (또는 적절한 값을) 추가하십시오.

업로드를 위해 평탄화하십시오. 출력은 하나의 JSON 배열입니다. 그것을 라인당 하나의 항목으로 변환하십시오:

jq -c '.[]' gcp_audit_1019.json > gcp_audit_1019.jsonl

유용한 좁은 필터:

# 관리 활동만

logName="projects/my-project/logs/cloudaudit.googleapis.com/activity"


# 새로운 서비스 계정 키

protoPayload.methodName="google.iam.admin.v1.CreateServiceAccountKey"


# 한 사용자가 수행한 모든 작업

protoPayload.authenticationInfo.principalEmail="suspicious-sa@my-project.iam.gserviceaccount.com"

옵션 3: 싱크에서 대량 기록

조직이 감사 로그를 싱크를 통해 Cloud Storage나 BigQuery로 경로를 설정한 경우, 그 복사본은 위의 버킷보다 더 오래된 시점으로 돌아갈 수 있습니다. gcloud storage cp로 파일을 가져오거나, BigQuery 쿼리를 실행하고 결과를 JSON으로 내보내십시오.

찾아야 하는 것

방법 또는 필드이유
CreateServiceAccountKey공격자가 가질 수 있는 장기 자격 증명
SetIamPolicy역할 부여; roles/owner, roles/editor 및 allUsers에 주의
UpdateSink, DeleteSink, 새로운 제외누군가 로그를 리디렉션하거나 침묵시키려고 함
일반적이지 않은 지역에서의 v1.compute.instances.insert전형적인 암호화폐 채굴 흔적
status.code: 7 (PERMISSION_DENIED)로 들쭉날쭉함도난당한 자격 증명이 시도할 수 있는 것을 살피는 중

LogTotal에서 업로드, 정리 및 검토하기

  1. 업로드. 열기 logtotal.com , .jsonl 파일을 드롭하십시오. 
  2. 정화. [what gets masked: principal emails, project IDs, IPs, resource names]. Look it over before you continue.
  3. 검토. 

문제가 생겼을 때

증상가능한 원인Fix
마지막 24시간만 반환됨필터에 타임스탬프가 없어서 –freshness=1d 적용됨필터에 창을 넣으십시오
데이터 액세스 항목 없음데이터 액세스 로그가 활성화되지 않음기대한 대로; 미래를 위해 활성화하십시오
PERMISSION_DENIED 로그 읽기데이터 액세스에 대한 Private Logs Viewer 권한 누락roles/logging.privateLogViewer 요청하기
결과가 중단됨기본 또는 명시적 –limit에 도달–limit을 높이거나 창을 나누십시오
조직 수준의 변경 사항 누락프로젝트를 쿼리했습니다–organization 사용

FAQ

Google Workspace 로그가 여기에 포함됩니까?

조직이 Google Cloud와 Workspace 데이터를 공유하는 경우에만, 그리고 조직 수준에서만 포함됩니다.

GKE는 어떻습니까?

GKE는 Kubernetes 감사 로그를 Cloud Audit Logs에도 기록합니다.

SOC Prime의 Detection as Code 플랫폼에 가입하세요 귀사의 비즈니스에 가장 중요한 위협에 대한 가시성을 개선하세요. 시작을 돕고 즉각적인 가치를 제공하기 위해 지금 SOC Prime 전문가와의 회의를 예약하세요.