特定の仮想ネットワークから Azure Event Hubs 名前空間へのアクセスを許可する

Event Hubs と仮想ネットワーク (VNet) サービス エンドポイントの統合により、仮想ネットワークにバインドされた仮想マシンなどのワークロードからメッセージング機能へのセキュリティで保護されたアクセスが可能になり、ネットワーク トラフィック パスは両端でセキュリティ保護されます。

少なくとも 1 つの仮想ネットワーク サブネット サービス エンドポイントにバインドするように構成した後、それぞれの Event Hubs 名前空間は、仮想ネットワークの承認されたサブネットを除くどこからのトラフィックも受け入れなくなります。 仮想ネットワークの観点からは、サービス エンドポイントに Event Hubs 名前空間をバインドすると、仮想ネットワーク サブネットからメッセージング サービスへの分離されたネットワーク トンネルが構成されます。

その結果、メッセージング サービス エンドポイントの監視可能なネットワーク アドレスがパブリック IP 範囲内にあるにもかかわらず、サブネットにバインドされたワークロードとそれぞれの Event Hubs 名前空間の間にプライベートな分離された関係が確立されます。 この動作には例外があります。 サービス エンドポイントを有効にすると、既定では、仮想ネットワークに関連付けられた IP ファイアウォールdenyall 規則が有効になります。 Event Hubs パブリック エンドポイントへのアクセスを有効にするために、IP ファイアウォールで特定の IP アドレスを追加できます。

重要なポイント

  • この機能は Basic サービス レベルではサポートされていません。
  • 許可されている仮想ネットワークで稼働中のサービスから要求が送信される場合を除き、Event Hubs 名前空間に対して仮想ネットワークを有効にすると、着信要求は既定でブロックされます。 ブロックされる要求には、他の Azure サービスからの要求、Azure portal からの要求、ログおよびメトリック サービスからの要求などが含まれます。 例外として、仮想ネットワークが有効になっている場合でも、特定の信頼できるサービスからの Event Hubs リソースへのアクセスを許可できます。 信頼できるサービスの一覧については、信頼できるサービスに関するセクションを参照してください。
  • 指定した IP アドレスまたは仮想ネットワークのサブネットからのトラフィックのみを許可するには、名前空間に少なくとも 1 つの IP 規則または仮想ネットワーク規則を指定します。 IP 規則も仮想ネットワーク規則も指定しない場合は、パブリック インターネット経由で (アクセス キーを使用して) 名前空間にアクセスできます。

VNet の統合によって有効になる高度なセキュリティのシナリオ

厳格でコンパートメント化されたセキュリティを要求し、仮想ネットワーク サブネットがコンパートメント化されたサービス間のセグメント化を提供するソリューションでも、それらのコンパートメント内に存在するサービス間の通信パスが必要です。

TCP/IP 上で HTTPS を搬送するものを含め、コンパートメント間の直接の IP ルートには、ネットワーク レイヤーから上のレイヤーの脆弱性を悪用されるリスクがあります。 メッセージング サービスは、隔離された通信パスを提供し、そこではメッセージがパーティ間を移動するときにディスクにも書き込まれます。 両方とも同じ Event Hubs インスタンスにバインドされている 2 つの異なる仮想ネットワーク内のワークロードは、それぞれのネットワークの分離境界の整合性を維持しながら、メッセージを介して効率よく確実に通信できます。

つまり、セキュリティ対策されたクラウド ソリューションは、信頼性が高くスケーラブルな Azure の業界をリードする非同期メッセージング機能にアクセスできるだけでなく、メッセージングを使用して、セキュリティで保護されたソリューション コンパートメント間に通信パスを作成できます。この通信パスは、HTTPS やその他の TLS で保護されたソケット プロトコルを含むピアツーピア通信モードよりも本質的に安全です。

仮想ネットワークへの Event Hubs のバインド

"仮想ネットワーク規則" は、Azure Event Hubs 名前空間が特定の仮想ネットワーク サブネットからの接続を許可するかどうかを制御するファイアウォール セキュリティ機能です。

仮想ネットワークへの Event Hubs 名前空間のバインドは、2 ステップのプロセスです。 まず、仮想ネットワークのサブネット上に仮想ネットワーク サービス エンドポイントを作成し、サービス エンドポイントの概要の記事で説明されているように、それを Microsoft.EventHub に対して有効にする必要があります。 サービス エンドポイントを追加した後、Event Hubs 名前空間を "仮想ネットワーク規則" にバインドします。

仮想ネットワーク規則は、Event Hubs 名前空間と仮想ネットワーク サブネットの関連付けです。 ルールが存在する間、サブネットにバインドされているすべてのワークロードには、Event Hubs 名前空間へのアクセス権が付与されます。 Event Hubs 自体は送信接続を確立することはなく、アクセス許可を取得する必要はないので、このルールを有効にすることでサブネットへのアクセス権が付与されることはありません。

Azure Portal の使用

名前空間を作成するときは、名前空間へのパブリックのみ (すべてのネットワークから) またはプライベートのみ (プライベート エンドポイントを介してのみ) のアクセスを許可できます。 名前空間が作成されたら、(ネットワーク サービス エンドポイントを使用して) 特定の IP アドレスまたは特定の仮想ネットワークからのアクセスを許可できます。

名前空間の作成時にパブリック アクセスを構成する

パブリック アクセスを有効にするには、名前空間の作成ウィザードの [ネットワーク] ページで [パブリック アクセス] を選択します。

Screenshot showing the Networking page of the Create namespace wizard with Public access option selected.

名前空間を作成したら、[Service Bus 名前空間] ページの左側のメニューで [ネットワーク] を選択します。 [すべてのネットワーク] オプションが選択されていることがわかります。 [選択したネットワーク] オプションを選択し、特定の IP アドレスまたは特定の仮想ネットワークからのアクセスを許可できます。 次のセクションでは、アクセスを許可するネットワークの指定について詳しく説明します。

既存の名前空間に選択したネットワークを構成する

このセクションでは、Azure portal を使用して仮想ネットワーク サービス エンドポイントを追加する方法を示します。 アクセスを制限するには、この Event Hubs 名前空間に対して仮想ネットワーク サービス エンドポイントを統合する必要があります。

  1. Azure portalEvent Hubs 名前空間に移動します。

  2. 左側のメニューの [設定][ネットワーク] を選択します。

  3. [ネットワーク] ページの [パブリック ネットワーク アクセス] では、次の 3 つのオプションのいずれかを設定できます。 特定の仮想ネットワークからのアクセスのみを許可するには、[選択されたネットワーク] オプションを選びます。

    [パブリック ネットワーク アクセス] ページで使用できるオプションの詳細を次に示します。

    • Disabled。 このオプションでは、名前空間へのパブリック アクセスが無効になります。 名前空間には、プライベート エンドポイント経由でのみアクセスできます。

    • [選択されたネットワーク]。 このオプションでは、選択されたネットワークからアクセス キーを使用して名前空間にパブリック アクセスできます。

      重要

      [選択されたネットワーク] を選択した場合は、少なくとも 1 つの IP ファイアウォール規則、または対象の名前空間にアクセスできる仮想ネットワークを追加してください。 この名前空間へのすべてのトラフィックをプライベート エンドポイント経由のみに制限する場合は、[無効] を使用します。

    • [すべてのネットワーク] (既定)。 このオプションを選択すると、アクセス キーを使用して、すべてのネットワークからパブリックにアクセスできるようになります。 [すべてのネットワーク] オプションを選択した場合、イベント ハブはあらゆる IP アドレスからの (アクセス キーを使用した) 接続を受け入れます。 この設定は、IP アドレス範囲 0.0.0.0/0 を受け入れる規則と同じです。

  4. 特定のネットワークにアクセスを制限するには、ページの先頭にある [選択されたネットワーク] オプションを選択します (まだ選択されていない場合)。

  5. ページの [仮想ネットワーク] セクションで、[+ 既存の仮想ネットワークを追加]* を選択します。 新しい VNet を作成する場合は、 [+ 新しい仮想ネットワークの作成] を選択します。

    Selection of Add existing virtual network menu item.

    重要

    [選択されたネットワーク] を選択した場合は、少なくとも 1 つの IP ファイアウォール規則、または対象の名前空間にアクセスできる仮想ネットワークを追加してください。 この名前空間へのすべてのトラフィックをプライベート エンドポイント経由のみに制限する場合は、[無効] を使用します。

  6. 仮想ネットワークの一覧から仮想ネットワークを選択し、サブネットを選択します。 仮想ネットワークを一覧に追加する前に、サービス エンドポイントを有効にする必要があります。 サービス エンドポイントが有効になっていない場合は、有効にするよう求められます。

    Image showing the selection of a subnet.

  7. Microsoft.EventHub に対して、サブネットのサービス エンドポイントが有効になると、次の成功メッセージが表示されます。 ページの下部にある [追加] を選択して、ネットワークを追加します。

    Image showing the selection of a subnet and enabling an endpoint.

    Note

    サービス エンドポイントを有効にできない場合は、Resource Manager テンプレートを使用して、不足している仮想ネットワーク サービス エンドポイントを無視してもかまいません。 この機能はポータルでは使用できません。

  8. 信頼された Microsoft サービスがこのファイアウォールをバイパスすることを許可するかどうかを指定します。 詳細については、「信頼できる Microsoft サービス」を参照してください。

  9. ツール バーの [保存] を選択して設定を保存します。 ポータルの通知に確認が表示されるまで、数分間お待ちください。

    Image showing the saving of virtual network.

    Note

    特定の IP アドレスまたは範囲にアクセスを制限する方法については、特定の IP アドレスまたは範囲からのアクセスの許可に関するページを参照してください。

信頼できる Microsoft サービス

[信頼された Microsoft サービスがこのファイアウォールをバイパスすることを許可する] 設定を有効にした場合、同じテナント内の次のサービスに Event Hubs リソースへのアクセス権が与えられます。

信頼できるサービス サポートされる使用シナリオ
Azure Event Grid Event Hubs 名前空間のイベント ハブにイベントを送信することを Azure Event Grid に許可します。 次の手順も行う必要があります。
  • トピックまたはドメインに対してシステム割り当て ID を有効にする
  • Event Hubs 名前空間で Azure Event Hubs データ送信者ロールに ID を追加する
  • 次に、システムによって割り当てられた ID を使用するために、イベント ハブをエンドポイントとして使用するイベント サブスクリプションを構成する

詳細については、「マネージド ID を使用したイベント配信」を参照してください

Azure Stream Analytics Event Hubs 名前空間のイベント ハブからのデータの読み取り (入力) またはイベント ハブへの書き込み (出力) を Azure Stream Analytics ジョブに許可します。

重要:Stream Analytics ジョブは、マネージド ID を使用してイベント ハブにアクセスするように構成されている必要があります。 詳細については、「Azure Stream Analytics ジョブからマネージド ID を使用してイベント ハブにアクセスする (プレビュー)」を参照してください。

Azure IoT Hub Event Hubs 名前空間のイベント ハブにメッセージを送信することを IoT Hub に許可します。 次の手順も行う必要があります。
  • IoT ハブのシステム割り当て ID を有効にする
  • Event Hubs 名前空間で Azure Event Hubs データ送信者ロールに ID を追加する。
  • その後、ID ベースの認証を使用するため、イベント ハブをカスタム エンドポイントとして使用するように IoT Hub を構成する。
Azure API Management

API Management サービスを使用すると、Event Hubs 名前空間のイベント ハブにイベントを送信できます。

Azure Monitor ([診断設定] と [アクション グループ]) Event Hubs 名前空間のイベント ハブに診断情報とアラート通知を送信することを Azure Monitor に許可します。 Azure Monitor では、イベント ハブから読み取ることができ、イベント ハブにデータを書き込むこともできます。
Azure Synapse Azure Synapse が Synapse ワークスペースのマネージド ID を使用してイベント ハブに接続できるようにします。 Azure Event Hubs データ送信者、受信者、または所有者のロールを Event Hubs 名前空間の ID に追加します。
Azure Data Explorer Azure Data Explorer でクラスターのマネージド ID を使用してイベント ハブからイベントを受信できるようにします。 次の手順を行う必要があります。
  • Azure Data Explorer でマネージド ID を構成する
  • イベント ハブで、Azure Event Hubs データ受信者ロールを ID に付与します。
 
Azure IoT Central

Event Hubs 名前空間のイベント ハブにデータをエクスポートすることを IoT Central に許可します。 次の手順も行う必要があります。

Azure Health Data Services Healthcare API の IoT コネクタで Event Hubs 名前空間から医療デバイス データを取り込み、構成済みの高速ヘルスケア相互運用性リソース (FHIR®) サービスにデータを保持できるようにします。 IoT コネクタは、マネージド ID を使用してイベント ハブにアクセスするように構成されている必要があります。 詳細については、IoT コネクタの概要 - Azure Healthcare API に関する記事を参照してください。
Azure Digital Twins Azure Digital Twins が Event Hubs 名前空間内のイベント ハブにデータを送信できるようにします。 次の手順も行う必要があります。

  • Azure Digital Twins インスタンスのシステム割り当て ID を有効にします。
  • Event Hubs 名前空間で Azure Event Hubs データ送信者ロールに ID を追加します。
  • 次に、システム割り当て ID を使用して認証する Azure Digital Twins エンドポイントまたは Azure Digital Twins データ履歴接続を構成します。 Azure Digital Twins から Event Hubs リソースへのエンドポイントとイベント ルートの構成の詳細については、「Azure Digital Twins イベントのルーティング」と「Azure Digital Twins でエンドポイントを作成する」を参照してください。

Azure Event Hubs のその他の信頼できるサービスは次のとおりです。

  • Azure Arc
  • Azure Kubernetes
  • Azure Machine Learning
  • Microsoft Purview

Resource Manager テンプレートの使用

次の Resource Manager テンプレートの例では、既存の Event Hubs 名前空間に仮想ネットワーク規則を追加します。 ネットワーク規則では、仮想ネットワーク内のサブネットの ID を指定します。

この ID は、仮想ネットワーク サブネットの Resource Manager の完全修飾パスです。 たとえば、仮想ネットワークの既定のサブネットの場合は /subscriptions/{id}/resourceGroups/{rg}/providers/Microsoft.Network/virtualNetworks/{vnet}/subnets/default です。

仮想ネットワークまたはファイアウォール規則を追加する場合は、defaultAction の値を Deny に設定します。

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
      "eventhubNamespaceName": {
        "type": "string",
        "metadata": {
          "description": "Name of the Event Hubs namespace"
        }
      },
      "virtualNetworkName": {
        "type": "string",
        "metadata": {
          "description": "Name of the Virtual Network Rule"
        }
      },
      "subnetName": {
        "type": "string",
        "metadata": {
          "description": "Name of the Virtual Network Sub Net"
        }
      },
      "location": {
        "type": "string",
        "metadata": {
          "description": "Location for Namespace"
        }
      }
    },
    "variables": {
      "namespaceNetworkRuleSetName": "[concat(parameters('eventhubNamespaceName'), concat('/', 'default'))]",
      "subNetId": "[resourceId('Microsoft.Network/virtualNetworks/subnets/', parameters('virtualNetworkName'), parameters('subnetName'))]"
    },
    "resources": [
      {
        "apiVersion": "2018-01-01-preview",
        "name": "[parameters('eventhubNamespaceName')]",
        "type": "Microsoft.EventHub/namespaces",
        "location": "[parameters('location')]",
        "sku": {
          "name": "Standard",
          "tier": "Standard"
        },
        "properties": { }
      },
      {
        "apiVersion": "2017-09-01",
        "name": "[parameters('virtualNetworkName')]",
        "location": "[parameters('location')]",
        "type": "Microsoft.Network/virtualNetworks",
        "properties": {
          "addressSpace": {
            "addressPrefixes": [
              "10.0.0.0/23"
            ]
          },
          "subnets": [
            {
              "name": "[parameters('subnetName')]",
              "properties": {
                "addressPrefix": "10.0.0.0/23",
                "serviceEndpoints": [
                  {
                    "service": "Microsoft.EventHub"
                  }
                ]
              }
            }
          ]
        }
      },
      {
        "apiVersion": "2018-01-01-preview",
        "name": "[variables('namespaceNetworkRuleSetName')]",
        "type": "Microsoft.EventHub/namespaces/networkruleset",
        "dependsOn": [
          "[concat('Microsoft.EventHub/namespaces/', parameters('eventhubNamespaceName'))]"
        ],
        "properties": {
          "publicNetworkAccess": "Enabled",
          "defaultAction": "Deny",
          "virtualNetworkRules": 
          [
            {
              "subnet": {
                "id": "[variables('subNetId')]"
              },
              "ignoreMissingVnetServiceEndpoint": false
            }
          ],
          "ipRules":[],
          "trustedServiceAccessEnabled": false
        }
      }
    ],
    "outputs": { }
  }

テンプレートをデプロイするには、Azure Resource Manager の手順に従います。

重要

IP 規則も仮想ネットワーク規則も指定されていない場合は、defaultActiondeny に設定しても、すべてのトラフィックが名前空間に送られます。 名前空間には、パブリック インターネット経由で (アクセス キーを使用して) アクセスできます。 指定された IP アドレスまたは仮想ネットワークのサブネットからのトラフィックのみを許可するには、名前空間に少なくとも 1 つの IP 規則または仮想ネットワーク規則を指定します。

Azure CLI の使用

az eventhubs namespace network-rule-set add、list、update、remove の各コマンドを使用して、Service Bus 名前空間の仮想ネットワーク規則を管理します。

Azure PowerShell の使用

Service Bus 名前空間のネットワーク規則を追加、一覧表示、削除、更新、削除するには、次のAzure PowerShell コマンドを使用します。

既定のアクションとパブリック ネットワーク アクセス

REST API

defaultAction プロパティの既定値は、defaultActionの API バージョンでは Deny でした。 ただし、IP フィルターまたは仮想ネットワーク (VNet) の規則を設定しない限り、拒否の規則は適用されません。 つまり、IP フィルターと VNet 規則のどちらも持っていなかった場合は、Allow として扱われます。

API バージョン 2021-06-01-preview 以降では、サービス側の適用を正確が反映されるよう、defaultAction プロパティの既定値は Allow です。 既定のアクションが Deny に設定されている場合は、IP フィルターと VNet 規則が適用されます。 既定のアクションが Allow に設定されている場合は、IP フィルターと VNet 規則が適用されません。 ルールをオフにしてから再度有効にしたときも、サービスではルールが記憶されています。

API バージョン 2021-06-01-preview 以降では、publicNetworkAccess という名前の新しいプロパティも導入されています。 これを Disabled に設定した場合は、操作がプライベート リンクのみに制限されます。 Enabled に設定した場合は、パブリック インターネット上で操作が許可されます。

これらのプロパティの詳細については、「ネットワーク 規則セットの作成または更新」および「プライベート エンドポイント接続の作成または更新」を参照してください。

Note

上記の設定ではいずれも、SAS または Microsoft Entra 認証による要求の検証がバイパスされません。 認証チェックは、常に、defaultActionpublicNetworkAccessprivateEndpointConnections の設定で構成されたネットワーク チェックをサービスが検証した後に実行されます。

Azure portal

Azure portal は常に、最新の API バージョンを使用してプロパティを取得し、設定します。 以前に、defaultActionDeny に設定し、IP フィルターと VNet 規則をまったく指定せずに 2021-01-01-preview 以前を使用していた場合は、Azure portal で、名前空間の [ネットワーク] ページの [選択されたネットワーク] がオンになっているはずです。 現在は、[すべてのネットワーク] オプションがオンになっています。

Screenshot that shows the Public access page with the All networks option selected.

次のステップ

仮想ネットワークについて詳しくは、以下のリンクをご覧ください。