Cloud Audit LogsでGoogle Cloud(GCP)の証跡管理

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

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

今回は Cloud Audit Logs にフォーカスして解説します。

前提知識

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 へのクエリ、メタデータの閲覧、更新...

コンソール画面で操作していたとしても、 裏ではみなさんの 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 の仕様

4 つの監査ログ

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

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

参考: Cloud Audit Logs

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

表の No 1 の管理アクティビティ監査ログは、デフォルトで有効化されています。
リソースへの更新が記録されます。

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

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

f:id:ggen-sugimura:20211013183540p:plain
シンクによるログの集約

設定手順

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

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

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

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

杉村 勇馬 (記事一覧)

クラウドソリューション部 部長

クラウド管理運用やネットワークに知見あり。AWSの全12資格をコンプリートしたので、次はGoogle Cloudの認定資格を狙っている。現在、Google Cloud認定資格は3冠。

2021年12月現在、ハマっているものはマーベル (遅い)