允許從特定虛擬網路存取 Azure 事件中樞命名空間

將事件中樞與虛擬網路 (VNet) 服務端點整合,可以安全存取來自虛擬機器 (繫結至虛擬網路) 等工作負載的傳訊功能,而且兩端的網路流量路徑都能受到保護。

一旦設定為繫結到至少一個虛擬網路子網路服務端點,各自的事件中樞命名空間便只能接受虛擬網路中已授權的子網路,而無法再接受其他位置的流量。 從虛擬網路的角度來看,將事件中樞命名空間繫結至服務端點,會設定從虛擬網路子網路到傳訊服務的隔離式網路通道。

最終這會在繫結至子網路的工作負載與各自的事件中樞命名空間之間,建立私人且隔離的關係,儘管傳訊服務端點顯示的網路位址位於公用 IP 範圍中。 此行為有例外狀況。 啟用服務端點時,依預設會在該虛擬網路相關的 IP 防火牆中啟用 denyall 規則。 您可在 IP 防火牆中新增特定 IP 位址,以啟用事件中樞公用端點的存取權。

重點

  • 基本層中不支援此功能。
  • 啟用事件中樞命名空間的虛擬網路會預設封鎖傳入要求,除非要求源自於來自允許的虛擬網路運作的服務。 封鎖的要求包括來自其他 Azure 服務、Azure 入口網站及記錄與計量服務等等的要求。 例外狀況是,即使在啟用虛擬網路時,您也可以允許從某些信任的服務存取事件中樞資源。 如需信任的服務清單,請參閱信任的服務
  • 為命名空間指定至少一個 IP 規則或虛擬網路規則,只允許來自虛擬網路的指定 IP 位址或子網路的流量。 如果沒有 IP 和虛擬網路規則,可透過公用網際網路 (使用存取金鑰) 來存取命名空間。

VNet 整合所實現的進階安全性案例

當解決方案需要嚴格的劃分式安全性,且虛擬網路子網路可區隔各項劃分的服務,各項劃分的服務間通常仍需要通訊路徑。

區間之間的任何立即 IP 路由,包括那些運輸 HTTPS over TCP/IP,會帶來上層網路的弱點危害風險。 傳訊服務提供隔離式的通訊路徑,當訊息在對象之間轉換時,甚至會寫入磁碟。 兩個都繫結到相同事件中樞執行個體的不同虛擬網路,當中的工作負載可以透過訊息有效且可靠地通訊,並且保留各自的網路隔離界限完整性。

這表示您的安全性敏感雲端解決方案,不只獲得 Azure 可靠、可擴充的領先業界非同步傳訊功能的存取權,而且它們現在可以使用傳訊來建立安全解決方案區間之間的通訊路徑,這些區間本質上比任何對等通訊模式 (包括 HTTPS 和其他 TLS 保護的通訊端通訊協定) 更為安全。

將事件中樞繫結至虛擬網路

「虛擬網路規則」是防火牆安全性功能,可控制 Azure 事件中樞命名空間是否接受來自特定虛擬網路子網路的連線。

將事件中樞命名空間繫結至虛擬網路是一個雙步驟程序。 您必須先在虛擬網路子網路上建立虛擬網路服務端點,接著針對 Microsoft.EventHub 啟用該端點 (如服務端點概觀一文所述)。 一旦您新增服務端點,便會使用虛擬網路規則將事件中樞命名空間與其繫結。

虛擬網路規則是「事件中樞」命名空間與虛擬網路子網路的關聯。 此規則存在時,繫結至該子網路的所有工作負載都會獲得事件中樞命名空間的存取權。 事件中樞本身一律不會建立輸出連線,且無須取得存取權,因此即使啟用這項規則,也一律不會獲得您子網路的存取權。

使用 Azure 入口網站

建立命名空間時,您可以允許僅限公用 (來自所有網路) 或僅限私人 (僅透過私人端點) 存取命名空間。 一旦建立了命名空間,您就可以允許從特定 IP 位址或從特定虛擬網路進行存取 (使用網路服務端點)。

建立命名空間時設定公用存取

若要啟用公用存取,請在命名空間建立精靈的 [網路] 頁面上選取 [公用存取]

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

在建立命名空間之後,請在 [服務匯流排命名空間] 頁面的左側功能表上選取 [網路]。 您會看到已選取 [所有網路] 選項。 您可以選取 [選取的網路] 選項,並允許從特定 IP 位址或特定虛擬網路進行存取。 下一節會為您提供詳細資料,說明如何指定允許存取的網路。

為現有的命名空間設定選取的網路

本節說明如何使用 Azure 入口網站來新增虛擬網路服務端點。 若要限制存取,您必須為此事件中樞命名空間整合虛擬網路服務端點。

  1. Azure 入口網站中,瀏覽到您的事件中樞命名空間

  2. 在左側功能表的 [設定] 底下選取 [網路]

  3. 在 [網路] 頁面上,針對 [公用網路存取],您可以設定下列三個選項的其中一個。 選擇 [選取的網路] 選項,只允許來自特定虛擬網路的存取。

    以下是 [公用網路存取] 頁面中可用選項的詳細資料:

    • Disabled。 此選項會停用對命名空間的任何公用存取。 命名空間只能透過私人端點來存取。

    • 選取的網路。 此選項可讓您使用來自所選網路的存取金鑰來公開存取命名空間。

      重要

      如果您選擇 [選取的網路],請新增至少一個可存取命名空間的 IP 防火牆規則或虛擬網路。 如果您想要將對此命名空間的所有流量限制在僅透過私人端點,請選擇 [已停用]

    • 所有網路 (預設值)。 此選項可啟用使用存取金鑰透過所有網路進行公開存取。 如果您選取 [所有網路] 選項,事件中樞便會接受來自任何 IP 位址的連線 (使用存取金鑰)。 此設定等同於可接受 0.0.0.0/0 IP 位址範圍的規則。

  4. 若要限制對特定網路的存取,請在頁面頂端選擇 [選取的網路] 選項 (如果尚未選取)。

  5. 在頁面中的 [虛擬網路] 區段中選取 [+ 新增現有的虛擬網路]*。 如果您想要建立新的 VNet,請選取 [+ 建立新的虛擬網路]

    Selection of Add existing virtual network menu item.

    重要

    如果您選擇 [選取的網路],請新增至少一個可存取命名空間的 IP 防火牆規則或虛擬網路。 如果您想要將對此命名空間的所有流量限制在僅透過私人端點,請選擇 [已停用]

  6. 從虛擬網路清單中選取虛擬網路,然後挑選子網路。 您必須先啟用服務端點,才能將虛擬網路新增至清單中。 如果未啟用服務端點,入口網站會提示您將其啟用。

    Image showing the selection of a subnet.

  7. 針對 Microsoft.EventHub 的子網路啟用服務端點之後,您應該會看到下列成功訊息。 選取頁面底部的 [新增] 以新增網路。

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

    注意

    如果您無法啟用服務端點,則可以忽略使用 Resource Manager 範本的遺漏虛擬網路服務端點。 在入口網站上無法使用這項功能。

  8. 指定您是否要 [允許受信任的 Microsoft 服務略過此防火牆]。 如需詳細資料,請參閱信任的 Microsoft 服務

  9. 選取工具列上的 [儲存] 來儲存設定。 等候幾分鐘的時間,讓入口網站通知上顯示確認訊息。

    Image showing the saving of virtual network.

    注意

    若要限制對特定 IP 位址或範圍的存取,請參閱 允許從特定 IP 位址或範圍進行存取

受信任的 Microsoft 服務

啟用 [允許信任的 Microsoft 服務略過此防火牆] 設定時,相同租用戶內的下列服務會獲授與事件中樞資源的存取權。

信任的服務 支援的使用方式情節
事件格線 允許 Azure 事件方格將事件傳送至事件中樞命名空間中的事件中樞。 您也必須執行下列步驟:
  • 為主題或網域啟用系統指派的身分識別
  • 將身分識別新增至事件中樞命名空間上的 Azure 事件中樞資料寄件者角色
  • 然後,將使用事件中樞作為端點的事件訂用帳戶設定為使用系統指派的身分識別。

如需詳細資訊,請參閱使用受控識別傳遞事件

Azure 串流分析 允許 Azure 串流分析作業從事件中樞命名空間中的事件中樞讀取資料 (輸入),或將資料寫入至其中 (輸出)。

重要:串流分析作業應設定為使用受控識別來存取事件中樞。 如需詳細資訊,請參閱使用受控識別從 Azure 串流分析作業存取事件中樞 (預覽)

Azure IoT 中樞 允許 IoT 中樞將訊息傳送至事件中樞命名空間中的事件中樞。 您也必須執行下列步驟:
  • 為您的 IoT 中樞啟用系統指派的身分識別
  • 將身分識別新增至事件中樞命名空間上的 Azure 事件中樞資料寄件者角色。
  • 然後,將使用事件中樞的 IoT 中樞設定為自訂端點,以使用以身分識別為基礎的驗證。
Azure API 管理

API 管理服務可讓您將事件傳送至事件中樞命名空間中的事件中樞。

Azure 監視器 (診斷設定和動作群組) 允許 Azure 監視器將診斷資訊和警示通知傳送至事件中樞命名空間中的事件中樞。 Azure 監視器可以從事件中樞讀取資料,也可以將資料寫入至事件中樞。
Azure Synapse 允許 Azure Synapse 使用 Synapse 工作區受控識別連線至事件中樞。 將 Azure 事件中樞資料傳送者、接收者或擁有者角色新增至事件中樞命名空間上的身分識別。
Azure 資料總管 允許 Azure 資料總管使用叢集的受控識別,從事件中樞接收事件。 您需要執行下列步驟:
  • 在 Azure 資料總管上設定受控識別
  • 在事件中樞上,將 Azure 事件中樞資料接收者角色授與身分識別。
 
Azure IoT Central

允許 IoT Central 將資料匯出至事件中樞命名空間中的事件中樞。 您也必須執行下列步驟:

Azure 健康資料服務 允許醫療保健 API IoT 連接器從事件中樞命名空間擷取醫療裝置資料,並將資料保存在您設定的快速健康照護互通資源 (FHIR®) 服務中。 IoT 連接器應設定為使用受控識別來存取事件中樞。 如需詳細資訊,請參閱開始使用 IoT 連接器 - Azure 醫療保健 API
Azure Digital Twins 允許 Azure Digital Twins 將資料輸出到事件中樞命名空間中的事件中樞。 您也必須執行下列步驟:

  • 為您的 Azure Digital Twins 執行個體啟用系統指派的身分識別。
  • 將身分識別新增至事件中樞命名空間上的 Azure 事件中樞資料寄件者角色。
  • 然後,設定 Azure Digital Twins 端點,或使用系統指派身分識別進行驗證的 Azure Digital Twins 資料歷程記錄連線。 如需設定從 Azure Digital Twins 至事件中樞資源的端點和事件路由的詳細資訊,請參閱路由 Azure Digital Twins 事件在 Azure Digital Twins 中建立端點

以下是 Azure 事件中樞的其他受信任服務:

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

使用 Resource Manager 範本

下列 Resource Manager 範本可讓您將虛擬網路規則新增至現有的事件中樞命名空間。 針對網路規則,其會指定虛擬網路中子網路的識別碼。

識別碼是虛擬網路子網路的完整 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 規則或虛擬網路規則,只允許來自虛擬網路的指定 IP 位址或子網路的流量。

使用 Azure CLI

使用 az eventhubs namespace network-rule-set add、list、update 和 remove 命令,來管理服務匯流排命名空間的虛擬網路規則。

使用 Azure PowerShell

使用下列 Azure PowerShell 命令來新增、列出、移除、更新和刪除服務匯流排命名空間的網路規則。

預設動作和公用網路存取

REST API

API 版本 2021-01-01-preview 和更早版本defaultAction 屬性預設值是 Deny。 但除非您設定 IP 篩選器或虛擬網路 (VNet) 規則,否則不會強制執行拒絕規則。 換句話說,如果您沒有任何 IP 篩選器或 VNet 規則,則會將其視為 Allow

從 API 版本 2021-06-01-preview 開始defaultAction 屬性的預設值為 Allow,以精確地反映服務端強制執行。 如果預設動作設定為 Deny,則會強制執行 IP 篩選器和 VNet 規則。 如果預設動作設定為 Allow,則不會強制執行 IP 篩選器和 VNet 規則。 當您關閉並重新啟動規則時,服務會記住規則。

2021-06-01-preview 之後的 API 版本也引進名為 publicNetworkAccess 的新屬性。 如果設定為 Disabled,作業將僅限於私人連結。 如果設定為 Enabled,則允許透過公用網際網路執行作業。

如需這些屬性的詳細資訊,請參閱建立或更新網路規則集建立或更新私人端點連線

注意

上述設定都不會略過透過 SAS 或 Microsoft Entra 驗證進行的宣告驗證。 驗證檢查一律會在服務驗證由 defaultActionpublicNetworkAccessprivateEndpointConnections 設定所設定的網路檢查之後執行。

Azure 入口網站

Azure 入口網站會一律使用最新的 API 版本來取得和設定屬性。 如果您先前已使用將 defaultAction 設為 Deny2021-01-01-preview 和更早版本設定命名空間,且未指定任何 IP 篩選器和 VNet 規則,則入口網站先前會在命名空間的 [網路功能] 頁面上檢查 [選取的網路]。 現在,入口網站會檢查 [所有網路] 選項。

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

下一步

如需虛擬網路的詳細資訊,請參閱下列連結: