Microsoft Sentinel の新しい接続方式 CCP で Azure と Google Cloud を接続してみた

Microsoft Sentinel の新しい接続方式 CCP で Azure と Google Cloud を接続してみた

Microsoft Sentinel の新しいデータコネクタである Codeless Connector Platform (CCP) を使用して、Azure と Google Cloud を接続します
Clock Icon2025.05.31

はじめに

以前、Microsoft Sentinel (以下、Sentinel) と Google Cloud を接続する ブログ を書きましたが、Azure ポータルを眺めていたところ、当時使用していたデータコネクタが DEPRECATED (非推奨) になっていました。
Azure Functions で使用している Python スクリプトがしばらく更新されていなかったのですが (参考) 、まさかデータコネクタごと非推奨になるとは思いませんでした…

気を取り直して、今回は代わりに誕生したデータコネクタ Google Cloud Platform IAM (via Codeless Connector Platform) (Preview) を使用して、Azure と Google Cloud を接続してみます。

sentinel-ccp_1

新方式の何がいいか

以前の Azure Functions を使用した方法 (以後、旧方式) の場合、新規プロジェクトを対象とするには環境変数へ都度追加する必要がありました。また、プロジェクトより上位の単位を指定することもできませんでした。新しい CCP を使用した方式 (以後、新方式) の場合、organization-id を指定することにより、組織単位でログの収集が可能になります。
※今回の記事はプロジェクト単位であり、組織単位については未検証ですが、HCL のコードより指定可能なことを確認しました。

他にも、セキュリティの観点で、旧方式だと Google Cloud のサービスアカウントキーを払い出し、Azure 側で設定する必要がありました。新方式の場合、Workload Identity 連携により、よりセキュアに Azure と Google Cloud を接続可能です。

注意点

新方式は、データコネクタ名に記載の通り、あくまで Preview 版の扱いとなりますのでご注意ください。
(ただし、旧方式にはすでに DEPRECATED との記載もあり、どちらを採用すればいいのやら…)

また、Azure ポータルのセットアップ画面にも記載がありますが、旧方式と新方式を並行で稼働した場合、新方式が優先される訳ではなく、両方の Log Analytics ワークスペースにデータが取り込まれてしまいます。 重複することで意図しない課金が発生しないよう、どちらかのみの方式を採用するようにしましょう。

NOTE: If both Azure Function and CCP connector are running parallelly, duplicate data is populated in the tables.
[和訳]
注意: Azure Function と CCP コネクタの両方が同時に動作している場合、テーブルに重複したデータが取り込まれる可能性があります。

手順

今回使用する接続方法は、以下手順を使用します。

https://github.com/Azure/Azure-Sentinel/tree/master/Solutions/GoogleCloudPlatformIAM/Data Connectors

前提

今回の手順では、Google Cloud Shell のホームディレクトリ上で Terraform によるセットアップを行います。ただし、この方法でそのまま設定すると、アクセスがなかった場合は デフォルト 120 日 で State ファイルが削除されてしまいます。検証目的以外は、Google Cloud Shell による設定は避けてください。

また、コンテンツハブ:Google Cloud Platform IAM は、事前にインストール済みの前提で進めます。
参考手順:クイック スタート: Microsoft Sentinel をオンボードする

事前準備

作業を始める前に、以下パラメータの確認とリソースを作成しておきます。

  • Google Cloud 側で準備すること
    • [確認] Sentinel と接続するプロジェクト ID
    • [作成] Pub/Sub トピック
    • [確認] Workload Identity プール
  • Azure 側で準備すること
    • [確認] テナント ID
      sentinel-ccp_2

詳細手順 (ログ収集用設定)

  1. Google Cloud Console で Cloud Shell を起動

  2. 作業用のディレクトリを作成し、移動

    mkdir setup_ccp && cd setup_ccp
    
  3. ログ収集設定用の Terraform スクリプト (GCPIAMLOGS.tf) をダウンロード

    wget https://raw.githubusercontent.com/Azure/Azure-Sentinel/refs/heads/master/DataConnectors/GCP/Terraform/sentinel_resources_creation/GCPIAMCCPLogsSetup/GCPIAMLOGS.tf -O GCPIAMLOGS.tf
    
  4. Terraform スクリプトの修正

    スクリプトの 13, 19 行目 を修正します。

    data "google_project" "project" {
      project_id = "Your project_id should be entered" # Sentinel と接続するプロジェクト ID に修正
    }
    
    variable "topic-name" {
      type    = string
      default = "sentinel-topic"
      description = "Name of existing topic" # Pub/Sub トピック名を指定
    }
    
  5. Terraform によるデプロイ

    terraform init
    terraform plan
    terraform apply
    

    ※本手順は、この後実行する認証設定用作業のタイミングにまとめて実行いただいても構いません。

  6. 実行結果の確認

    デプロイ後に Apply complete! が出ていれば、完了です。
    標準出力の内容は、初回セットアップであればこの時点でひかえておく必要はありません。

    Apply complete! Resources: 4 added, 0 changed, 0 destroyed.
    
    Outputs:
    
    An_output_message = "Please copy the following values to Sentinel"
    GCP_project_id = "notify-sentinel-alert"
    GCP_project_number = "1234567890123"
    GCP_subscription_name = "sentinel-subscription-IAMlogs"
    

詳細手順 (認証用設定)

  1. Google Cloud Console で Cloud Shell を起動

  2. 前の手順で作成したディレクトリへ移動

    cd setup_ccp
    
  3. ログ設定用の Terraform スクリプト (GCPInitialAuthenticationSetup.tf) をダウンロード

    wget https://raw.githubusercontent.com/Azure/Azure-Sentinel/refs/heads/master/DataConnectors/GCP/Terraform/sentinel_resources_creation/GCPInitialAuthenticationSetup/GCPInitialAuthenticationSetup.tf -O GCPInitialAuthenticationSetup.tf
    
  4. Terraform スクリプトの修正

    スクリプト を修正せずにこのまま作業を続けると、プロバイダやデータリソースが重複していたり、output の名前空間が重複しているため、初期化に失敗します。そのため、以下修正を行います。
    ※今回は Google Cloud との接続を目的としているため、スクリプトの修正は簡易に済ませます。

    • 1〜10 行目を削除

       terraform {
         required_providers {
           google = {
             source  = "hashicorp/google"
             version = "3.73.0"
           }
         }
      
         required_version = ">= 0.15.0"
       }
      
    • 18 行目を修正

      data "google_project" "project" {} # 以下に修正
      
      data "google_project" "project_auth_setup" {
        project_id = "<Google Cloud プロジェクト ID>"
      }
      
    • 115 〜 137 行目を修正

      output "An_output_message"{ # An_output_message_auth_setup に修正
        value = "Please copy the following values to Sentinel"
      }
      
      output "GCP_project_id" { # GCP_project_id_auth_setup に修正
        value       = data.google_project.project.project_id
      }
      
      output "GCP_project_number" { # GCP_project_number_auth_setup に修正
        value       = data.google_project.project.number
      }
      
      output "Service_account_email" { # Service_account_email_auth_setup に修正
        value       = "${google_service_account.sentinel-service-account.account_id}@${data.google_project.project.project_id}.iam.gserviceaccount.com"
      }
      
      output "Identity_federation_pool_id" { # Identity_federation_pool_id_auth_setup に修正
        value       = local.workload_identity_pool_id
      }
      
      output "Identity_federation_provider_id" { # Identity_federation_provider_id_auth_setup に修正
        value       = google_iam_workload_identity_pool_provider.sentinel-workload-identity-pool-provider.workload_identity_pool_provider_id
      }
      
  5. Terraform によるデプロイ

    terraform init
    terraform plan
    terraform apply
    

    plan と apply のタイミングでテナント ID と Workload Identity プールの有無を聞かれます。
    テナント ID は、Azure ポータルの 1. Setup the GCP environment セクションに表示されている値をコピーします。
    Workload Identity プールは、作成済みであれば yes、未作成であれば no を指定します。

    xxx@cloudshell:~/setup_ccp$ terraform plan
    var.tenant-id
      Please enter your Sentinel tenant id
    
      Enter a value: xx111111-xxx1-111x-x1x1-11xxx1x1x111
    
    var.workload-identity-pool-id-exists
      A workload Identity Pool has already been created for Azure? (yes/no)
    
      Enter a value: yes # 今回は事前に作成済みのため yes
    
    data.google_project.project: Reading...
    data.google_project.project_auth_setup: Reading...
      :
    
  6. 実行結果の確認

    デプロイ後、Apply complete! のメッセージと共に各種設定値が出ていれば、正常に完了です。この値は、後述する手順で Azure ポータルへ入力するため、ひかえておきます。

    Outputs:
    
    An_output_message = "Please copy the following values to Sentinel"
    GCP_project_id = "notify-sentinel-alert"
    GCP_project_number = "1234567890123"
    GCP_subscription_name = "sentinel-subscription-IAMlogs"
    Identity_federation_pool_id = "abcde12345fghij67890klmno12345pq"
    Identity_federation_provider_id = "sentinel-identity-provider"
    Service_account_email = "sentinel-service-account@notify-sentinel-alert.iam.gserviceaccount.com"
    workload_identity_pool_id = "abcde12345fghij67890klmno12345pq"
    

データコネクタのセットアップ

  1. Azure ポータルからデータコネクタ:Google Cloud Platform IAM (via Codeless Connector Platform) (Preview) をクリック

    sentinel-ccp_3

  2. Add new collectorボタンをクリック

    sentinel-ccp_4

  3. 各フォームへひかえておいた値を入力し、Connectボタンをクリック

  • Project ID:標準出力の GCP_project_id を指定

  • Project number:標準出力の GCP_project_number を指定

  • GCP Subscription name:標準出力の GCP_subscription_name を指定

  • Workload identity pool ID:既存の値を使用 (変更できない)

  • Service account email:標準出力の Service_account_email を指定

  • Workload identity provider ID:標準出力の Identity_federation_provider_id を指定

    sentinel-ccp_5

  1. 正常に接続されることを確認

    設定に問題なければ、以下 2 点が確認できます。

    • コネクターが追加される
    • データコネクタのステータスが Connected になる

    sentinel-ccp_6

    ここまでで接続作業は完了です。

  2. 動作確認

    今回は、プライベート環境を使用したため、データの取得を待っている間に Google Cloud 側でサービスアカウントを作成しました。これは、当該環境を私しか使用していないため、IAM アクティビティを意図的に生成する目的です。

    そして、30 分ほど待ったところで、Log Analytics ワークスペース (テーブル:GCP_IAMV2_CL) にデータが取り込まれました。

    sentinel-ccp_7

最後に

以前の方式だと、事前準備が多かったり、Azure 側でもリソース作成が必要だったりしましたが、新しい方式はこの辺りが解消されております。冒頭で記述しましたメリットも加えて、良いアップデートとなったのではないでしょうか。

アノテーション株式会社について

アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、さまざまな背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社 WEB サイトをご覧ください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.