【企業セキュリティ】Google Cloud 集約シンクで一元的に組織のログを管理する

【企業セキュリティ】Google Cloud 集約シンクで一元的に組織のログを管理する

Google Cloudでは「集約シンク」という機能を利用することで、組織のセキュリティ担当者が組織またはフォルダ配下のプロジェクトの挙動を一元的に管理できます。
Clock Icon2024.09.19

概要

集約シンクとは

集約シンクを使用すると、組織またはフォルダの Google Cloud リソースによって生成されたログを組み合わせて、一元管理された場所にルーティングできます。

ということで、集約シンクとは組織またはフォルダレベルでログを一元的に集めることができるため、企業運用の際にぜひ利用したい機能です。

スクリーンショット 2024-09-19 11.40.04

セキュリティの管理者が「誰がいつどこで何をした」かを組織/フォルダ配下のプロジェクト全てを把握することができ、複数のリソースから生成されるこのログを指定した場所(例:Cloud Storageバケット)に転送することができます。

シンクの数はフォルダまたは組織ごとに最大200個を作成可能で、集約シンクには次の2つのタイプが存在します。

インターセプトモード

インターセプトモードは集約対象のログを集約先のみに転送/保存します。非インターセプトと比較した時のメリットは、元のプロジェクトでのログの保存を最小限に抑えることでストレージコストを削減し、ログの重複を防ぐことができます。

スクリーンショット 2024-09-19 11.44.30

大量のログデータを扱う場合や、厳格な中央管理が必要な場合に有効です。ただし、元のプロジェクトでのログの可視性が制限されるため、アクセス権限の設定などには注意が必要となります。

また、Ruquiredシンクはログとして無効化できないためそのプロジェクトに残ります。

非インターセプトモード

非インターセプトモードは集約対象のログを元のプロジェクトと集約する保存先の両方に保存します。
元のリソースでのログの可視性を維持することで、プロジェクトと集約先の担当者どちらもログについて確認することができます。

スクリーンショット 2024-09-19 11.44.02

フォルダのログを集約する

今回は組織にログを集約するのではなく、フォルダレベルでログを集約していきます。フォルダレベルでシンクを作成するメリットとしては、部署ごとにログを一元的に管理することができため、それぞれの部門セキュリティ担当者ごとにロールを与えることで権限分掌を実現するさせることができます。

そして今回は非インターセプトの形式でログシンクを作成していきたいと思います。

フォルダの選択

Pocフォルダにログを集約していきます。シンクの対象はフォルダ配下にある2つのプロジェクトになります。
スクリーンショット 2024-09-11 11.23.05

シンクする宛先の種類

主に、以下のリソースにログを流すことができます。今回はCloud Storageにログを集約してみます。

  • Cloud Logging バケット
  • BigQuery データセット
  • Cloud Storage バケット
  • Pub/Sub トピック
  • Splunk
  • その他

必要な権限

公式ドキュメントには以下のロールが付与されていると、ログシンクの作業ができると記載されています。もちろんオーナーであれば大体の操作ができるので、今回は権限を絞ったLogging管理者で実行していきたいと思います

  • オーナー(roles/owner)
  • Logging 管理者(roles/logging.admin)
  • ログ構成書き込み(roles/logging.configWriter)

集約シンクの作成

集約したいフォルダでログルーターに移動して、シンクを作成していきます。

スクリーンショット 2024-09-11 11.19.15

以下のようにログシンクを設定しました。(注意:シンク先にCloud Storageを選択していますが、IDの指定に[]は必要ありません)
スクリーンショット 2024-09-19 10.28.01

また、包含フィルタ(シンクに含めるログの選択)には以下のようにBiqQueryのデータアクセス監査ログとアクティビティログのみエクスポートするように設定しました。

(LOG_ID("cloudaudit.googleapis.com/data_access") OR 
 LOG_ID("cloudaudit.googleapis.com/activity")) AND
resource.type="bigquery_resource"

確認するとログルーターの画面にて、作成したシンクを確認することができます。
スクリーンショット 2024-09-11 11.42.48

BigQueryでデータセットの作成をしたので、実際にログがルーティングされているかを確認してみましょう。
Cloud Storage内にログ用のフォルダが作成されており、ログがCSV形式で生成されています。
スクリーンショット 2024-09-19 8.58.35

中身はこんな感じです。(JSON形式のログファイル)

{"insertId":"r7ray4e2gh2u","logName":"projects/[プロジェクトID]/logs/cloudaudit.googleapis.com%2Factivity", "protoPayload":{"@type":"type.googleapis.com/google.cloud.audit.AuditLog","authenticationInfo":
{"principalEmail":"[メールアドレス]"}, "authorizationInfo":[{"granted":true,"permission":"bigquery.datasets.create", "resource":"projects/[プロジェクトID]","resourceAttributes":
{}}], "methodName":"datasetservice.insert", "requestMetadata":{"callerIp":"[IPアドレス]", "callerSuppliedUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/128.0.0.0 Safari/537.36,gzip(gfe), gzip(gfe)", "destinationAttributes" : {}, "requestAttributes":{}},"resourceLocation":{"currentLocations": ["asia-northeast1"]}, "resourceName":"projects/[プロジェクトID]/datasets", "serviceData":{"@type":"type.googleapis.com/google.cloud.bigquery.logging.v1.AuditData", "datasetInsertRequest":{"resource":{"acl":{},"datasetName": {"datasetId":"[データセットID]", "projectId":"[プロジェクトID]"},"info":{}}},"datasetInsertResponse":{"resource":{"acl":{"entries":[{"role":"WRITER","specialGroup":"PROJECT_WRITERS","viewName":{}},{"role":"OWNER","specialGroup":"PROJECT_OWNERS","viewName":{}},
{"role":"OWNER","specialGroup":"PROJECT_OWNERS","userEmail":"[メールアドレス]","viewName":{}},{"role":"READER","specialGroup":"PROJECT_READERS","viewName":{}}]},"createTime":"2024-09-
18T06:41:29.324Z","datasetName":{"datasetId":"[データセットID]","projectId":"[プロジェクトID]"},"info":{},"updateTime":"2024-09-18T06:41:29.324Z"}}},"serviceName":"bigquery.googleapis.com","status":
{}}, "receiveTimestamp":"2024-09-18T06:41:30.811973634Z", "resource":{"labels":{"project_id":"[プロジェクトID]"},"type":"bigquery_resource"},"severity":"NOTICE","timestamp":"2024-09-18T06:41:29.917967Z"}

このように集約シンクを設定することで、BigQueryのデータアクセス監査ログとアクティビティログが指定したCloud Storageにエクスポートされ、フォルダレベルで管理できるようになりました。

今回はデータセットの作成のみの実行のため、ログの量は少ないですが、テーブルの作成クエリの実行などを行うと、通常のログと同様にエクスポート先にも増えていきます。

まとめ

企業でクラウドを本格的に運用するとなると、一元的なログ管理は欠かせません。Google Cloudでは、今回ご紹介した集約シンクという機能を利用することで、組織のセキュリティ担当者が組織またはフォルダ配下のプロジェクトの挙動を一元的に管理することができます。

ログの種類の選定も重要です。データアクセス監査ログなどをすべて有効化してしまうと、予期せぬコスト増加につながる可能性があります。これを回避するには、今回ご紹介した条件フィルタを活用し、BigQueryのログのみを収集するといった設定を行うことで、現実的なログ管理が可能になります。

今後も、Google Cloudを組織で運用するために必要な知識をブログで発信していきますので、ぜひご覧ください。

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.