[アップデート] AWS Security Hub から Microsoft Azure のセキュリティチェックが出来るようになったので試してみた
いわさです。
AWS と Azure の両方でワークロードを運用している場合、これまではそれぞれの環境で別々のセキュリティツールを使い分ける必要がありました。
リスクを横断的に優先度付けしたり、一貫したポリシーで対応したりすることが難しい状態でした。
今年 3 月の RSA Conference(セキュリティ業界のカンファレンス)にて、AWS Security Hub のマルチクラウド拡張が予告されていました。
そして先日、ついに AWS Security Hub が Microsoft Azure リソースの監視に対応しました。
これにより Security Hub のコンソールから Azure 環境のリソースに対しても、設定ミスの検出・脆弱性スキャン・露出分析などを行えるようになっています。
今回こちらを確認してみたので紹介します。
Azure 統合で出来ること
まず Azure 統合で提供される機能を整理しておきます。
公式ドキュメントによると、Azure との統合を作成すると以下が利用できるようになるみたいです。
- セキュリティポスチャ管理(CSPM) — CIS Microsoft Azure Foundations Benchmark v4.0 および Azure Foundational Security Best Practices v1.0.0 に基づく自動コンプライアンスチェック
- 脆弱性管理 — Amazon Inspector が Azure VM、Function Apps、Azure Container Registry (ACR) コンテナイメージのソフトウェア脆弱性を自動スキャン
- 露出検出(Exposure findings) — ネットワーク到達可能性、パブリックアクセス、設定ミスの組み合わせに基づき、攻撃者から到達可能な Azure リソースを自動検出
- Microsoft Defender for Cloud アラート取り込み — Azure Defender から Event Hub への連続エクスポートを設定すると、Security Hub が脅威検出アラートを OCSF 形式にマッピングして取り込み
- アセットインベントリ — Azure リソースの完全なインベントリが AWS リソースと並んで Security Hub コンソールに表示
Defender for Cloud アラートの取り込み以外は Azure 側でセキュリティサービスを有効化する必要がなく、AWS 側から提供される機能だけで動作します。
Defender for Cloud アラートの取り込みについてのみ、Azure 側で Defender から Event Hub への連続エクスポート設定が別途必要とのこと。
実際にセットアップしてみた
ここからセットアップの全体像と各ステップを順番に確認していきます。
大きく分けて以下の 3 フェーズです。
- AWS 側の事前準備(IAM アウトバウンド ID フェデレーションの有効化)
- Azure 側の設定(スクリプトの取得と実行)
- Security Hub CSPM コンソールで統合を作成
フェーズ 1: AWS 側の事前準備
Security Hub CSPM がコネクタを作成する AWS アカウント・リージョンで有効化されている必要があります。
既に有効化済みの場合はスキップして大丈夫です。
次に IAM アウトバウンド ID フェデレーションを有効化します。
これは 2025 年 11 月に追加された機能で、AWS のワークロードがクライアントシークレットなしで外部サービス(Microsoft Entra ID など)に対して短期間有効な JWT で認証できる仕組みです。
IAM コンソール > アクセス管理 > アカウント設定 を開くと、「アウトバウンド ID フェデレーション」セクションがあります。

「有効化」ボタンを押すとステータスが「有効」に変わり、トークン発行者 URL が表示されます。
この URL(https://<uuid>.tokens.sts.global.api.aws の形式)を控えておきます。後のフェーズ 2 で使います。

フェーズ 2: Azure 側の設定
Security Hub CSPM コンソールで Azure 統合の追加を開始すると、Azure 用のセットアップスクリプトが自動生成されるので、それを Azure CLI で実行します。
Security Hub CSPM コンソールの概要タブには次のように Azure 統合のセットアップガイダンスが表示されています。

また左ナビゲーションから「統合」を選択し、「Azure 統合を追加」画面を開くとこちらでもセットアップを開始できます。

Azure 統合の追加画面では、まずセキュリティ標準を選択します。
- すべての Azure セキュリティ標準を設定(推奨)
- Azure セキュリティ標準をカスタマイズ
「カスタマイズ」を選ぶと、有効にする標準を個別に選択できます。
- Azure Foundational Security Best Practices v1.0.0
- CIS Azure Foundations Benchmark v4.0.0

次にモニタリング対象の Azure 環境を指定します。
- Azure テナント ID — Azure Portal の Microsoft Entra ID > Properties から取得
- Azure サブスクリプションの選択 — 「すべてのサブスクリプション」(テナント全体)or「特定のサブスクリプション」
- Azure リージョンの選択 — 「すべてのリージョンを有効にする」or「特定のリージョンを有効にする」

画面を下にスクロールすると「データ接続」セクションがあります。
ここで Azure 環境のセットアップ方法を選びます。
- Azure リソースを作成するためのスクリプトの生成をサポートしてください(推奨)
- Azure リソースを自分で作成します
最初は「Azure リソースを自分で作成します」を選んで公式ドキュメントの手順に沿ってやってみたのですが、アプリ登録とサービスプリンシパル作成までは出来たものの、その先のフェデレーション資格情報の設定や RBAC ロール割り当て、Azure Policy の構成あたりが複雑で途中で諦めました。


ここまでは良かったのですが、この先のフェデレーション資格情報、テナントルート管理グループスコープへのロール割り当て、Event Hub の構築と Azure Policy による DINE(DeployIfNotExists)設定、Entra ID 監査ログのエクスポートなど、やるべきことが多すぎる。
スクリプト生成を使ったほうが圧倒的に楽だったので、そちらを使いました。
スクリプト生成を選ぶと、以下の入力が必要です。
- 発行者 URL — フェーズ 1 で取得したトークン発行者 URL を貼り付け
- Event Hub リージョン — Event Hub を作成する Azure リージョンを選択(今回は japaneast を選択)
入力後、「スクリプトを表示」ボタンを押すとセットアップスクリプトが生成されます。

生成されたスクリプトは「Download script」でダウンロードできます。

スクリプトの前提条件は以下のとおりです。
- Azure CLI にログイン済み(
az login)、jqインストール済み - Microsoft Entra ID の Global Administrator ロール
- テナントルートスコープ
/の User Access Administrator - テナントルート管理グループの Resource Policy Contributor(または Owner)
- Event Hub を作成するサブスクリプションの Contributor(または Owner)
スクリプトは全 12 ステップで構成されており、以下を自動実行します。
| ステップ | 内容 |
|---|---|
| 1 | Azure ログイン確認 |
| 2 | Entra ID アプリ登録 + サービスプリンシパル作成 |
| 3 | フェデレーション資格情報の設定(AWS との OIDC トラスト確立) |
| 4 | RBAC ロール割り当て(Reader、Contributor、Event Hubs Data Receiver) |
| 5 | Microsoft Graph API 権限の設定 + 管理者同意 |
| 6 | Event Hub 名前空間・ハブ・コンシューマーグループの作成 |
| 7 | Activity Log の Event Hub エクスポート(Azure Policy で DINE) |
| 8 | (Inspector 有効時)ACR リポジトリイベントのリージョン別 Event Hub |
| 9 | (Inspector 有効時)VM のシステム割り当てマネージド ID 付与ポリシー |
| 10 | (Threats 有効時)Defender for Cloud アラートの連続エクスポート |
| 11 | プロバイダー登録 + ポリシー修復タスクの作成 |
| 12 | Entra ID 監査ログの Event Hub エクスポート |
スクリプト内の変数で有効にするパイプラインを制御できます。
今回 Security Hub CSPM からの生成では ENABLE_CSPM="true" のみが有効で、Inspector や Threats は false になっていました。
ENABLE_CSPM="true"
ENABLE_INSPECTOR="false"
ENABLE_THREATS="false"
ローカルの Azure CLI で az login した後、スクリプトをダウンロードして実行しました。
chmod +x cspm-azure-setup.sh
./cspm-azure-setup.sh
実行するとステップ 5 完了時点で一旦停止し、Entra アプリの Application (Client) ID が表示されます。
===========================================
Entra app registration ready.
===========================================
Provide these IDs to your Security Hub Azure onboarding configuration:
Azure Tenant ID: 730f026b-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Application (Client) ID: 5c982e6b-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Press Enter to continue provisioning Event Hub and policy resources...
Enter を押して続行すると、Event Hub の作成や Activity Log エクスポートの Azure Policy 設定が実行されます。
全体で 5〜10 分程度で完了しました。
===========================================
Security Hub Azure setup complete!
===========================================
Azure Tenant ID: 730f026b-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Application (Client) ID: 5c982e6b-xxxx-xxxx-xxxx-xxxxxxxxxxxx
SP Object ID: 054d5d6a-xxxx-xxxx-xxxx-xxxxxxxxxxxx
AWS Account: xxxxxxxxxxxx
Event Hub namespace: aws-eh-xxxxxxxxxxxx.servicebus.windows.net (rg: aws-eventhub-rg)
Hub: activitylog (consumer: AWSConfig)
Discovery tag: AWSConfig-xxxxxxxxxxxx-ap-northeast-1 = activitylog
Pipelines enabled:
CSPM -> Activity Logs (ActivityLogsToEH-7088) + Entra ID export
Allow ~15-30 min for policy remediation, then verify Event Hub IncomingMessages.
フェーズ 3: Security Hub CSPM コンソールで統合を作成
スクリプトの実行が完了したら、Security Hub CSPM コンソールに戻ります。
データ接続セクションの「アプリケーション (クライアント) ID を指定」欄に、スクリプト実行時に出力された Application (Client) ID を入力し、「データ接続を作成」を押します。

「データ接続が正常に作成されました」と表示され、Azure Application (クライアント) ID が確認できます。

Security Hub CSPM の「統合」メニューの統合カタログを見ると、「Microsoft Azure」カードが表示されています。
正常性のステータスが「不明」、有効化ステータスが「有効」になっていることが確認できます。

また、Azure Portal の Microsoft Entra ID > アプリの登録を見ると、スクリプトが作成した AWSAuthApp-550669467088 が登録されていることがわかります。

検出結果を確認する
データ接続を作成してから約 30 分後、Security Hub CSPM の概要画面を確認してみました。
セキュリティ基準のセクションに Azure Foundational Security Best Practices v1.0.0 と CIS Azure Foundations Benchmark v4.0.0 が表示されています。
セキュリティスコアはまだ生成中(「スコアデータはまだご利用いただけません」)ですが、「リージョン別の検出結果」ウィジェットを見ると East US (Virginia)、global、Japan East (Tokyo, Saitama) の 3 リージョンで findings が検出されていることがわかります。

検出結果の一覧をリージョン japaneast でフィルターしてみると、Azure Storage 関連のコントロールがずらりと FAILED で並んでいます。
Azure.Storage.7(プライベートエンドポイントの使用)、Azure.Storage.9(デフォルトネットワークアクセスの拒否)、Azure.Storage.10(Microsoft Entra 認証のデフォルト化)など、ストレージアカウントのセキュリティ設定に関するチェックが軒並み検出されていますね。

検出結果の詳細を開くと、クラウドプロバイダーが「Azure」、リージョンが「japaneast」、リソースタイプが microsoft.storage/storageaccounts と表示されています。
AWS リソースの findings と同じフォーマット・同じコンソールで Azure リソースの検出結果が確認できることがわかります。

さらに Azure Foundational Security Best Practices v1.0.0 のセキュリティ基準画面を開くと、26 件のコントロールが一覧表示されています。
Azure.App(Container Apps)、Azure.Authorization、Azure.ContainerService(AKS)など、Azure 特有のリソースタイプに対するコントロールが並んでいます。
まだ全コントロールが「データなし」のステータスですが、スコアが利用可能になるまで最大 1216 分(約 20 時間)かかるとのことなので、しばらく待てばスコアが算出されるはずです。

料金体系
Azure リソースの監視料金は AWS リソースと同じリソースユニット単価($3.75/月)です。
| リソースタイプ | リソースユニット換算 |
|---|---|
| Azure Virtual Machine | 1 VM = 1 unit |
| Azure Function Apps | 12 Functions = 1 unit |
| Azure コンテナイメージ (ACR) | 18 images = 1 unit |
| Azure ID | 125 identities = 1 unit |
AWS リソースと全く同じ単価なので、マルチクラウドだからといって割増になるわけではないですね。
Azure 統合を作成すると、独立した 30 日間の無料トライアルが開始されるみたいです。
Once you set up an integration with Microsoft Azure, Azure monitoring of Microsoft Azure resources includes its own independent 30-day free trial.
対応リージョン
統合の作成は Security Hub が利用可能なほとんどの AWS リージョンから行えます。
ただし以下のリージョンは除外されるとのこと。
- 中東 (UAE)
- 中東 (バーレーン)
- アジアパシフィック (台北)
- アジアパシフィック (ニュージーランド)
東京リージョンは対応しているので、日本のユーザーは東京リージョンから統合を作成できます。
また Event Hub リージョンとして japaneast を選択できるので、Azure 側のリソースも東日本リージョンに配置できます。
露出検出(Exposure findings)の Azure 対応
今回のアップデートに合わせて、露出検出も多数の Azure リソースタイプに対応しています。
公式ドキュメントを確認すると、以下の Azure リソースに対する修復ガイドが追加されていました。
- Azure Virtual Machines
- Azure Storage blob containers
- Azure SQL databases
- Azure Cosmos DB accounts
- Azure Function apps
- Azure Container apps
- Azure Kubernetes Service (AKS) clusters
- Azure Graph users
さいごに
本日は AWS Security Hub が Microsoft Azure リソースの監視に対応したアップデートを確認してみました。
AWS と Azure のマルチクラウド環境でセキュリティ運用をしているチームにとっては、ツールの統合による運用負荷の軽減が期待できるアップデートだと思います。
Azure 側のリソースに対しても CIS ベンチマークによるセキュリティチェックが同じコンソールから確認でき、findings のフォーマットも統一されているので、既存の自動応答ワークフローをそのまま流用出来そうですね。
セットアップはスクリプトが自動生成されるので、スクリプト実行自体は 5〜10 分で完了します。
手動でのセットアップは正直かなり大変なので、スクリプトの利用をおすすめします。
Azure 環境をお持ちの方は 30 日間の無料トライアルがあるので、試してみてはいかがでしょうか。









