分享方式:


允許從特定 IP 位址或範圍存取 Azure 事件中樞命名空間

根據預設,只要要求具備有效的驗證和授權,便可以從網際網路存取事件中樞命名空間。 透過 IP 防火牆,您可以將其進一步限制為僅允許一組 IPv4 和 IPv6 位址,或是使用 CIDR (無類別網域間路由) 標記法來設定位址範圍。

此功能在只應該從特定知名網站存取 Azure 事件中樞的情況下會很有幫助。 防火牆規則可讓您設定規則以接受源自特定 IPv4 和 IPv6 位址的流量。 例如,如果您搭配 Azure Express Route 使用事件中樞,您可以建立防火牆規則以僅允許來自您內部部署基礎結構 IP 位址的流量。

IP 防火牆規則

您可以在事件中樞命名空間層級指定 IP 防火牆規則。 因此,規則會套用至來自用戶端、使用任何受支援通訊協定的所有連線。 任何來自某個 IP 位址的連線嘗試,只要不符合事件中樞命名空間上的允許 IP 規則,系統就會將其視為未經授權而予以拒絕。 回應不會提及 IP 規則。 IP 篩選器規則會依序套用,而且第一個符合 IP 位址的規則會決定接受或拒絕動作。

重點

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

使用 Azure 入口網站

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

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

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

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

在建立命名空間之後,請在 [事件中樞命名空間] 頁面的左側功能表上選取 [網路]。 您會看到已選取 [所有網路] 選項。 您可以選取 [選取的網路] 選項,並允許從特定 IP 位址或特定虛擬網路進行存取。 下一節將詳細說明如何設定 IP 防火牆,以指定允許存取的 IP 位址。

為現有命名空間設定 IP 防火牆

此節會示範如何使用 Azure 入口網站來為事件中樞命名空間建立 IP 防火牆規則。

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

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

  3. 在 [網路] 頁面上,針對 [公用網络存取],選擇 [選取的網路] 選項,只允許從指定的 IP 位址存取。

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

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

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

      重要

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

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

  4. 若要將存取限制為特定網路和 IP 位址,請選取 [選取的網路] 選項,接著,遵循下列步驟:

    1. 在 [防火牆] 區段中,選取 [新增您的用戶端 IP 位址] 選項,將命名空間的存取權授與您目前的用戶端 IP。

    2. 針對 [位址範圍],輸入特定的 IPv4 或 IPv6 位址,或是以 CIDR 標記法輸入 IPv4 或 IPv6 位址的範圍。

      重要

      當服務在未來開始支援 IPv6 連線,且用戶端自動切換至使用 IPv6 時,如果您只有 IPv4 位址,而沒有 IPv6 位址,則您的用戶端將會中斷。 因此,建議您現在將 IPv6 位址新增至允許的 IP 位址清單,如此一來,當服務最終切換至支援 IPv6 時,您的用戶端不會中斷。

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

      Firewall section highlighted in the Public access tab of the Networking page.

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

    注意

    若要限制對特定虛擬網路的存取,請參閱允許從特定網路存取

受信任的 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 範本可讓您將 IP 篩選器規則新增至現有的事件中樞命名空間。

範本中的 ipMask 是單一 IPv4 位址或以 CIDR 標記法表示的 IP 位址區塊。 例如,在 CIDR 標記法中,70.37.104.0/24 表示從 70.37.104.0 開始,到 70.37.104.255 為止,總共 256 個 IPv4 位址,而 24 則表示該範圍內的顯著前置詞位元。

注意

defaultAction 的預設值為 Allow。 新增虛擬網路或防火牆規則時,請確保將 defaultAction 設定為 Deny

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "namespace_name": {
            "defaultValue": "contosoehub1333",
            "type": "String"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.EventHub/namespaces",
            "apiVersion": "2022-01-01-preview",
            "name": "[parameters('namespace_name')]",
            "location": "East US",
            "sku": {
                "name": "Standard",
                "tier": "Standard",
                "capacity": 1
            },
            "properties": {
                "minimumTlsVersion": "1.2",
                "publicNetworkAccess": "Enabled",
                "disableLocalAuth": false,
                "zoneRedundant": true,
                "isAutoInflateEnabled": false,
                "maximumThroughputUnits": 0,
                "kafkaEnabled": true
            }
        },
        {
            "type": "Microsoft.EventHub/namespaces/authorizationrules",
            "apiVersion": "2022-01-01-preview",
            "name": "[concat(parameters('namespace_name'), '/RootManageSharedAccessKey')]",
            "location": "eastus",
            "dependsOn": [
                "[resourceId('Microsoft.EventHub/namespaces', parameters('namespace_name'))]"
            ],
            "properties": {
                "rights": [
                    "Listen",
                    "Manage",
                    "Send"
                ]
            }
        },
        {
            "type": "Microsoft.EventHub/namespaces/networkRuleSets",
            "apiVersion": "2022-01-01-preview",
            "name": "[concat(parameters('namespace_name'), '/default')]",
            "location": "East US",
            "dependsOn": [
                "[resourceId('Microsoft.EventHub/namespaces', parameters('namespace_name'))]"
            ],
            "properties": {
                "publicNetworkAccess": "Enabled",
                "defaultAction": "Deny",
                "virtualNetworkRules": [],
                "ipRules": [
                    {
                        "ipMask": "10.1.1.1",
                        "action": "Allow"
                    },
                    {
                        "ipMask": "11.0.0.0/24",
                        "action": "Allow"
                    },
                    {
                        "ipMask": "172.72.157.204",
                        "action": "Allow"
                    }
                ]
            }
        }
    ]
}

若要部署範本,請依照適用於 Azure Resource Manager 的指示執行。

重要

如果沒有 IP 和虛擬網路規則,則即使您將設定 defaultActiondeny,所有流量也會流向命名空間。 您可以透過公用網際網路存取命名空間 (使用存取金鑰)。 為命名空間指定至少一個 IP 規則或虛擬網路規則,只允許來自虛擬網路的指定 IP 位址或子網路的流量。

使用 Azure CLI

使用 az eventhubs namespace network-rule-set add、list、update 和 remove 命令,管理事件中樞命名空間的 IP 防火牆規則。

使用 Azure PowerShell

使用 Set-AzEventHubNetworkRuleSet Cmdlet 來新增一或多個 IP 防火牆規則。 文章中的範例:

$ipRule1 = New-AzEventHubIPRuleConfig -IPMask 2.2.2.2 -Action Allow
$ipRule2 = New-AzEventHubIPRuleConfig -IPMask 3.3.3.3 -Action Allow
$virtualNetworkRule1 = New-AzEventHubVirtualNetworkRuleConfig -SubnetId '/subscriptions/subscriptionId/resourcegroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVirtualNetwork/subnets/default'
$networkRuleSet = Get-AzEventHubNetworkRuleSet -ResourceGroupName myResourceGroup -NamespaceName myNamespace
$networkRuleSet.IPRule += $ipRule1
$networkRuleSet.IPRule += $ipRule2
$networkRuleSet.VirtualNetworkRule += $virtualNetworkRule1
Set-AzEventHubNetworkRuleSet -ResourceGroupName myResourceGroup -NamespaceName myNamespace -IPRule $ipRule1,$ipRule2 -VirtualNetworkRule $virtualNetworkRule1,$virtualNetworkRule2,$virtualNetworkRule3

預設動作和公用網路存取

REST API

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

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

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.

下一步

若要將對事件中樞的存取權限制為 Azure 虛擬網路,請參閱下列連結: