次の方法で共有


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

Event Hubs を Azure Virtual Network サービス エンドポイントと統合して、特定の仮想ネットワーク サブネットから Event Hubs 名前空間へのアクセスを制限します。 この記事では、仮想ネットワーク統合のしくみについて説明し、構成する手順について説明します。

Overview

仮想ネットワーク サービス エンドポイントを使用すると、仮想ネットワークで実行されているワークロード (仮想マシンなど) が Event Hubs 名前空間に安全にアクセスできます。 ネットワーク トラフィック パスは、両端でセキュリティで保護されます。

少なくとも 1 つの仮想ネットワーク サービス エンドポイントを使用して Event Hubs 名前空間を構成すると、名前空間は承認されたサブネットからのトラフィックのみを受け入れます。 仮想ネットワークの観点から、サービス エンドポイントは、サブネットから Event Hubs 名前空間への分離されたネットワーク トンネルを作成します。

この構成では、Event Hubs サービス エンドポイントがパブリック IP アドレスを使用している場合でも、サブネット内のワークロードと Event Hubs 名前空間の間にプライベートで分離された接続が確立されます。

重要なポイント

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

仮想ネットワークの統合によって実現される高度なセキュリティのシナリオ

仮想ネットワーク統合では、コンパートメント化されたサービス間の通信を引き続き許可しながら、厳密なセキュリティ分離を必要とするシナリオがサポートされます。

TCP/IP 経由で HTTPS を使用している場合でも、ネットワーク コンパートメント間の直接 IP ルートは、ネットワーク層の悪用に対して脆弱です。 Event Hubs は、仲介役として機能することで、より安全な代替手段を提供します。 同じ Event Hubs インスタンスに接続する個別の仮想ネットワーク内のワークロードは、ネットワーク分離を維持しながら、メッセージを確実に交換できます。

このアプローチにより、セキュリティに依存するソリューションは、Azure のスケーラブルなメッセージング機能にアクセスしながら、ピアツーピアの直接接続よりも安全な通信パスを作成できます。

Event Hubs を仮想ネットワークにバインドする

仮想ネットワーク ルールは、 Event Hubs 名前空間が特定の仮想ネットワーク サブネットからの接続を受け入れるかどうかを制御します。

Event Hubs 名前空間を仮想ネットワークにバインドするには:

  1. 仮想ネットワーク サブネット上に サービス エンドポイント を作成し、 Microsoft.EventHub で有効にします。 詳細については、仮想ネットワーク サービス エンドポイントに関するページを参照してください。
  2. Event Hubs 名前空間をサービス エンドポイントにバインドする 仮想ネットワーク規則 を追加します。

仮想ネットワーク規則は、Event Hubs 名前空間と仮想ネットワーク サブネットの間に関連付けを作成します。 サブネット内のすべてのワークロードは、ルールが存在する間、Event Hubs 名前空間にアクセスできます。

Note

Event Hubs では、サブネットへの送信接続は確立されません。 この規則は、サブネットから Event Hubs への受信アクセスのみを許可します。

Azure Portal の使用

名前空間を作成するときは、次のいずれかを選択できます。

  • パブリック アクセス: すべてのネットワークからのアクセスを許可します。
  • プライベート アクセス: プライベート エンドポイントのみにアクセスを制限します。

名前空間を作成したら、IP アドレス、仮想ネットワーク、またはネットワーク セキュリティ境界を指定することで、アクセスをさらに絞り込むことができます。

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

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

[パブリック アクセス] オプションが選択されている名前空間の作成ウィザードの [ネットワーク] ページを示すスクリーンショット。

名前空間を作成したら、[Event Hubs 名前空間] ページの左側のメニューで [ネットワーク] を選択します。

既定では、すべてのネットワークの名前空間に対して パブリック ネットワーク アクセス が有効 になっています

パブリック ネットワーク アクセスが有効になっている Event Hubs 名前空間の [ネットワーク] ページを示すスクリーンショット。

このオプションでは、アクセス キーを使用して、すべてのネットワークからのパブリック アクセスを有効にします。 名前空間は、(アクセス キーを使用して) 任意の IP アドレスからの接続を受け入れます。

次のセクションでは、アクセスを許可する仮想ネットワークを指定するように仮想ネットワーク サービス エンドポイントを構成する方法について詳しく説明します。

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

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

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

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

  3. [ネットワーク] ページで、[パブリック ネットワーク アクセス] で [管理] を選択します。

    [管理] ボタンが強調表示されている [パブリック アクセス] ページを示すスクリーンショット。

  4. [ パブリック ネットワーク アクセス ] ページの [既定のアクション ] セクションで、[ 選択したネットワークから有効にする ] を選択して、指定した IP アドレスからのアクセスのみを許可します。

    [選択したネットワークから有効にする] オプションが選択されている [パブリック ネットワーク アクセス] ページを示すスクリーンショット。

    Important

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

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

    [既存の仮想ネットワークの追加] メニュー項目の選択。

    Important

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

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

    サブネットの選択を示す画像。

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

    サブネットの選択とエンドポイントの有効化を示す画像。

    Note

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

  8. [ 例外 ] セクションで、 信頼された Microsoft サービスにこのリソースへのアクセスを許可するかどうかを指定します。 詳細については、 信頼できる Microsoft サービス を参照してください。

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

    仮想ネットワークの保存を示す画像。

    Note

    特定の IP アドレスまたは範囲へのアクセスを制限するには、「 特定の IP アドレスまたは範囲からのアクセスを許可する」を参照してください。

    Note

    仮想ネットワーク規則を削除するには、まず、仮想ネットワークの Azure Resource Manager の削除ロックを削除します。

信頼できる Microsoft サービス

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

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

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

Azure Stream Analytics Azure Stream Analytics ジョブが Event Hubs 名前空間内のイベント ハブからデータを読み取る (入力) または、イベント ハブにデータを書き込む (出力) ことができるようにします。

重要: 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 の手順に従います。

Important

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

Azure CLI を使用する

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

  • add - 仮想ネットワーク規則を追加する
  • list - すべてのネットワーク ルールを一覧表示する
  • update - ネットワーク ルールを更新する
  • remove - 仮想ネットワーク規則を削除する

Azure PowerShell の使用

Event Hubs 名前空間の仮想ネットワーク 規則を管理するには、次の Azure PowerShell コマンドを使用します。

Command Description
Add-AzEventHubVirtualNetworkRule 仮想ネットワーク規則を追加する
New-AzEventHubVirtualNetworkRuleConfig 仮想ネットワーク 規則の構成を作成する ( Set-AzEventHubNetworkRuleSetで使用)
Set-AzEventHubNetworkRuleSet 名前空間にネットワーク 規則の構成を適用する
Remove-AzEventHubVirtualNetworkRule 仮想ネットワーク規則を削除する

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

REST API

defaultAction プロパティの動作は、API のバージョンによって異なります。

API バージョン 既定値 行動
2021-01-01-preview 以前 Deny IP フィルターまたは仮想ネットワーク規則を構成しない限り、拒否規則は適用されません。 ルールがない場合、トラフィックは許可されます。
2021-06-01-preview 以降 Allow サービスによって、構成されたアクションが適用されます。 ルールと一致しないトラフィックをブロックするには、 Deny に設定します。

API バージョン 2021-06-01-preview では、 publicNetworkAccess プロパティも導入されています。

  • Enabled - パブリック インターネット経由の操作を許可する
  • Disabled - 操作をプライベート リンクのみに制限する

サービスでは、ルールを無効にして再度有効にすると、ルールが記憶されます。

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

Note

ネットワーク設定は認証をバイパスしません。 サービスは、 defaultActionpublicNetworkAccess、および privateEndpointConnectionsによって構成されたネットワーク 規則を確認した後、SAS または Microsoft Entra 認証要求を常に検証します。

Azure portal

Azure portal では、常に最新の API バージョンを使用してプロパティを取得および設定します。 2021-01-01-preview 以前のバージョンを使用して名前空間を構成し、defaultActionDeny に設定し、IP フィルターと仮想ネットワーク規則を 0 個指定した場合、ポータルは以前に名前空間の [ネットワーク] ページで [選択されたネットワーク] をオンにしました。 次に、[ すべてのネットワーク ] オプションを確認します。

[すべてのネットワーク] オプションが選択されている [パブリック アクセス] ページのスクリーンショット。