🕵️

Microsoft Sentinel に Google Cloud の監査ログを取り込む

2023/12/18に公開

はじめに

こんにちは! クラウドエース SRE ディビジョンの小田です。
今回は、Google Cloud と Microsoft Azure のマルチクラウド環境におけるログ監視および、攻撃分析・検出を行うために Microsoft Sentinel へ Google Cloud の監査ログを取り込む設定方法について解説します。

本記事を作成することとなった背景

とあるプロジェクトで Security Information and Event Management (以下、SIEM)、Security Orchestration, Automation and Response (以下、SOAR) 製品が必要となったが、お客様は Microsoft Sentinel を既に運用されており、高いコストが掛かる SIEM 製品を複数運用いただくより Microsoft Sentinel へ統合すべきと判断したことから記事の内容を検証しました。

本記事の目標

  • Google Cloud の監査ログ (Cloud Audit Logs) を Microsoft Sentinel に取り込む
  • 取り込んだ監査ログを Microsoft Sentinel で確認する

Microsoft Sentinel is 何

Microsoft Sentinel (旧称 Azure Sentinel) は、Microsoft の SIEM、SOAR サービスです。

Microsoft 製品や他のクラウド、SaaS 製品などからログを取り込み相関分析結果を確認したり、セキュリティ インシデント レスポンスの自動化を行うことができます。

Google Cloud だと Chronicle SIEM、SOAR にあたるようなサービスです。
https://cloud.google.com/chronicle/docs?hl=ja

Microsoft Sentinel の特徴としては、以下のログの取り込みが無料です。

  • Azure アクティビティ ログ
  • Office 365 監査 ログ (SharePoint、 Exchange、Teams)
  • セキュリティ アラート (Microsoft Entra ID Protection 、Microsoft Defender for Office 365、Microsoft Defender for Cloud、Microsoft Defender for IoT 、Microsoft Defender XDR、Microsoft Defender for Endpoint、Microsoft Defender for Identity、Microsoft Defender for Cloud Apps)

詳しくは Microsoft 公式ドキュメントをご確認ください。
https://learn.microsoft.com/ja-jp/azure/sentinel/billing?tabs=simplified%2Ccommitment-tiers#free-data-sources

準備

ログの取り込み先がないと何もできないので、はじめに Microsoft Sentinel の環境を作成します。
事前に Microsoft のアカウントとサブスクリプション、リソース グループを用意してください。

Azure Portal で Microsoft Sentinel を検索し、サービスのページへ移動します。

1

Microsoft Sentinel の作成をクリックします。

2

Microsoft Sentinel は Log Analytics ワークスペースにインストールされるためワークスペースを作成します。

3

各項目を入力して作成します。

4

作成した Log Analytics ワークスペースに Microsoft Sentinel を追加します。

5

Microsoft Sentinel の環境準備は完了です。

6

Google Cloud 監査ログ取り込み設定

取り込み先の Microsoft Sentinel の用意ができたので、Google Cloud 監査ログ (Cloud Audit Logs) を取り込むための設定を行なっていきます。

Microsoft 公式ドキュメント
https://learn.microsoft.com/ja-jp/azure/sentinel/connect-google-cloud-platform

監査ログの取り込み手順

Google Cloud の監査ログを取り込む設定の流れは以下の通りです。

  1. Workload Identity の設定
  2. サービス アカウントの設定
  3. Pub/Sub の設定
  4. ログルーター シンクの設定
  5. Google Cloud のログを取り込むためのコネクタを作成

Workload Identity の設定

Google Cloud コンソールで、IAM と管理 > Workload Identity の連携に移動し、Workload Identity プールを作成します。

Azure との Workload Identity 連携を構成する方法について詳しくは、Google Cloud 公式ドキュメントをご確認ください。
https://cloud.google.com/iam/docs/workload-identity-federation-with-other-clouds?hl=ja#azure

ID プールを作成する

各項目を以下のように設定しました。

  • 名前: sentinel-workload-identity-pool
  • プール ID: ハイフンなしの Microsoft Entra テナント ID
    ※ Microsoft Entra ID > 概要 > テナント ID から確認できます。
  • 説明: 任意で入力

7

プールにプロバイダを追加する

各項目を以下のように設定しました。

  • プロバイダの選択: OpenID Connect (OIDC)
  • プロバイダ名: sentinel-identity-provider
  • 発行元 (URL): https://sts.windows.net/33e01921-4d64-4f8c-a055-5bdaffd5e33d
  • オーディエンス: 許可するオーディエンス
  • 対象 1: api://2041288c-b303-4ca0-9076-9612db3beeb2

8

プロバイダの属性を構成する

以下の設定を入力し保存します。
OIDC 1: assertion.sub

9

サービス アカウントの設定

Google Cloud コンソールで、IAM と管理 > サービス アカウントに移動し、
sentinel-service-account@<project-id>.iam.gserviceaccount.com というサービス アカウントを作成します。

サービス アカウントには以下の基本ロールを付与しました。

  • ロール: Pub/Sub 閲覧者
    • Pub/Sub Viewer (roles/pubsub.viewer)
  • ロール: Pub/Sub サブスクライバー
    • Pub/Sub Subscriber (roles/pubsub.subscriber)

10

必要に応じてカスタムロールを作成して最小限の権限にすることも可能です。
カスタムロールを作成する場合、以下の権限が必要です。
pubsub.subscriptions.consumepubsub.subscriptions.get

続いて、サービス アカウントに対するプリンシパルのアクセス権を付与します。

  • 新しいプリンシパル: principalSet://iam.googleapis.com/projects/<project-id>/locations/global/workloadIdentityPools/<プール名 (Entra テナント ID)>/*
  • ロール: Workload Identity ユーザー
    • Workload Identity User (roles/iam.workloadIdentityUser)

11

Pub/Sub の設定

続いて Pub/Sub の設定を行います。

Pub/Sub トピックの作成

Google Cloud コンソールで、Pub/Sub > トピック に移動し、トピックを作成します。

12

各項目を以下のように設定しました。

  • トピック ID: sentinel-topic
  • 暗号化: Google が管理する暗号鍵

13

Pub/Sub サブスクリプションの作成

続いて Pub/Sub サブスクリプションを作成します。

各項目を以下のように設定しました。

  • サブスクリプション ID: sentinel-subscription-auditlogs
  • Cloud Pub/Sub トピックを選択してください: projects/<project-id>/topics/sentinel-topic
  • 配信タイプ: pull
  • メッセージ保持期間: 7日
  • 有効期限: 31日
  • 確認応答期限: 10秒
  • 再試行ポリシー: すぐに再試行

14
15

ログルーター シンクの設定

Google Cloud コンソールで、ロギング > ログルーター シンク に移動し、監査ログを送るためのログルーター シンクを作成します。

シンクの詳細

各項目を以下のように設定しました。

  • シンク名: audit-logs-organization-sentinel-sink
  • シンクの説明: 任意で入力

16

シンクの宛先

各項目を以下のように設定しました。

  • シンクサービスの選択: その他のリソース
  • シンクの宛先: pubsub.googleapis.com/projects/<project-id>/topics/sentinel-topic

17

シンクに含めるログの選択

今回は監査ログを指定したいため、以下を指定しました。
Include logs ingested by this organization and all child resources

18

シンクに含めないログの選択

今回は除外フィルタは設定しません。
内容に問題がなければシンクを作成をクリックします。

19

ログルーター シンクの設定は以上です。

Google Cloud のログを取り込むためのコネクタを作成

Azure portal > Microsoft Sentinel > コンテンツ ハブ に移動し、 検索バーに「Google Cloud Platform Audit Logs」を入力します。

Google Cloud Platform Audit Logs を選択し、インストールします。

20

21

作成画面で以下の項目を入力し作成します。

  • サブスクリプション
  • リソース グループ
  • Workspace

22

Microsoft Sentinel > 構成 > データコネクタに「GCP Pub/Sub Audit Logs (Preview)」が作成されました。

新しいコレクターの接続

作成された GCP Pub/Sub Audit Logs (Preview) のコネクタ ページを開きます。

23

Google Cloud プロジェクトと接続するため新しいコレクターの追加をクリックし、Google Cloud と接続するための情報を入力します。

各項目を以下のように設定しました。
Account Details

  • プロジェクト ID: Google Cloud のプロジェクト ID
  • プロジェクト番号: Google Cloud のプロジェクト番号
  • GCP サブスクリプション名: sentinel-subscription-auditlogs

Configure access

  • ワークロード ID プールの ID: Microsoft Entra テナント ID
  • サービス アカウント メール: sentinel-service-account@<project-id>.iam.gserviceaccount.com
  • ワークロード ID プロバイダーのID: sentinel-identity-provider

24

Google Cloud プロジェクトとの接続が成功しました。

25

動作確認

Microsoft Sentinel に Google Cloud の監査ログが届いているか確認します。
GCP Pub/Sub Audit Logs コネクタで取り込んだログは GCPAuditLogs というテーブル名で検索できます。

Microsoft 公式ドキュメントで列名を確認し、適当な Kusto クエリを実行します。
https://learn.microsoft.com/ja-jp/azure/azure-monitor/reference/tables/gcpauditlogs

GCPAuditLogs
| top 20 by Timestamp desc
| project Timestamp=datetime_add('hour', 9, Timestamp), MethodName, GCPResourceName, RequestMetadata

26

Microsoft Sentinel から Google Cloud の監査ログを確認することができました 👌

Google Cloud の監査ログが Microsoft Sentinel 側で確認できるまで、体感ですが 2-3 分程度の遅延があるようです。

まとめ

SIEM 製品はコストが結構かかる部分なのでクラウド ベンダーごとに構築するのは難しいかと思います。
Azure をメインでお使いになっている方は今回のように、Google Cloud の監査ログを Microsoft Sentinel へ集約するのはコストと管理面でよい選択になるのではないでしょうか。

環境が用意できるか分からないですが、次は Chronicle へ Azure のログを取り込む方法(今回の逆バージョン)について解説できたらと思います。

Discussion