針對 Azure SignalR 服務使用私人端點

您可以使用 Azure SignalR Service 的私人端點 ,允許虛擬網路 (VNet) 上的用戶端透過 Private Link 安全地存取資料 。 私人端點會針對 Azure SignalR 服務使用來自 VNet 位址空間的 IP 位址。 VNet 和 Azure SignalR Service 上的用戶端之間的網路流量會透過 Microsoft 骨幹網路上的私人連結周遊,消除來自公用網際網路的暴露。

使用 Azure SignalR Service 的私人端點可讓您:

  • 使用網路存取控制保護您的 Azure SignalR 服務,以封鎖 Azure SignalR Service 公用端點上的所有連線。
  • 藉由讓您封鎖從 VNet 外泄資料,來增加虛擬網路 (VNet) 的安全性。
  • 使用 VPN ExpressRoutes 搭配私人對等互連,從內部 部署網路安全地連線至 VNet 的 Azure SignalR Services。

本文說明如何為您的 Azure SignalR 服務使用私人端點。

概念概觀

Overview of private endpoints for Azure SignalR Service

私人端點是您虛擬網絡 (VNet) 中 Azure 服務的特殊網路介面。 當您為 Azure SignalR 服務建立私人端點時,它會在 VNet 與服務上的用戶端之間提供安全的連線。 私人端點會從 VNet 的 IP 位址範圍指派 IP 位址。 私人端點與 Azure SignalR Service 之間的連線會使用安全的私人連結。

VNet 中的應用程式可以順暢地透過私人端點連線到 Azure SignalR Service, 並使用相同的連接字串和授權機制,否則 會使用它們。 私人端點可以搭配 Azure SignalR 服務支援的所有通訊協定使用,包括 REST API。

當您在 VNet 中為 Azure SignalR 服務建立私人端點時,會將同意要求傳送給 Azure SignalR 服務擁有者。 如果要求建立私人端點的使用者也是 Azure SignalR 服務的擁有者,則會自動核准此同意要求。

Azure SignalR 服務擁有者可以透過Azure 入口網站中 Azure SignalR 服務的 [ 私人端點] 索引標籤來管理同意要求和私人端點

提示

如果您想要僅透過私人端點限制對 Azure SignalR 服務的存取, 請將網路存取控制 設定為拒絕或控制透過公用端點的存取。

連線至私人端點

使用私人端點之 VNet 上的用戶端應該使用與連線至公用端點的用戶端相同的 Azure SignalR 服務連接字串。 我們依賴 DNS 解析,透過私人連結自動將連線從 VNet 路由傳送至 Azure SignalR Service。

重要

使用與使用私人端點相同的連接字串來連線到 Azure SignalR Service,否則為 。 請勿使用其 privatelink 子域 URL 連線到 Azure SignalR Service。

根據預設,我們會建立 連結至 VNet 的私人 DNS 區域 ,其中包含私人端點的必要更新。 不過,如果您使用自己的 DNS 伺服器,您可能需要對 DNS 設定進行其他變更。 私人端點的 DNS 變更一節 說明私人端點 所需的更新。

私人端點的 DNS 變更

當您建立私人端點時,Azure SignalR Service 的 DNS CNAME 資源記錄會更新為具有前置詞 privatelink 的子域中的別名。 根據預設,我們也會使用私人端點的 DNS A 資源記錄,建立 對應至 privatelink 子域的私人 DNS 區域

當您使用私人端點從 VNet 外部解析 Azure SignalR 服務功能變數名稱時,它會解析為 Azure SignalR 服務的公用端點。 從裝載私人端點的 VNet 解析時,功能變數名稱會解析為私人端點的 IP 位址。

在說明的範例中,從裝載私人端點的 VNet 外部解析 Azure SignalR Service 'foobar' 的 DNS 資源記錄會是:

名稱 類型
foobar.service.signalr.net CNAME foobar.privatelink.service.signalr.net
foobar.privatelink.service.signalr.net A <Azure SignalR Service 公用 IP 位址>

如先前所述,您可以使用網路存取控制,透過公用端點拒絕或控制 VNet 外部用戶端的存取權。

當用戶端在裝載私人端點的 VNet 中解析時,'foobar' 的 DNS 資源記錄將會是:

名稱 類型
foobar.service.signalr.net CNAME foobar.privatelink.service.signalr.net
foobar.privatelink.service.signalr.net A 10.1.1.5

此方法可讓 VNet 上的用戶端使用相同連接字串 存取 Azure SignalR 服務 ,該用戶端裝載私人端點和 VNet 外部的用戶端。

如果您在網路上使用自訂 DNS 伺服器,用戶端必須能夠將 Azure SignalR 服務端點的 FQDN 解析為私人端點 IP 位址。 您應該將 DNS 伺服器設定為將私人連結子域委派給 VNet 的私人 DNS 區域,或使用私人端點 IP 位址設定 A 記錄 foobar.privatelink.service.signalr.net

提示

使用自訂或內部部署 DNS 伺服器時,您應該設定 DNS 伺服器,將子域中的 privatelink Azure SignalR 服務名稱解析為私人端點 IP 位址。 您可以將子域委派 privatelink 給 VNet 的私人 DNS 區域,或在 DNS 伺服器上設定 DNS 區域,以及新增 DNS A 記錄,以執行此動作。

Azure SignalR Service 私人端點的建議 DNS 區功能變數名稱稱為: privatelink.service.signalr.net

如需設定您自己的 DNS 伺服器以支援私人端點的詳細資訊,請參閱下列文章:

建立私人端點

在Azure 入口網站中建立私人端點以及新的 Azure SignalR 服務

  1. 建立新的 Azure SignalR 服務時,請選取 [ 網路] 索引 標籤。選擇 [私人端點 ] 作為連線方法。

    Create Azure SignalR Service - Networking tab

  2. 選取新增。 填入訂用帳戶、資源群組、位置、新私人端點的名稱。 選擇虛擬網路和子網。

    Create Azure SignalR Service - Add private endpoint

  3. 選取 [檢閱 + 建立]。

在Azure 入口網站中為現有的 Azure SignalR 服務建立私人端點

  1. 移至 Azure SignalR 服務。

  2. 在名為 [私人端點連線 ] 的 [設定] 功能表上選取 。

  3. 選取頂端的 [+ 私人端點 ] 按鈕

    Private endpoint connections blade

  4. 輸入新私人端點的訂用帳戶、資源群組、資源名稱和區域。

    Create private endpoint - Basics

  5. 選擇目標 Azure SignalR 服務資源。

    Create private endpoint - Resource

  6. 選擇目標虛擬網路

    Create private endpoint - Configuration

  7. 選取 [檢閱 + 建立]。

使用 Azure CLI 建立私人端點

  1. 登入 Azure CLI
    az login
    
  2. 設定您的 Azure 訂用帳戶
    az account set --subscription {AZURE SUBSCRIPTION ID}
    
  3. 建立新的資源群組
    az group create -n {RG} -l {AZURE REGION}
    
  4. 將 Microsoft.SignalRService 註冊為提供者
    az provider register -n Microsoft.SignalRService
    
  5. 建立新的 Azure SignalR 服務
    az signalr create --name {NAME} --resource-group {RG} --location {AZURE REGION} --sku Standard_S1
    
  6. 建立虛擬網絡
    az network vnet create --resource-group {RG} --name {vNet NAME} --location {AZURE REGION}
    
  7. 新增子網
    az network vnet subnet create --resource-group {RG} --vnet-name {vNet NAME} --name {subnet NAME} --address-prefixes {addressPrefix}
    
  8. 停用虛擬網絡原則
    az network vnet subnet update --name {subnet NAME} --resource-group {RG} --vnet-name {vNet NAME} --disable-private-endpoint-network-policies true
    
  9. 新增私用 DNS區域
    az network private-dns zone create --resource-group {RG} --name privatelink.service.signalr.net
    
  10. 將私用 DNS區域連結至虛擬網絡
    az network private-dns link vnet create --resource-group {RG} --virtual-network {vNet NAME} --zone-name privatelink.service.signalr.net --name {dnsZoneLinkName} --registration-enabled true
    
  11. 建立私人端點 (自動核准)
    az network private-endpoint create --resource-group {RG} --vnet-name {vNet NAME} --subnet {subnet NAME} --name {Private Endpoint Name}  --private-connection-resource-id "/subscriptions/{AZURE SUBSCRIPTION ID}/resourceGroups/{RG}/providers/Microsoft.SignalRService/SignalR/{NAME}" --group-ids signalr --connection-name {Private Link Connection Name} --location {AZURE REGION}
    
  12. 建立私人端點 (手動要求核准)
    az network private-endpoint create --resource-group {RG} --vnet-name {vNet NAME} --subnet {subnet NAME} --name {Private Endpoint Name}  --private-connection-resource-id "/subscriptions/{AZURE SUBSCRIPTION ID}/resourceGroups/{RG}/providers/Microsoft.SignalRService/SignalR/{NAME}" --group-ids signalr --connection-name {Private Link Connection Name} --location {AZURE REGION} --manual-request
    
  13. 顯示連線狀態
    az network private-endpoint show --resource-group {RG} --name {Private Endpoint Name}
    

定價

如需價格詳細資料,請參閱 Azure Private Link 價格

已知問題

請記住下列 Azure SignalR Service 私人端點的已知問題

免費層

您無法為免費層 Azure SignalR Service 建立任何私人端點。

VNet 中具有私人端點的用戶端存取條件約束

存取具有私人端點的其他 Azure SignalR Service 實例時,具有現有私人端點的 VNet 中的用戶端會面臨限制。 例如:

  • 當 VNet N1 有 Azure SignalR Service 實例 S1 的私人端點時
    • 如果 Azure SignalR Service S2 在 VNet N2 中有私人端點,VNet N1 中的用戶端也必須使用私人端點存取 Azure SignalR Service S2。
    • 如果 Azure SignalR Service S2 沒有任何私人端點,VNet N1 中的用戶端可以存取該帳戶中的 Azure SignalR 服務,而不需要私人端點。

此條件約束是 Azure SignalR Service S2 建立私人端點時所做的 DNS 變更的結果。

下一步