Microsoft Azure に接続して構成とリソースデータの収集を行う

Security Command Center のエンタープライズ ティアを Microsoft Azure 環境に接続することで、次のことが可能になります。

  • 構成ミスに関連する検出結果の検出を有効にします。
  • 公共のインターネットから価値の高い Microsoft Azure アセットに対する潜在的な攻撃パスを特定します。
  • Microsoft Azure リソースのコンプライアンスをさまざまな標準とベンチマークにマッピングする。

Security Command Center と Microsoft Azure の接続により、チームが Google Cloud と Azure の両方で構成ミスを管理して修正できる単一の場所が作成されます。

Security Command Center と Azure 間の信頼接続は、Google Cloud サービス エージェントと、モニタリングする Azure リソースへのアクセス権を持つ Microsoft Azure のユーザー割り当てマネージド ID を使用して構成します。Microsoft Azure 環境で信頼構成を管理および制御します。

Google Cloud の組織ごとに 1 つの Azure 接続を作成できます。

Security Command Center は、この接続を使用して、定義した Microsoft Azure リソースに関するデータを定期的に収集します。このデータは、Google Cloud のプライバシーに関するお知らせに沿って、サービスデータと同じ方法で処理されます。コネクタは API 呼び出しを使用して Azure アセットデータを収集します。これらの API 呼び出しには Microsoft Azure の料金が発生する場合があります。

スキャン中、データ収集パイプラインは、ユーザー割り当てのマネージド ID を使用して Microsoft Azure 環境に対する認証を行うサービス エージェントに依存します。

次の図は、Security Command Center と Azure の間で信頼が確立される仕組みを示しています。

Azure と Security Command Center の構成。

このドキュメントでは、Microsoft Azure との接続を設定する方法について説明します。大まかな手順は次のとおりです。

  1. 始める前にの前提条件の手順を実行します。

  2. Azure コネクタを作成し、スキャンするサブスクリプションとロケーションを構成します。この手順を行うには、Microsoft Azure テナント ID が必要です。これにより、サービス エージェント ID が作成されます。

  3. Azure 環境を構成して、次のロールを持つ専用のユーザー割り当てマネージド ID を作成します。

    • Microsoft Azure ルート管理グループのスコープで、リソース、サブスクリプション、管理グループの階層を読み取る閲覧者

    • Microsoft Azure ルート管理グループのスコープ内の Key Vault 閲覧者。キー コンテナーと関連する証明書、鍵、シークレットに関するメタデータを読み取ります。

    • Microsoft Azure ルート管理グループのスコープで、リソースに関するメタデータを読み取る Storage Blob データ閲覧者。Azure コネクタの構成時に [Sensitive Data Protection 検出に対する権限を付与する] を有効にする場合は、このロールを付与します。

    • Microsoft Entra ID のディレクトリ閲覧者。グループとメンバーシップを読み取ります。

    • Microsoft Entra ID のセキュリティ閲覧者。認可ポリシーを読み取ります。

    ルート管理グループのデフォルトの表示名は Tenant root group です。

    これらの権限は、Security Command Center がリソース階層のサブスクリプションよりも上位のレベルにある管理グループ、メンバーシップを持つグループ、ロール定義を特定するために必要です。

    サービス エージェントに関する情報を使用して、ユーザー割り当てのマネージド ID のフェデレーション ID 認証情報も構成します。

    手順を手動で行うか、Terraform を使用することができます。手順を手動で行う場合は、サービス エージェント ID が必要です。

  4. Azure コネクタの構成を完了し、接続をテストします。これらの手順では、ユーザー割り当てマネージド ID に関する情報を使用します。

Azure コネクタは、Security Command Center Enterprise の SIEM キュレーション検出機能に必要な Azure ログを取り込みません。詳細については、Microsoft Azure に接続してログデータを収集するをご覧ください。

始める前に

以降のセクションでは、Security Command Center と Microsoft Azure 間の接続を構成する前に必要な前提条件、決定事項、情報について説明します。

Microsoft Azure の機能を確認する

Microsoft Azure の次のコンセプトと機能について理解しておいてください。

データ収集を計画する

データ収集戦略を計画する際は、次の手順を行います。このドキュメントの手順を行う際に、この情報が必要になります。

  • ユーザー定義のマネージド ID を作成するリソース グループを作成または特定します。構成時にリソース グループ名が必要です。

    RESOURCE_GROUP_NAME 変数をリソース グループ名に置き換えて、このドキュメントの以降の手順で値を入力します。

  • データを収集するリソースを特定します。特定のサブスクリプションまたはリージョンからのみデータを収集する場合は、計画時にそれらを特定して記録します。

    すべてのサブスクリプションとリージョンでリソースを自動的に検出するように Azure コネクタを構成することもできます。

Google Cloudで権限を設定する

Google Cloudで、サードパーティ クラウド プロバイダへの接続を作成して管理するには、組織で Cloud Asset オーナー(roles/cloudasset.ownerロールが付与されている必要があります。ロールの付与の詳細については、アクセスの管理をご覧ください。

Microsoft Azure で権限を設定する

Microsoft Azure を手動で構成するまたは Terraform を使用して Microsoft Azure を構成するの手順を行うには、少なくとも 1 つのリソース グループが作成された Azure ID と、Microsoft Azure と Microsoft Entra の IAM ポリシーを構成するための次の権限が必要です。

  • ルート管理グループのスコープ内の Microsoft.Authorization/roleAssignments/write 権限。これは、ロールベース アクセス制御管理者またはユーザー アクセス管理者のいずれかの組み込みロールで使用できます。

  • ユーザー割り当てマネージド ID が作成されるリソース グループのスコープ内の次の権限。

    • Microsoft.ManagedIdentity/userAssignedIdentities/write
    • Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials/write

    これらは、組み込みの Managed Identity Contributor ロールで使用できます。

  • Microsoft Entra の権限 microsoft.directory/roleAssignments/allProperties/allTasks。これは、Microsoft Entra の組み込みロールである特権ロール管理者で使用できます。

ルート管理グループのスコープで権限を設定するには、昇格されたアクセス権が必要です。グローバル管理者のアクセス権を昇格させる手順については、すべての Azure サブスクリプションと管理グループを管理するためのアクセス権を昇格させるをご覧ください。

Security Command Center Azure コネクタを有効にして構成する

Azure コネクタを作成して構成するには、次の操作を行います。

  1. Google Cloudで権限を設定するセクションで定義されている権限があることを確認します。

  2. 36 文字の Microsoft Azure テナント ID があることを確認します。

  3. [設定] ページの [コネクタ] タブを開きます。

    [コネクタ] に移動

  4. Security Command Center Enterprise を有効にした組織を選択します。

  5. [コネクタを追加] > [Microsoft Azure] をクリックします。

  6. [コネクタを構成] ページで、Azure テナント ID を入力します。

  7. Sensitive Data Protection で Azure データをプロファイリングできるようにするには、[機密データの保護の検出に権限を付与する] を選択したままにします。このオプションでは、ユーザー定義のマネージド ID の Terraform テンプレートに Storage Blob Data Reader ロールが追加されます。

  8. 次のいずれかを選択します。

    • サブスクリプションを自動的に追加する: Security Command Center がサブスクリプションを自動的に検出して追加します。必要に応じて、[Azure サブスクリプションを除外する] フィールドにサブスクリプション ID を追加して、収集対象から除外できます。
    • サブスクリプションを個別に追加する: Security Command Center はサブスクリプションを自動的に検出しません。[Add Azure Subscription] フィールドを使用して、少なくとも 1 つのサブスクリプションを定義する必要があります。
  9. [データを収集する Azure ロケーションを選択する] セクションで、必要に応じて、データを収集する 1 つ以上の Microsoft Azure ロケーションを選択します。すべての場所から収集するには、このフィールドを空のままにします。メニューからロケーションを選択すると、選択解除されたロケーションは除外されます。

    推奨設定は、[Automatically discover your Azure subscriptions] をオンにして、すべての Microsoft Azure の場所を使用することです。

  10. [次へ] をクリックします。[Azure に接続] ページが開きます。

  11. [Azure に接続] ページを開いたままにして、Microsoft Azure 環境を構成するに進みます。

    Microsoft Azure を構成したら、このページに戻って Azure コネクタの構成を完了します。

Microsoft Azure 環境を構成する

次のいずれかのセクションを入力します。

Microsoft Azure を手動で構成する

次のセクションでは、Security Command Center と Microsoft Azure 間の信頼を確立する Azure 環境を構成する手動の手順の概要について説明します。この手順は包括的なものではありません。各セクションには、そのタスクを完了する方法を説明する Microsoft Azure ドキュメントへのリンクが記載されています。

前提条件

ステップ 1: リソース グループにユーザー割り当てマネージド ID を作成する

  1. ユーザー割り当てマネージド ID を管理するの手順に沿って、ユーザー割り当てマネージド ID を作成します。

    ID を作成するときに、次の項目を指定します。

    • Subscription: ID が管理されるサブスクリプションを選択します。
    • リソース グループ: ID が管理されるリソース グループ名 RESOURCE_GROUP_NAME を指定します。これは、データ収集の計画時に特定しました。
    • リージョン: リージョン(例: East US)を選択します。
    • 名前: ユーザー割り当てマネージド ID の名前を入力します(例: gcp-managed-identity)。変数 USER_ASSIGNED_MANAGED_IDENTITY_NAME を ID 名に置き換えます。この変数は、このドキュメントの手順で必要な箇所に設定されます。
  2. 次の情報を記録します。これは後の手順で使用します。

    • クライアント ID: ID に割り当てられた 36 文字の値。
    • オブジェクト(プリンシパル)ID: ID に割り当てられた 36 文字の値。
    • ID 名: 名前に定義した値。

ステップ 2: ユーザー割り当てマネージド ID のフェデレーション認証情報を作成する

ユーザー割り当てマネージド ID にフェデレーション認証情報を追加するには、外部 ID プロバイダを信頼するようにユーザー割り当てマネージド ID を構成するの手順に沿って操作します。

他の発行者のシナリオで説明されているガイダンスを使用して、次の設定を行います。

  • 連携認証情報のシナリオ: [その他: 外部 OpenID Connect プロバイダによって管理される ID を構成して、このアプリケーションとして Microsoft Azure リソースにアクセスする] を選択します。
  • 発行元 URL: 「https://accounts.google.com」と入力します。
  • サブジェクト鍵識別子: Security Command Center Azure コネクタを作成したときに生成されたサービス エージェント ID を入力します。
  • 名前: 連携した認証情報の名前を入力します(例: gcp-managed-identity-fic)。
  • 対象: 「https://cloud.google.com」と入力します。

ステップ 3: Microsoft Azure の組み込みロールを割り当てる

Azure Portal を使用して Azure ロールを割り当てるの手順に沿って、次の Microsoft Azure の組み込みロールをユーザー割り当てマネージド ID に割り当てます。

  • Vault 閲覧者
  • リーダー
  • Storage Blob データ リーダー

これらのロールは、ルート管理グループ スコープで付与します。

ステップ 4: Microsoft Entra ID の組み込みロールを割り当てる

ユーザーに Microsoft Entra ロールを割り当てるの手順に沿って、次の Microsoft Entra ID 組み込みロールをユーザー割り当てマネージド ID に割り当てます。

  • ディレクトリ閲覧者
  • セキュリティ閲覧者

完了したら、Azure コネクタの構成を完了するに進みます。

Terraform を使用して Microsoft Azure を構成する

次の大まかな手順では、Terraform を使用して Microsoft Azure を構成する方法について説明します。この手順は包括的なものではありません。Terraform を使用したリソースのプロビジョニングの詳細については、Azure の Terraform ドキュメントをご覧ください。

  1. Azure コネクタを作成したときに開いたままになっている [Azure に接続] ページを開きます。

  2. [Terraform テンプレートをダウンロード] をクリックします。これにより、複数の JSON ファイルを含む azure_terraform.zip ファイルがダウンロードされます。

  3. Microsoft Azure にログインし、BASH または Azure PowerShell を使用して Azure Cloud Shell を開きます。

  4. 次のいずれかの手順に沿って、組織のポリシーに従って Terraform を構成します。

  5. azure_terraform.zip ファイルを Azure Cloud Shell 環境にコピーし、内容を抽出します。main.tf.jsonoutputs.tf.jsonproviders.tf.jsonvariables.tf.json のファイルが表示されます。

  6. これらのファイルのコピーを別のディレクトリに作成します。

    1. サンプル Terraform コードをテストするための新しいディレクトリを作成し、現在のディレクトリにします。
    2. 新しく作成したディレクトリに、抽出した JSON ファイルのコピーを元のファイルと同じ名前で作成します。

      • main.tf.json という名前の新しいファイルを作成し、抽出した main.tf.json ファイルからコードをコピーして貼り付けます。
      • providers.tf.json という名前の新しいファイルを作成し、抽出した providers.tf.json ファイルからコードをコピーして貼り付けます。
      • outputs.tf.json という名前の新しいファイルを作成し、抽出した outputs.tf.json ファイルからコードをコピーして貼り付けます。
      • variables.tf.json という名前の新しいファイルを作成し、抽出した variables.tf.json ファイルからコードをコピーして貼り付けます。
  7. 次のコマンドを実行して、Terraform デプロイを初期化します。

    terraform init -upgrade
    
  8. 次のコマンドを実行して実行プランを作成します。

    terraform plan -out main.tfplan -var="resource_group_name=RESOURCE_GROUP_NAME" -var="user_assigned_managed_identity_name=USER_ASSIGNED_MANAGED_IDENTITY_NAME"
    

    次のように置き換えます。

    • RESOURCE_GROUP_NAME: ユーザー割り当てマネージド ID が作成される Microsoft Azure リソース グループの名前。
    • USER_ASSIGNED_MANAGED_IDENTITY_NAME: 作成するユーザー割り当てマネージド ID の名前。指定しない場合、デフォルト値は google-cloud-managed-identity です。
  9. 次のコマンドを実行して、実行プランを Microsoft Azure インフラストラクチャに適用します。

    terraform apply main.tfplan
    
  10. Azure コネクタの構成を完了するセクションに進みます。

Azure コネクタの構成を完了する

  1. Microsoft Azure ユーザー割り当てマネージド ID に関する次の情報があることを確認します。

    • クライアント ID: ID に割り当てられた 36 文字の値。
    • オブジェクト(プリンシパル)ID: ID に割り当てられた 36 文字の値。

    この情報を確認する方法については、ユーザー割り当てマネージド ID を一覧表示するをご覧ください。

  2. Azure コネクタを作成したときに開いたままになっている [Azure に接続] ページを開きます。

  3. [Azure マネージド ID の詳細] セクションで、次の情報を入力します。

    • マネージド ID のクライアント ID: これはクライアント ID です。
    • マネージド ID のオブジェクト ID: オブジェクト(プリンシパル)ID です。
  4. [続行] をクリックします。

  5. [コネクタのテスト] ページで、[コネクタをテスト] をクリックして、Security Command Center が Microsoft Azure 環境に接続できることを確認します。

    接続が成功すると、 Google Cloud サービス エージェントは Microsoft Azure ユーザー割り当てマネージド ID を想定し、必要な Microsoft Azure と Microsoft Entra の権限を持ちます。接続に失敗した場合は、接続テスト時のエラーのトラブルシューティングをご覧ください。

  6. [保存] をクリックします。[コネクタ] ページが表示されます。

コネクタは、指定した Azure サブスクリプションとロケーションからのスキャンとデータ収集を開始します。結果が表示されるまでに最長で 24 時間ほどかかることがあります。

接続テスト時のエラーのトラブルシューティング

次のセクションでは、Security Command Center と Microsoft Azure 間の接続をテストするときに発生する可能性のあるエラーと、それぞれの解決方法について説明します。

AZURE_ENABLED_SUBSCRIPTIONS_NOT_FOUND エラー

Azure コネクタは、[Azure テナント ID] フィールドで指定されたテナントに有効なサブスクリプションを見つけられませんでした。次の点を確認してください。

  • [サブスクリプションを自動的に追加する] が選択されている場合は、テナントに Enabled 状態のサブスクリプションが含まれており、[除外する Azure サブスクリプション] フィールドに表示されていないことを確認します。
  • [サブスクリプションを個別に追加する] が選択されている場合は、指定したサブスクリプションが Enabled 状態になっていることを確認します。

AZURE_FAILED_TO_ASSUME_MANAGED_IDENTITY エラー

Microsoft Azure のユーザー割り当てマネージド ID は Google Cloud サービス エージェントが想定できないため、接続は無効です。考えられる原因は次のとおりです。

  • 接続で指定されたユーザー割り当てマネージド ID が存在しないか、構成が正しくありません。
  • 接続で指定されたユーザー割り当てマネージド ID に、 Google Cloud サービス エージェントを信頼するために必要なフェデレーション ID 認証情報がない可能性があります。

この問題を解決するには、次の操作を行います。

AZURE_MANAGED_IDENTITY_MISSING_REQUIRED_PERMISSION エラー

Azure ユーザー割り当てマネージド ID に必要な Microsoft Azure または Microsoft Entra ロールがないため、接続は無効です。エラー メッセージには、不足しているロールが含まれています。

この問題を解決するには、Microsoft Azure 組み込みロールMicrosoft Entra 組み込みロールを構成したときに設定した設定を確認して、構成が正しいことを確認します。

AZURE_MANAGED_IDENTITY_ASSUMPTION_FAILED_AND_MISSING_REQUIRED_PERMISSION エラー

Microsoft Azure ユーザー割り当てマネージド ID が Google Cloud サービス エージェントによって想定されず、同時に必要な Microsoft Azure または Microsoft Entra ロールの一部が欠落しているため、接続は無効です。

エラー メッセージには、ユーザー割り当てマネージド ID が引き受けに失敗したスコープと、不足しているロールの詳細が含まれます。

この問題を解決するには、次の操作を行います。

その他のトラブルシューティングのヒント

以降のセクションでは、動作と対処方法について説明します。

削除された Azure リソースに対して検出結果が返される

Azure リソースが削除されてから、Security Command Center のアセット インベントリ システムから削除されるまでに最大 40 時間かかることがあります。リソースを削除して検出結果を解決することを選択した場合、アセットが Security Command Center アセット インベントリ システムからまだ削除されていないため、この期間内に検出結果が報告されることがあります。

次のステップ