クラウド上の全ての操作を記録する仕組み。いつ、誰が、何をしたかを5分で理解する
クラウド環境では、物理的なアクセスログや操作履歴が見えません。誰がいつ何をしたかを追跡できなければ、セキュリティインシデントが発生した時に原因を特定できず、コンプライアンス要件も満たせません。
オンプレミスと違い、クラウドでは「誰が操作したか」が目に見えない。リソースが突然削除されても、犯人が分からない状態になる。
PCI DSS、HIPAAなどの法令や規制では、システムへのアクセス記録の保持が義務付けられている。監査証跡がないと法的要件を満たせない。
不正アクセスや情報漏洩が発生した際、「何が起こったのか」を事後調査できなければ、被害範囲の特定も再発防止もできない。
Google Cloud Audit Logsは、Google CloudへのAPI呼び出しを記録します。コンソールでボタンをクリックする操作も、gcloudコマンドも、全てAPIに変換されて実行されるため、これらの操作履歴が自動的に記録されます。
操作が実行された正確な日時(タイムスタンプ)。ミリ秒単位で記録される。
操作を実行したユーザーのメールアドレスまたはサービスアカウント。認証情報が含まれる。
リクエスト元のIPアドレス。外部からのアクセスか内部ネットワークからかを識別できる。
実行されたAPIメソッド名、対象リソース、操作の結果(成功/失敗)が記録される。
Google Cloud Audit Logsは、記録する操作の種類によって4つのログタイプに分類されます。それぞれ有効化の必要性、保存先、料金が異なります。
記録内容: リソースの構成やメタデータを変更する操作。つまり、何かを作成・変更・削除する全ての管理操作が対象。
保存先: _Requiredログバケット(400日間保存、無料)
特徴: 無効化できない。Google Cloudを使う限り必ず記録される。
記録内容: ユーザーが実際のデータを読み書きする操作。BigQueryのテーブルを読む、Cloud Storageのファイルをダウンロードするなど。
保存先: _Defaultログバケット(30日間保存)
特徴: BigQuery以外はデフォルトで無効。有効化すると大量のログが生成され、料金が高額になる可能性がある。個人情報を扱うサービスなど、重要なリソースに限定して有効化するのが推奨。
記録内容: ユーザーの直接操作ではなく、Google Cloud側が自動的に実行する操作。システムの自動処理による構成変更。
保存先: _Requiredログバケット(400日間保存、無料)
特徴: 無効化できない。ユーザー操作と区別して、システムの自動動作を追跡できる。
記録内容: IAM権限やセキュリティポリシー違反により、アクセスが拒否された操作。「権限がありません」エラーの記録。
保存先: _Defaultログバケット(30日間保存)
特徴: 不正アクセスの試行を検知できる重要なログ。攻撃者が権限を探っている痕跡を発見できる。除外フィルタで保存を防ぐことは可能だが、セキュリティ上推奨されない。
生成されたログは、Cloud Loggingの「ログバケット」という保存場所に自動的に格納されます。Google Cloudは各プロジェクトに2つのログバケットを自動作成します。
管理アクティビティ監査ログ
システムイベント監査ログ
400日間(変更不可)
完全無料(取り込みも保存も)
削除・無効化・設定変更不可。必ず記録される。
重要な管理操作を確実に記録し、法令順守やセキュリティ調査に使用。
データアクセス監査ログ
ポリシー拒否監査ログ
その他のアプリケーションログ
30日間(変更可能、最大3,650日)
取り込み: 50GiB/月まで無料
保存: 30日間無料、それ以降は有料
保存期間を変更可能。除外フィルタで保存を制御できる。
詳細なデータアクセス追跡や、短期的なトラブルシューティング。
Google Cloud Audit Logs自体は無料ですが、ログを保存するCloud Loggingに料金が発生します。料金は「取り込み量」と「保存量」の2つの軸で計算されます。
月50GiBまで完全無料
月50GiBを超えた分
ログがCloud Loggingに送信された時点で課金される。一度送信されたログは削除しても料金は戻らない。
_Requiredバケット: 無期限無料
_Defaultバケット: 30日間無料
30日を超えて保存する分
保存期間を延長した場合のみ発生。_Defaultバケットの保存期間を90日に設定すると、31日目〜90日目の分に課金される。
頻繁にアクセスされるCloud StorageバケットやBigQueryテーブルでデータアクセスログを有効化すると、1日で数十GiB〜数百GiBのログが生成されることがあります。
例: 1秒に100回のリクエストがあるサービスでは、1ヶ月で約260万リクエスト。1リクエストあたり2KBのログとすると、月5GiB以上のログが生成されます。これが複数のサービスで発生すると、月額料金が数万円になることも。
デフォルトの保存期間(管理アクティビティ400日、データアクセス30日)では不足する場合、ログを外部にエクスポートして長期保存できます。また、SIEM(セキュリティ情報イベント管理)ツールと連携することで、リアルタイムな脅威検知が可能になります。
ログの転送は「ログシンク(Log Sink)」という仕組みで実現します。シンクは、特定の条件に合致するログを指定した宛先に自動転送する設定です。
logName:"cloudaudit.googleapis.com"
これにより、全ての監査ログが自動的にCloud Storageに日次でエクスポートされます。
監査ログは理論だけでなく、実際のセキュリティインシデントやトラブルシューティングで威力を発揮します。以下は具体的な活用シーンです。
状況: 攻撃者が侵入に成功し、永続的なアクセスのためにサービスアカウントキーを不正に作成しようとしている。
この例では、監査ログがなければ攻撃者の永続的アクセスを許してしまい、さらなる被害につながる可能性がありました。
状況: 本番環境のCloud Storageバケットが突然削除され、サービスが停止。誰が削除したのか不明。
監査ログがなければ、誰が削除したのか特定できず、再発防止策も立てられませんでした。
状況: 個人情報を含むBigQueryテーブルに、通常アクセスしないユーザーからアクセスがあった。
データアクセスログは有料ですが、個人情報を扱うリソースでは必須の投資と言えます。
状況: 外部監査で「過去1年間の全ての管理操作履歴」の提出を求められた。
管理アクティビティログは400日間保持されるため、1年分のログが確実に残っていました。より長期の保管が必要な場合は、Cloud Storageへの転送が有効です。
Google Cloud Audit Logsを効果的に活用するには、適切な設定が重要です。全てを有効化すれば安全ですが、コストが膨大になります。逆に最小限しか記録しないと、いざという時に必要な情報がありません。
これらは設定せずとも記録されるため、まず何もしなくても基本的な監査は機能しています。
コスト: 無料(無料枠内)
コスト: 月$10〜50程度(ログ量次第)
コスト: 月$100〜1000+(規模とログ量次第)