Cloud/GCP

GCE, GCS, Bigquery Audit Log 확인

달빛궁전- 2025. 2. 18. 18:09
대표적인 GCP서비스인 GCE, GCS, Bigquery 감사 로그를 “Cloud Logging”에서 확인하는 방안입니다.
 
  • GCE 자원접근 확인방안
    GCE 인스턴스 생성, 자원에 대한 로깅 확인
    GCE에 대한 로그만 확인하기 위해서는 아래 쿼리문을 사용합니다.
    protoPayload.serviceName="compute.googleapis.com"   

    그외 특정 활동에 대해 확인하기 위해서는 아래와 같습니다.
    - 인스턴스 생성
    resource.type="gce_instance"
    protoPayload.methodName:"compute.instances.insert"
    log_id("cloudaudit.googleapis.com/activity")

    - 인스턴스 삭제
    resource.type="gce_instance" protoPayload.methodName:"compute.instances.delete" log_id("cloudaudit.googleapis.com/activity") 

    - 인스턴스 정지, 재시작(자동재시작 포함)
    resource.type="gce_instance" protoPayload.methodName=~   "compute\.instances\.(stop|reset|automaticRestart|   guestTerminate|instanceManagerHaltForRestart)" (log_id("cloudaudit.googleapis.com/activity")   OR log_id("cloudaudit.googleapis.com/system_event"))
 
  • GCS파일 변경 이력 
    버킷 감사로그
    resource.type="gcs_bucket" AND logName:"cloudaudit.googleapis.com" 

    버킷 생성
    resource.type="gcs_bucket" AND
    log_id("cloudaudit.googleapis.com/activity") AND
    protoPayload.method_name="storage.buckets.create" 
     
    버킷 삭제
    resource.type="gcs_bucket" AND log_id("cloudaudit.googleapis.com/activity") AND protoPayload.method_name="storage.buckets.delete" 

    GCS 버킷 메타데이터 변경
    resource.type="gcs_bucket"
    protoPayload.methodName="storage.buckets.update"
    log_id("cloudaudit.googleapis.com/activity")

    Audit 로그로는 버킷이 생성, 삭제등 버킷 자체의 Audit을 확인할 수 있습니다.
    버킷내 파일(객체) 생성, 수정, 변경은 데이터 액세스 감사 로그입니다.

    아래와 같이 설정이 필요합니다.
    다만, 데이터 액세스 감사로그의 상세설명은 본 문서 마지막 부분을 참고 부탁드립니다. 
    많은 로그가 생성되는 사유로 기본적으로는 사용 중지가 되어있습니다. 

    IAM → 감사 로그로 이동합니다.


    “Google Cloud Storage”를 선택하고, 권한을 부여합니다.
    이 후 약간의 시간이 지나면 “데이터 액세스 감사 로그"가 기록되며 아래의 객체 수정, 삭제등이 확인이 가능합니다.

    - 객체(파일 생성) 확인
    resource.type="gcs_bucket"
    protoPayload.methodName="storage.objects.create"
    log_id("cloudaudit.googleapis.com/data_access")

    객체(파일) 삭제
    resource.type="gcs_bucket"
    protoPayload.methodName="storage.objects.delete"
    log_id("cloudaudit.googleapis.com/data_access")

     객체(파일) 수정
    resource.type="gcs_bucket"
    protoPayload.methodName="storage.objects.update"
    log_id("cloudaudit.googleapis.com/data_access")
     
    특정 버킷에 대한 쿼리 (Specific Bucket)
    resource.type="gcs_bucket"
    resource.labels.bucket_name="your-bucket-name"
    log_id("cloudaudit.googleapis.com/data_access")


  • Bigquery : 데이터셋의 접근이력 (수정, 삭제 포함)
    - Bigquery 감사로그
    resource.type=("bigquery_dataset" OR "bigquery_project") AND logName:"cloudaudit.googleapis.com" 

    - Dataset 생성, 수정
    resource.type="bigquery_dataset"
    AND protoPayload.methodName:("datasetservice.insert" OR "datasetservice.patch" OR "datasetservice.update")

    - Dataset 삭제
    resource.type="bigquery_dataset"
    protoPayload.methodName="google.cloud.bigquery.v2.DatasetService.DeleteDataset"

    - 테이블 삭제
    resource.type="bigquery_resource"
    protoPayload.methodName="tableservice.delete"

    - 예시

 
 
 
  • 참고사항

 

감사로그(audit log)는 기본적으로 400일, 30일로 저장됩니다.
GCP의 감사로그는 _Required, _ Default 2개로 Bucket에 저장되도록 구성되어 있습니다.
각 로그의 버킷은 내용은 아래와 같습니다.

데이터 액세스 감사 로그( Default): GCP의 리소스 구성, API호출과 사용자가 API호출에 대해서도 기록
(기본적으로는 용량이 많기에 사용 중지 되어있습니다.)
정책 거부 감사 로그 : 보안정책 위반시 사용자, 서비스계정(SA)에 대해 액세스 거부시 기록
각 로그에 대한 설명 : https://cloud.google.com/logging/docs/audit?hl=ko#data-access



각 로그별 상세하게 로깅을 확인하는 방안은 아래의 GCP의 공식 Docs를 참고하세요.