싱크서비스 : BigQuery, Colud Storage, Colud pub/Sub 중에 선택가능
싱크 대상 위치 : BigQuery를 선택했으면 Dataset 이름을 넣어준다.
싱크 생성이 완료되면 BigQuery에 감사로그 테이블을 만들어야 하는데 싱크 서비스 계정이 BigQuery에 테이블 생성 권한이 없어 수동으로 구성이 필요합니다.
작성자 ID를 복사하여 IAM 및 관리자에서 위 계정을 IAM에 BigQuery 쓰기 권한을 줘서 등록 해야합니다.
이제 BiGquery에 DDL, DML 작업이 실행되면 Dataset에 아래 이름으로 테이블이 생성됩니다.
cloudaudit_googleapis_com_activity_[date]
cloudaudit_googleapis_com_data_access_[date]
2. 시간대/사용자 별 비용 확인하기
A. 시간대 별 비용
#standardSQL SELECT TIMESTAMP_TRUNC(protopayload_auditlog.servicedata_v1_bigquery.jobCompletedEvent.job.jobStatistics.endTime, HOUR) as time_window, FORMAT(‘%9.2f’,5.0 * (SUM(protopayload_auditlog.servicedata_v1_bigquery.jobCompletedEvent.job.jobStatistics.totalBilledBytes)/POWER(2, 40))) as Estimated_USD_Cost FROM `AuditLogsDataSet.cloudaudit_googleapis_com_data_access_YYYYMMDD` WHERE protopayload_auditlog.servicedata_v1_bigquery.jobCompletedEvent.eventName = ‘query_job_completed’ GROUP BY time_window ORDER BY time_window DESC
B. 사용자 별 비용
#standardSQL WITH data as ( SELECT protopayload_auditlog.authenticationInfo.principalEmail as principalEmail, protopayload_auditlog.servicedata_v1_bigquery.jobCompletedEvent as jobCompletedEvent FROM `AuditLogsDataSet.cloudaudit_googleapis_com_data_access_YYYYMMDD` ) SELECT principalEmail, FORMAT(‘%9.2f’,5.0 * (SUM(jobCompletedEvent.job.jobStatistics.totalBilledBytes)/POWER(2, 40))) as Estimated_USD_Cost FROM data WHERE jobCompletedEvent.eventName = ‘query_job_completed’ GROUP BY principalEmail ORDER BY Estimated_USD_Cost DESC