Cloud Audit Logsを解説。Google Cloud(GCP)の証跡管理

記事タイトルとURLをコピーする

杉村です。Google Cloud (旧称 GCP) では Cloud Audit Logs (Cloud Audit Logging) という仕組みで、自動的に API コールの履歴が記録されています。しかし一部のログは有効化しなければ記録されないなど、中身を正しく理解しておく必要があります。当記事ではこの Cloud Audit Logs を解説します。

Cloud Audit Logs の基本

Cloud Audit Logs とは

Cloud Audit Logs (または Cloud Audit Logging) とは Google Cloud の API コール履歴を記録する仕組みです。監査対応やトラブルシューティングに活用することができます。この仕組みにより Google Cloud で「いつ、誰が、どこから、何をしたか」が自動的に記録されます。

一部の記録はデフォルトでオンになっており、設定変更によってさらに広い範囲のログが記録されるようになります。

API コールとは

まず、必要な前提知識を確認します。Cloud Audit Logs は、 Google Cloud に対する API コールを証跡管理の目的で記録するサービスです。

ここでいう API コールとは何でしょうか?

Amazon Web Services (AWS) を始め、多くのパブリッククラウドはインターネットに公開された Web API で操作されるようになっています。Google Cloud もほぼ全てのリソースが Web API で操作 (閲覧/作成/更新/削除) されています

例えば以下のような操作は全て Web API コールで行われています。

  • VM インスタンスの閲覧、作成、起動、停止...
  • Cloud Storage へのオブジェクトのList, Get, Put, Delete...
  • BigQuery へのクエリ、メタデータの閲覧、更新...

API コールと履歴の記録

コンソール画面で操作していたとしても、裏では Web ブラウザから Web API が発行されているのです。

Web API はインターネットに公開されていますが、誰でも API を叩けるわけではなく、認証・認可に Google アカウントや IAM が使われているというわけです。

ただし、以下のようなアクセスは Web API とは関係ありません。

  • VM への SSH アクセス
  • VM でホストされた Web サイトへの HTTP(S) アクセス

これらは VPC の機能により、接続元から VPC 内の各リソースに TCP/IP 的にリーチしています。

Cloud Audit Logs で記録できるログ

前述により Google Cloud サービスに対する Web API コールと、 VPC 上のアプリケーション等に対するネットワークアクセスの違いが明らかになったと思います。

Cloud Audit Logs ではリソースに対する Web API コールが記録されます

一方で VPC への TCP/IP 的なアクセスは記録されません

後者は サブネットの "フローログ" やアプリケーション側のログの役割です。

Cloud Audit Logs により、いつ誰が Google Cloud サービスに対して Web API コールを行い、リソースの 閲覧・作成・編集・削除 等を行ったかが記録されます。

こういった証跡管理は 「何かあった際の調査」「内部的犯行の抑止」「利用状況の分析」 などに効果を発揮します。

ログの出力先

Cloud Audit Logs により記録されたログは、 Google Cloud のログ管理サービスである Cloud Logging に保存されます。

Cloud Logging については以下の記事で詳細に解説していますので、ご参照ください。

blog.g-gen.co.jp

Cloud Audit Logs の詳細

Cloud Audit Logs の料金

Cloud Audit Logs の料金は、監査ログの種類ごとに異なります。

デフォルトで出力されるログについては、デフォルトの保存期間内であれば無料です。

明示的に有効化するログや、デフォルトを超えて保存するログに関しては、ログが出力される先の Cloud Logging 等の料金が適用されます。

4 つの監査ログ

Cloud Audit Logs では前述の通り、 Google Cloud サービスに対する Web API コールの履歴が記録されますが、その中にもいくつかの種類があります。
ログ種類の中にはデフォルトで有効化されているものもあれば、任意で利用者が有効化する必要があるものもあります。

No 名称 説明 料金 デフォルト
1 管理アクティビティ監査ログ (Admin Activity audit logs) リソースに対する更新系のAPIコールが記録される 無料 有効 (無効化できない)
2 データアクセス監査ログ (Data Access audit logs) リソースに対する読取系のAPIコールやデータの作成・変更・読取のAPIコールが記録される。有効化するとログ容量が大きくなる可能性があるため注意 有料 無効 (BigQueryのみデフォルト有効)
3 システム イベント監査ログ (System Event audit logs) ユーザではなくGoogle Cloudサービスによって行われたリソース構成変更が記録される 無料 有効 (無効化できない)
4 ポリシー拒否監査ログ (Policy Denied audit logs) VPC Service Controls機能で拒否されたAPIコールが記録される 有料 有効 (除外フィルタ設定可能)

参考: Cloud Audit Logs

No 1. 管理アクティビティ監査ログ

表の No 1 の管理アクティビティ監査ログは、デフォルトで有効化されています。

管理アクティビティ監査ログでは更新系 API ログが記録されます。

Google Compute Engine (GCE) のインスタンスが起動されたり、 Google Cloud Storage (GCS) のオブジェクトがアップロードされたり削除されるなどの記録がなされます。

更新系操作は重要度が高いため、デフォルトで有効となっています。
無効化できませんが、お金もかかりません。

No 2. データアクセス監査ログ

No 2 のデータアクセス監査ログは、読取系ログが記録されます。BigQuery を除きデフォルトではオフになっています。一般的に、読み取りアクセスは書き込みに比べて頻度が多いことから、ログデータ量が大きくなる可能性があります。

Google Cloud サービス単位で有効化することができますが、ログの取り込み量・保存量・期間に応じて料金が発生します。
利用料金は Cloud Logging の料金が適用されます。

多額の利用料金が発生する可能性もあるため、特に重要なデータを扱う可能性があるサービスを選定し、必要性とコストのトレードオフを検討してから有効化しましょう。
例えば、機密データが保存されている Cloud Storage バケットを置いてあるプロジェクトのみ有効化する、などです。

No 3. システム イベント監査ログ

利用者のアクションではなく、 Google のサービス側のアクションによりリソースに変更があった際の記録がされます。

デフォルトで記録され、無効化できません。料金も発生しません。

No 4. ポリシー拒否監査ログ

VPC Service Controls のポリシーが違反されたときに記録されます。

有料ですが、 除外フィルタ設定 により記録されるログをフィルタして料金を節約することができます。

ログの保存期間

デフォルトで有効化されている監査ログは組織・各フォルダ・各プロジェクトに初めから存在する ログバケット である _Required に保存され、 400日間 保持されます。

ログバケットとは、Cloud Loggingサービスのログを保存する独自の保存領域であり、Cloud Storageバケットとは名前が似ていますが別物です。

ログバケット _Required の保存期間は変更することができないため、400日以上の保存期間が要求される場合は、 Cloud Logging で新しい シンク (※) を作成して長い保存期間を設定したログバケットやCloud Storageバケット、BigQuery等にログを保存することになります。

(※ シンク: Cloud Logging の設定であり Cloud Logging に送られてきたログの行き先をフィルタに応じてルーティングするための設定 )

またデータアクセス監査ログは単純に有効化すると _Default ログバケットに保存され、このデフォルトの保持期間は30日間です。
より長い保存期間が求められる場合、 _Default ログバケットの保存期間を変更するか、新しいシンクを作成してください。

(応用編) 監査ログの集約

集約の必要性

前述の通り、デフォルトでは監査ログは組織・各フォルダ・各プロジェクトのログバケット _Required に保存されます。

以下のような要件がある場合、 ログ集約用のプロジェクト を作成し、その中にログ集約用ログバケットを作成して、組織レベルで 集約シンク を作成することで、組織配下の全ての監査ログを一か所に集約することができます。

  • 複数プロジェクトのログを集約してSIEMツール等で分析する必要がある場合
  • 監査などの理由で監査ログを第三者に提出する必要がある場合
  • 複数プロジェクトを横断して監査ログをクエリする必要がある場合

ただしこの場合、新しいログバケットへのデータ取り込みに対して、ログの取り込み量・保存量・期間に応じて料金が発生する点に留意しましょう。

シンクによるログの集約

設定手順

設定手順は以下を参考にします。

上記ドキュメントの設定手順は以下のような流れとなっています。

  1. ログを保存するためのログバケットを作成
  2. 組織レベルでシンクを作成
  3. シンク用のサービスアカウントに IAM ロールを設定

難しい手順ではありませんが、 IAM ロールを付与するプロジェクトを間違えないように注意しましょう。
また、場合によってはログのボリュームが膨大になり利用料金がかさむため、必要に応じて最小限のログが収集されるよう フィルタ設定を検討しましょう。

杉村 勇馬 (記事一覧)

執行役員 CTO / クラウドソリューション部 部長

元警察官という経歴を持つ現 IT エンジニア。クラウド管理・運用やネットワークに知見。AWS 12資格、Google Cloud認定資格11資格。X (旧 Twitter) では Google Cloud や AWS のアップデート情報をつぶやいています。