Stackdriver Logging의 BigQuery 관련 로그를 BigQuery로 내보내는 방법

BigQuery 쿼리 기록을 저장하고 나중에 조사할 수 있도록 Stackdriver Logging의 BigQuery 관련 로그를 BigQuery로 내보내는 방법을 요약했습니다.

BigQuery 데이터 세트 만들기



Stackdriver Logging에서 내보낸 로그 테이블을 저장하기 위한 데이터 세트를 생성합니다.

싱크 만들기



다음 명령을 사용하여 내보낼 로그 항목의 필터와 내보내기 대상을 설정하는 싱크를 만듭니다.
아래 명령은 로그의 resource-type을 bigquery_resource로 좁혀줍니다.
gcloud logging sinks create <sink名> bigquery.googleapis.com/projects/<project-id>/datasets/<dataset> --log-filter='resource.type="bigquery_resource"'

싱크 확인



콘솔 화면의 작업 로깅 → 로그 라우터에서 싱크가 생성되었는지 확인합니다.
또한 싱크 세부 정보를 보고 writerIdentify에서 서비스 계정을 보고 복사합니다.





다음 명령으로도 동일한 확인을 할 수 있습니다.
gcloud logging sinks list
gcloud logging sinks describe <sink名>

BigQuery 데이터 세트 권한 설정



방금 만든 데이터 세트에 서비스 계정이 쓸 수 있도록 권한 설정을 실시합니다.
BigQuery 데이터 세트의 권한 설정 화면에서 방금 복사한 서비스 계정을 붙여넣고 BigQuery 데이터 편집자로 추가합니다.



테이블에 데이터가 기록되었는지 확인



테이블에 데이터가 기록되기까지 약간의 시간이 걸립니다.
데이터가 작성되면 예를 들어 다음 SQL에서 어떤 계정이 어떤 쿼리를 실행했는지 확인할 수 있습니다.
SELECT 
  protopayload_auditlog.authenticationInfo.principalEmail AS email,
  protopayload_auditlog.servicedata_v1_bigquery.jobCompletedEvent.job.jobConfiguration.query AS query
FROM `<project-id>.<dataset>.cloudaudit_googleapis_com_data_access_20201012` LIMIT 1000


참고



BigQuery audit logs overview
로그 뷰어로 내보내기
BigQuery에서 빌어 먹을 쿼리 감지
Stackdriver Logging 로그를 잃기 전에 내보내는 방법

좋은 웹페이지 즐겨찾기