TORIPIYO DIARY

recent events, IoT, programming, security topics

BigQueryで実行されたSQLを監査ログ(ロギング)から確認する

BigQueryは監査ログを取得できるのか、確認したのでその内容をメモを兼ねて紹介します。

GCPは、AWSのCloudTrailと同じように監査ログを取得できます。ただ、GCPの方がAWSと比べて監査ログの種類が多く、

  • 管理アクティビティ監査ログ
  • データアクセス監査ログ
  • システム イベント監査ログ
  • ポリシー拒否監査ログ

と4つの種類があります。

BigQueryはデフォルトの設定で、”管理アクティビティ監査ログ”, "データアクセス監査ログ", "システム イベント監査ログ" の取得が有効化されています。

実行されたSQLログは、データアクセス監査ログに格納されています。

試しに、以下のSQLを実行してみます。(データは一般公開データセットから適当に取得したデータです。)

select unique_key from `bigquery-public-data.austin_311.311_service_requests`;

f:id:ha107chan:20210419233626p:plain
SQLの実行

このSQLの実行履歴があるかどうか、ログエクスプローラで確認します。

クエリビルダーで、リソースにはBigQueryを選択、ログ名はdata_accessを選択して、クエリを実行のボタンを押します。

そうすると、実行したSQL文をログエクスプローラから確認できます。

f:id:ha107chan:20210419234816p:plain
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