針對 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 服務使用私人端點。
概念概觀
私人端點是您虛擬網絡 (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 服務
建立新的 Azure SignalR 服務時,請選取 [ 網路] 索引 標籤。選擇 [私人端點 ] 作為連線方法。
選取新增。 填入訂用帳戶、資源群組、位置、新私人端點的名稱。 選擇虛擬網路和子網。
選取 [檢閱 + 建立]。
在Azure 入口網站中為現有的 Azure SignalR 服務建立私人端點
移至 Azure SignalR 服務。
在名為 [私人端點連線 ] 的 [設定] 功能表上選取 。
選取頂端的 [+ 私人端點 ] 按鈕 。
輸入新私人端點的訂用帳戶、資源群組、資源名稱和區域。
選擇目標 Azure SignalR 服務資源。
選擇目標虛擬網路
選取 [檢閱 + 建立]。
使用 Azure CLI 建立私人端點
- 登入 Azure CLI
az login
- 設定您的 Azure 訂用帳戶
az account set --subscription {AZURE SUBSCRIPTION ID}
- 建立新的資源群組
az group create -n {RG} -l {AZURE REGION}
- 將 Microsoft.SignalRService 註冊為提供者
az provider register -n Microsoft.SignalRService
- 建立新的 Azure SignalR 服務
az signalr create --name {NAME} --resource-group {RG} --location {AZURE REGION} --sku Standard_S1
- 建立虛擬網絡
az network vnet create --resource-group {RG} --name {vNet NAME} --location {AZURE REGION}
- 新增子網
az network vnet subnet create --resource-group {RG} --vnet-name {vNet NAME} --name {subnet NAME} --address-prefixes {addressPrefix}
- 停用虛擬網絡原則
az network vnet subnet update --name {subnet NAME} --resource-group {RG} --vnet-name {vNet NAME} --disable-private-endpoint-network-policies true
- 新增私用 DNS區域
az network private-dns zone create --resource-group {RG} --name privatelink.service.signalr.net
- 將私用 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
- 建立私人端點 (自動核准)
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}
- 建立私人端點 (手動要求核准)
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
- 顯示連線狀態
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 變更的結果。