
Google Cloud の Cloud Audit Logs とは?
はじめに
Google Cloud の Cloud Audit Logs は、ログ分析や管理のためのサービスである Cloud Logging で収集可能な「監査ログ」を生成するサービスです。
Cloud Audit Logs で生成される監査ログは、API 操作やシステムイベントなど複数種類あり、ログの種別によって無料/有料、有効化が必要なものなどが存在します。
ログを運用管理するうえで極めて重要となる監査ログですが、むやみに有効化して取得することで大幅なコスト高騰を招く可能性もあります。適切なログを、適切な期間、適切な場所で管理するため、監査ログにはどのような種類があり、どのような特徴があり、Google Cloud でどのように扱われるか をこの記事で学んでいきましょう。
概要
Cloud Audit Logs は API 操作やシステムイベントなどの監査ログを生成するサービスです。Cloud Audit Logs には以下4種類の監査ログがあります。
種類 | 概要 | デフォルト設定 | 設定変更可否 | 料金 |
---|---|---|---|---|
管理アクティビティ監査ログ | 管理書き込み に該当する API 操作ログ | 有効 | 無効化できない | 無料 |
データアクセス監査ログ | 管理読み取り/データ読み取り/データ書き込み に該当する API 操作ログ | 無効(BigQuery以外) | 有効化/無効化可能 | 有料 |
システムイベント監査ログ | Google Cloud リソース自体が生成するログ | 有効 | 無効化できない | 無料 |
ポリシー拒否監査ログ | ユーザまたはサービスアカウントのアクセス拒否ログ | 有効 | 無効化できないが Cloud Logging で収集しないようにログフィルタを構成できる | 有料 |
管理アクティビティ監査ログ と データアクセス監査ログ は、いずれも IAM ユーザやサービスアカウントによる API 操作のログです。
API 操作のうち「管理書き込み」に該当する操作が管理アクティビティ監査ログに該当し、それ以外がデータアクセス監査ログとなります。
4種の監査ログのうちデータアクセス監査ログは BigQuery 以外のログが無効化されているため、必要に応じて有効化する必要があります。
システムイベント監査ログ は、Google Cloud リソースの変更などに対し、Google Cloud リソース自体が生成するログです。例えば、ユーザが API リクエストで Google Cloud リソースの作成指示をすると、API リクエスト自体は「管理アクティビティ監査ログ」として生成されますが、その後の Google Cloud リソースの作成処理プロセスで発生するログは「システムイベント監査ログ」に該当します。
API 操作をトリガーとしない、コンピュートリソースのスケールアウトやスケールイン動作などもシステムイベント監査ログとなります。
ポリシー拒否監査ログ は、IAM ユーザやサービスアカウントのアクセス拒否によって発生するログです。
なお、上記「料金」に有料/無料を記載していますが、厳密には Cloud Audit Logs によるログ生成では費用は発生せず、Cloud Logging のログバケットに保存されることで費用が発生します。詳細は後述します。
管理アクティビティ監査ログとデータアクセス監査ログ
API 操作で発生するログには 4 種類のログがあり、前述の通り「管理書き込み」が管理アクティビティ監査ログ、それ以外がデータアクセス監査ログとなります。
ログタイプ | 概要 | 監査ログ種類 |
---|---|---|
管理書き込み(ADMIN_WRITE) | リソースの構成またはメタデータを変更するオペレーション | 管理アクティビティ監査ログ |
管理読み取り(ADMIN_READ) | リソースの構成またはメタデータを読み取るオペレーション | データアクセス監査ログ |
データ読み取り(DATA_READ) | ユーザデータを読み取るオペレーション | データアクセス監査ログ |
データ書き込み(DATA_WRITE | ユーザデータを書き込むオペレーション | データアクセス監査ログ |
Cloud Storage(storage.googleapis.com) に対する操作を例に挙げてみます。Cloud Storage に対するログタイプごとの API 操作を一部抜粋して以下に記載します。(引用元)
ログタイプ | 操作 |
---|---|
管理書き込み | IAM ポリシーの設定 / 変更 |
バケットの作成 | |
バケットの削除 | |
バケットのメタデータの更新 | |
管理読み取り | IAM ポリシーの取得 |
オブジェクトの ACL の取得 | |
バケットのメタデータの取得 | |
バケットのリストの表示 | |
データ読み取り | オブジェクトデータの取得 |
オブジェクトメタデータの取得 | |
オブジェクトのリスト | |
フォルダのメタデータの取得 | |
データ書き込み | オブジェクトの作成 |
オブジェクトの削除 | |
フォルダの作成 | |
フォルダの削除 |
ざっくりですが、どのようなログがどのログタイプに該当するかイメージできましたでしょうか?
もちろんですが API 操作ログでどのようなログが取得できるかは Google Cloud サービスによって異なります。
それぞれの Google Cloud サービスごとに取得できるログの種類やログタイプは以下ドキュメントから確認できます。
生成された監査ログの保存先
Cloud Audit Logs によって生成されたログは、デフォルトで Cloud Logging の ログバケット に保存されます。
ログバケットとは、Cloud Logging のエクスプローラーで検索や分析をする際に参照するバケットです。Cloud Logging のログバケットにはデフォルトで _Required
と _Default
というログバケットが存在します。_Required
と _Default
はそれぞれ以下の仕様となっています。
ログバケット | 料金 | 保存期限 | 設定変更可否 | 保存されるログの種類 |
---|---|---|---|---|
_Required | 無料 | 400日 | 不可 | 管理アクティビティ監査ログ |
システムイベント監査ログ | ||||
_Default | 有料 | 30日(デフォルト) | 保存期間、保存するログなどの設定を変更可能 | _Required に保存されるログ以外 |
監査ログの保存イメージ
冒頭の概要で、料金の有料/無料を記載しましたが、「データアクセス監査ログ」と「ポリシー拒否監査ログ」が有料となるのは _Default
に保存されるためです。ログバケットにどのログを保存するかは ログシンク というログの転送ルール設定に記述されており、 _Default
のログシンクを変更することで保存すべき監査ログを絞ることもできます。
補足ですが、アプリケーションログやログエージェントが収集したログなど監査ログ以外のログもデフォルトで _Default
に保存されます。
ログシンクは新規にカスタム作成することもでき、ログの転送先として Cloud Storage や BigQuery、Cloud Pub/Sub を指定することも可能です。
データアクセス監査ログの有効化
データアクセス監査ログは大量のログが出力される可能性があることからデフォルトで無効化(BigQuery以外)されています。たとえば、Google Cloud コンソール上をクローリングするだけで都度読み取りのアクセスが発生し大量のログが出力されます。
しかし、公式ドキュメントにも以下の記載がある通り 有効化を推奨 しています。
データアクセス監査ログは、Google サポートでアカウントの問題をトラブルシューティングする際に役立ちます。そのため、可能な場合は、データアクセス監査ログを有効にすることをおすすめします。
しかし、むやみに全てのログを有効化すると大量のログ出力により大幅なコスト高騰を招く可能性があります。データアクセス監査ログはログタイプごとの有効/無効、サービスごとの有効/無効を設定できますので、有効化する場合はログ取得の目的に合わせ 何を取得するか をしっかり検討しましょう。
データアクセス監査ログは組織/フォルダ/プロジェクト単位で有効化が可能で、設定を継承します。親リソースで有効化された設定は無効化できません。
Cloud Console だと [IAM と管理] -> [監査ログ] から設定が可能です。
[デフォルトの構成]から、サービス全体に対する「管理書き込み」 「データ読み取り」 「データ書き込み」の有効/無効が設定できます。
また、各サービスごとに「管理書き込み」 「データ読み取り」 「データ書き込み」の有効/無効を設定することもできます。
監査ログ設定画面
各種監査ログの検索方法
Cloud Logging ログバケットに保存された監査ログは ログエクスプローラー から検索することができます。
各監査ログは以下のような logname を持ちます。
監査ログ種類 | logname |
---|---|
管理アクティビティ監査ログ | cloudaudit.googleapis.com%2Factivity |
データアクセス監査ログ | cloudaudit.googleapis.com%2Fdata_access |
システムイベント監査ログ | cloudaudit.googleapis.com%2Fsystem_event |
ポリシー拒否監査ログ | cloudaudit.googleapis.com%2Fpolicy |
厳密には以下のようにログが発生元のリソース(以下の場合はプロジェクト)も含めた名前となります。
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity
実際のログは以下のようになります。logName
フィールドを確認することで監査ログの種類が確認できます。以下のログは「管理アクティビティ監査ログ」です。
{
insertId: "-2r1vane3vyor"
logName: "projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
protoPayload: {9}
...(省略)...
receiveTimestamp: "2025-03-01T06:19:08.367768385Z"
resource: {2}
...(省略)...
severity: "NOTICE"
timestamp: "2025-03-01T06:19:08.330123Z"
}
ログエクスプローラーから検索する場合、以下のようにログ名を絞り込むことで簡単に監査ログをフィルタすることができます。
おわりに
Cloud Audit Logs が生成する監査ログの種類や特徴について理解いただけましたでしょうか。
監査ログの運用戦略を立てる際は、セキュリティ要件とコスト効率のバランスを慎重に検討することが重要です。
Cloud Audit Logs の種類や特徴を良く理解し、今一度自社のログ運用戦略を振り返っていただけたら幸いです。