BigQueryで実行されたSQLを監査ログ(ロギング)から確認する
BigQueryは監査ログを取得できるのか、確認したのでその内容をメモを兼ねて紹介します。
GCPは、AWSのCloudTrailと同じように監査ログを取得できます。ただ、GCPの方がAWSと比べて監査ログの種類が多く、
- 管理アクティビティ監査ログ
- データアクセス監査ログ
- システム イベント監査ログ
- ポリシー拒否監査ログ
と4つの種類があります。
BigQueryはデフォルトの設定で、”管理アクティビティ監査ログ”, "データアクセス監査ログ", "システム イベント監査ログ" の取得が有効化されています。
実行されたSQLログは、データアクセス監査ログに格納されています。
試しに、以下のSQLを実行してみます。(データは一般公開データセットから適当に取得したデータです。)
select unique_key from `bigquery-public-data.austin_311.311_service_requests`;
このSQLの実行履歴があるかどうか、ログエクスプローラで確認します。
クエリビルダーで、リソースにはBigQueryを選択、ログ名はdata_accessを選択して、クエリを実行のボタンを押します。
そうすると、実行したSQL文をログエクスプローラから確認できます。
データアクセス監査ログは、プライベートな情報が混入可能性があるためなのか、Logging/プライベート ログ閲覧者またはプロジェクト/オーナーという IAM 役割の権限がないとアクセスできないようですので、ログが見えない時は権限不足がないか確認してください。
https://cloud.google.com/logging/docs/audit?hl=ja#data-access
また、データアクセス監査ログの保管期間は30日だそうなので、ある程度前の期間まで監査できるようにしたい場合はGCSやBigQueryに流すようにして、ログが削除される前に退避させるようにしたほうが良さそうです。
https://cloud.google.com/logging/docs/audit?hl=ja#audit_log_retention