はじめに

クラウドインテグレーション事業部 SRE第五セクション所属の浅岡 冬馬です。
今回は、Google Cloud 環境における監査ログについてのまとめと実際に設定してみた内容を記録します!

また、本記事はインフラチームがお届けするブログリレーの一つです!
既に公開されている記事もありますので、こちらから他のメンバーの投稿もぜひチェックしてみてください!

監査ログの基本

監査ログの種類

監査ログはGoogle Cloud リソースに対する操作の記録であり、「誰が、いつ、どこで、何をしたか」を把握するのに役立ちます。
Google Cloudにおける監査ログは以下4種類があります。

監査ログの種類 用途 デフォルト
管理アクティビティ監査ログ リソースの構成やメタデータを変更する操作に関するログ デフォルトで有効になっており、無効にすることはできません
データアクセス監査ログ ユーザーが作成・管理するデータへのアクセスに関するログ デフォルトではBigQueryのみ有効で、他のサービスでは明示的な有効化が必要です
システムイベント監査ログ Google Cloudシステム自身によって生成されるイベントに関するログ デフォルトで有効になっており、無効にすることはできません
ポリシー拒否監査ログ VPC Service Controlsによってリソースへのアクセスが拒否された場合に記録されるログ デフォルトで有効になっており、無効にすることはできませんが、Cloud Loggingから除外する設定は可能です

保存場所と保持期間

監査ログはデフォルトでCloud LoggingというGoogle Cloudのログ管理サービスに保存されます。
・_Required ログバケット: 管理アクティビティ監査ログとシステムイベント監査ログが保存されます。保持期間はデフォルトで400日間で、変更はできません。
・_Default ログバケット: データアクセス監査ログとポリシー拒否監査ログが保存されます。保持期間はデフォルトで30日間ですが、最長10年まで変更可能です。
・ユーザー定義ログバケット: ユーザーが作成したログバケットです。保持期間を自由に設定できます。
より長期間ログを保存したい場合は、Cloud StorageやBigQueryなどの他のGoogle Cloudサービスにエクスポートする設定も可能です。

監査ログの料金

管理アクティビティ監査ログとシステムイベント監査ログは無料で利用できます。
データアクセス監査ログとポリシー拒否監査ログは、ログの取り込み量と保存量に応じて課金されます。
Cloud Loggingについては、最初の50 GiB/月は無料ですが、30日を超えて保存する場合はストレージ費用も発生します。

料金の詳細については、以下ページをご参照ください。
https://cloud.google.com/bigtable/docs/audit-log-estimate-costs?hl=ja

集約設定の前提要件

  • 今回は、集約元のプロジェクトを clp-ci-sre4、集約先のプロジェクトを clp-ci-sre5 とします。
  • 集約するログは、デフォルト設定のものとし、追加で設定が必要なデータアクセス監査ログは設定対象外とします。
  • DefaultログとRequiredログの両方を集約対象とし、集約先にはCloud StorageバケットおよびCloud Loggingバケットを使用します。

設定手順

集約用のバケットを作成する

clp-ci-sre5 で集約用のCloud StorageバケットおよびCloud Loggingバケットを作成します。
Defaultログ用とRequiredログ用を分けるため、バケットは2台ずつ計4台作成します。

[Cloud Storage] >> [バケット] >> [作成]からバケットを作成します。
バケット名やロケーション、ストレージクラス等は任意で設定してください。

[Monitoring] >> [ログストレージ] >> [ログバケットを作成]からバケットを作成します。
バケット名やリージョン、保持期間は任意で設定してください。

集約元でログシンクを設定する。

clp-ci-sre4 でログを転送するためのログシンクを作成します。
バケットごとに設定が必要ですので、シンクは4つ作成します。

以下公式ドキュメントでも記載があるように、宛先によって設定するパス形式が異なります。
https://cloud.google.com/logging/docs/export/configure_export_v2?hl=ja#destination-paths

Cloud Loggingバケットの場合は以下のような形式となり、

logging.googleapis.com/projects/DESTINATION_PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME

Cloud Storageバケットの場合は、Google Cloud全体で一意の名前なので、プロジェクト等を指定する必要はなく、以下のような形式となります。

storage.googleapis.com/BUCKET_NAME

注意点としてCloud Storageバケットへのログ転送は初回のログが確認できるまで、2~3時間かかる場合があります。
Cloud Loggingバケットへのログ転送は設定後すぐに確認することが可能です。

ログ転送の確認

Cloud Storageバケットでの確認

テスト環境なので、生成されたログがまばらですが、以下のようにログが同期されていることがわかります。

・_Defaultログ

・_Requiredログ

Cloud Loggingバケットでの確認

こちらも同様にまばらですが、以下のようにログが同期されていることがわかります。

・_Defaultログ

・_Requiredログ

まとめ

本記事では、Google Cloudにおける監査ログの基本とCloud Storage、Cloud Loggingに対して簡単なログシンク設定を行いました。
Google Cloudの監査ログは、プロジェクトの透明性を高め、セキュリティリスクを低減するために重要です。
本記事での設定を参考に皆さんもご利用のプロジェクトに監査ログを設定してみてください。