允許從特定 IP 位址或範圍存取 Azure 服務匯流排命名空間

根據預設,只要要求包含有效的驗證和授權,便可以從網際網路存取服務匯流排命名空間。 使用 IP 防火牆時,輸入流量可以限制為一組 IPv4 位址或 IPv4 位址範圍 (在 CIDR (無類別網域間路由) 表示法中)。

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

IP 防火牆規則

IP 防火牆規則會套用在服務匯流排命名空間層級上。 因此,規則會套用至來自用戶端且使用任何支援通訊協定 (AMQP (5671) 和 HTTPS (443)) 的所有連線。 任何來自某個 IP 位址的連線嘗試,只要不符合「服務匯流排」命名空間上的允許 IP 規則,系統就會將它視為未經授權而予以拒絕。 回應不會提及 IP 規則。 IP 篩選器規則會依序套用,而且第一個符合 IP 位址的規則會決定接受或拒絕動作。

重點

  • 只有在「服務匯流排」的進階層中才支援「虛擬網路」。 如果升級至高階層級不是選項,則可以使用 IP 防火牆規則。 我們建議您保持共用存取簽章 (SAS) 令牌的安全,並只與授權的用戶共用。 如需 SAS 驗證的相關資訊,請參閱驗證和授權

  • 為命名空間指定至少一個 IP 防火牆規則或虛擬網路規則,只允許來自虛擬網路的指定 IP 位址或子網路的流量。 如果沒有 IP 和虛擬網路規則,可透過公用網際網路 (使用存取金鑰) 來存取命名空間。

  • 實作「防火牆」規則可防止其他 Azure 服務與「服務匯流排」進行互動。 例外狀況是,即使在啟用 IP 篩選時,您也可以允許從某些信任的服務存取服務匯流排資源。 如需信任的服務清單,請參閱信任的服務

    虛擬網路上必須有下列 Microsoft 服務

    • Azure App Service
    • Azure Functions

注意

您只會看到進階命名空間的 [網路] 索引標籤。 若要設定其他層的 IP 防火牆規則,請使用 Azure Resource Manager 範本Azure CLIPowerShellREST API

使用 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。 此選項會停用對命名空間的任何公用存取。 命名空間只能透過私人端點來存取。

      Screenshot that shows the Networking page of a namespace with public access disabled.

      選擇您是否想要允許信任的 Microsoft 服務略過此防火牆。 如需 Azure 服務匯流排信任的 Microsoft 服務清單,請參閱信任的 Microsoft 服務一節。

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

      重要

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

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

  4. 若要只允許從指定的 IP 位址進行存取,請選取 [選取的網路] 選項 (如果尚未選取)。 在 [防火牆] 區段中,依照下列步驟:

    1. 選取 [新增您的用戶端 IP 位址] 選項,來將命名空間的存取權授與您目前的用戶端 IP。

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

    3. 指定您是否要 [允許受信任的 Microsoft 服務略過此防火牆]。 如需 Azure 服務匯流排信任的 Microsoft 服務清單,請參閱信任的 Microsoft 服務一節。

      警告

      如果您選取 [選取的網路] 選項,且未在此頁面上新增至少一個 IP 防火牆規則或虛擬網路,則可以透過公用網際網路 (使用存取金鑰) 存取命名空間。

      Screenshot of the Azure portal Networking page. The option to allow access from Selected networks is selected and the Firewall section is highlighted.

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

    注意

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

受信任的 Microsoft 服務

啟用 [允許信任的 Microsoft 服務略過此防火牆] 設定時,下列服務會獲授與服務匯流排資源的存取權。

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

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

Azure 串流分析 允許 Azure 串流分析作業將資料輸出至主題的服務匯流排佇列

重要:串流分析作業應設定為使用受控識別來存取服務匯流排命名空間。 將身分識別新增至服務匯流排命名空間上的 Azure 服務匯流排資料傳送者角色。

Azure IoT 中樞 允許 IoT 中樞將訊息傳送至服務匯流排命名空間中的佇列或主題。 您也必須執行下列步驟:
Azure API 管理

API 管理服務可讓您將訊息傳送至服務匯流排命名空間中的服務匯流排佇列/主題。

Azure IoT Central

可讓 IoT Central 將資料匯出至服務匯流排命名空間中的服務匯流排佇列或主題。 您也必須執行下列步驟:

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 監視器將診斷資訊和警示通知傳送至服務匯流排命名空間中的服務匯流排。 Azure 監視器可以從服務匯流排命名空間讀取資料,以及將資料寫入其中。
Azure Synapse 允許 Azure Synapse 使用 Synapse 工作區受控識別連線至服務匯流排。 將 Azure 服務匯流排資料傳送者、接收者或擁有者角色新增至服務匯流排命名空間上的身分識別。

以下是 Azure 服務匯流排的其他受信任服務:

  • Azure 資料總管
  • Azure 健康資料服務
  • Azure Arc
  • Azure Kubernetes
  • Azure Machine Learning
  • Microsoft Purview

使用 Resource Manager 範本

本節提供的範例 Azure Resource Manager 範本會將虛擬網路和防火牆規則新增至現有的服務匯流排命名空間。

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": "mypremiumnamespace",
            "type": "String"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.ServiceBus/namespaces",
            "apiVersion": "2022-10-01-preview",
            "name": "[parameters('namespace_name')]",
            "location": "East US",
            "sku": {
                "name": "Premium",
                "tier": "Premium",
                "capacity": 1
            },
            "properties": {
                "premiumMessagingPartitions": 1,
                "minimumTlsVersion": "1.2",
                "publicNetworkAccess": "Enabled",
                "disableLocalAuth": false,
                "zoneRedundant": true
            }
        },
        {
            "type": "Microsoft.ServiceBus/namespaces/networkRuleSets",
            "apiVersion": "2022-10-01-preview",
            "name": "[concat(parameters('namespace_name'), '/default')]",
            "location": "East US",
            "dependsOn": [
                "[resourceId('Microsoft.ServiceBus/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"
                    }
                ]
            }
        }
    ]
}

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

重要

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

使用 Azure CLI

使用 az servicebus namespace network-rule-set add、list、update 和 remove 命令,管理 Azure 服務匯流排命名空間的 IP 防火牆規則。

使用 Azure PowerShell

使用下列 Azure PowerShell 命令來新增、列出、移除、更新和刪除 IP 防火牆規則。

預設動作和公用網路存取

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 of the Azure portal Networking page. The option to allow access from All networks is selected on the Firewalls and virtual networks tab.

下一步

若要將對服務匯流排的存取限定為 Azure 虛擬網路,請參閱下列連結: