在適用於 MongoDB 的 Azure Cosmos DB 虛擬核心中啟用私人存取
適用於: MongoDB 虛擬核心
Azure Private Link 是一項功能強大的服務,可讓使用者透過指定的私人端點連線到適用於 MongoDB 的 Azure Cosmos DB 虛擬核心。 此私人端點包含位於您自己虛擬網路內子網中的私人IP位址。 端點可讓您僅透過私人IP存取適用於 MongoDB 的 Azure Cosmos DB 虛擬核心產品。 透過整合 Private Link 與嚴格的 NSG 原則,數據外泄的風險會大幅降低。 如需深入瞭解私人端點,請考慮查看 什麼是 Azure Private Link?。
注意
不過,Private Link 會保護您的連線,但不會防止公用 DNS 解析 Azure Cosmos DB 端點。 傳入要求的過濾是在應用層級處理,而不是在傳輸或網路層級處理。
Private Link 可讓您彈性地從虛擬網路內部或任何連線的對等互連虛擬網路存取適用於 MongoDB 的 Azure Cosmos DB 虛擬核心。 此外,連結至 Private Link 的資源可透過私人對等互連、VPN 或 Azure ExpressRoute 在內部部署存取。
若要建立連線,搭配 Private Link 的 Azure Cosmos DB for MongoDB 虛擬核心同時支援自動和手動核准方法。 如需詳細資訊,請參閱 Azure Cosmos DB 中的私人端點。
必要條件
- 現有的 Azure Cosmos DB for MongoDB 虛擬核心叢集。
- 如果您沒有 Azure 訂用帳戶,請建立免費帳戶。
- 如果您有現有的 Azure 訂用帳戶,請建立新的 Azure Cosmos DB for MongoDB 虛擬核心叢集。
使用 Azure 入口網站 建立具有私人端點的叢集
請遵循下列步驟,使用 Azure 入口網站,建立具有私人端點的新 Azure Cosmos DB for MongoDB 虛擬核心叢集:
登入 Azure 入口網站,然後選取 Azure 入口網站 左上角的 [建立資源]。
在 [ 建立資源 ] 頁面上,選取 [資料庫 ],然後選取 [Azure Cosmos DB]。
在 [選取 API] 選項頁面上的 [MongoDB] 圖格上,選取 [建立]。
選擇虛擬核心叢集資源類型。
在 [建立適用於 MongoDB 的 Azure Cosmos DB 虛擬核心叢集] 頁面上,選取或建立資源群組,輸入叢集名稱和位置,然後輸入並確認系統管理員密碼。
選取 [下一步:網路]。
選取 [網络] 索引標籤,針對 [連線 ivity 方法],選取 [私人存取]。
在 [建立私人端點] 畫面上,輸入或選取適當的值:
設定 值 資源群組 選取資源群組。 名稱 為私人端點輸入任何名稱。 如果採用此名稱,請建立唯一的名稱。 網路介面名稱 輸入網路介面的任何名稱。 如果採用此名稱,請建立唯一的名稱。 Location 選取您要部署 Private Link 的區域。 在虛擬網路所在的相同位置建立私人端點。 目標子資源 針對先前選取的資源選取的子資源類型,您的私人端點應該能夠存取。 虛擬網路 選取您的虛擬網路。 子網路 選取您的子網。 與私人 DNS 區域整合 選取 [是]。 若要私下與您的私人端點連接,您需要 DNS 記錄。 我們建議您將私人端點與私人 DNS 區域整合。 您也可以使用自己的 DNS 伺服器,或使用虛擬機上的主機檔案來建立 DNS 記錄。 當您針對此選項選取 [是] 時,也會建立私人 DNS 區域群組。 DNS 區域群組是私人 DNS 區域與私人端點之間的連結。 此連結可協助您在私人端點有更新時自動更新私人 DNS 區域。 例如,當您新增或移除區域時,會自動更新私人 DNS 區域。 設定名稱 選取您的訂用帳戶和資源群組。 私人 DNS 區域會自動決定。 您無法使用 Azure 入口網站 來變更它。 選取 [確定]。
選取 [下一步:卷標>檢閱 + 建立]。 在 [ 檢閱 + 建立] 頁面上,選取 [ 建立]。
在現有叢集上啟用私人存取
若要建立現有叢集中節點的私人端點,請開啟叢集的網路頁面。
選取 [新增私人端點]。
在 [建立私人端點] 畫面的 [基本] 索引標籤上,確認 [訂用帳戶]、[資源群組] 和 [區域]。 輸入端點的名稱,例如 my-cluster-1,以及網路介面名稱,例如 my-cluster-1-nic。
注意
除非您有充分的理由選擇,否則建議您挑選符合叢集的訂用帳戶和區域。 表單域的預設值可能不正確。 請檢查它們,並視需要更新。
選取 [下一步:資源]。 針對 [ 目標子資源],選擇叢集的目標節點。 通常 協調器 是所需的節點。
選取 [下一步:虛擬網路]。 選擇所需的 虛擬網路 和 子網。 在 [私人 IP 組態] 底下,選取 [靜態配置 IP 位址] 或保留預設值 [動態配置 IP 位址]。
選取 [下一步:DNS]。
在 [私用 DNS 整合] 下,針對 [與私人 DNS 整合] 區域,保留預設 [是] 或選取 [否]。
選取 [ 下一步:卷標],然後新增任何所需的標籤。
選取 [檢閱 + 建立]。 檢閱設定,然後選取 [滿足時建立 ]。
使用 Azure CLI 建立私人端點
執行下列 Azure CLI 腳本,為現有的 Azure Cosmos DB 帳戶建立名為 myPrivateEndpoint 的私人端點。 將變數值取代為您環境的詳細數據。
# Resource group where the Azure Cosmos DB account and virtual network resources are located
ResourceGroupName="myResourceGroup"
# Name of the existing Azure Cosmos DB account
MongovCoreClusterName="myMongoCluster"
# Subscription ID where the Azure Cosmos DB account and virtual network resources are located
SubscriptionId="<your Azure subscription ID>"
# API type of your Azure Cosmos DB account: Sql, SqlDedicated, MongoCluster, Cassandra, Gremlin, or Table
CosmosDbSubResourceType="MongoCluster"
# Name of the virtual network to create
VNetName="myVnet"
# Name of the subnet to create
SubnetName="mySubnet"
# Name of the private endpoint to create
PrivateEndpointName="myPrivateEndpoint"
# Name of the private endpoint connection to create
PrivateConnectionName="myConnection"
az network vnet create \
--name $VNetName \
--resource-group $ResourceGroupName \
--subnet-name $SubnetName
az network vnet subnet update \
--name <name> \
--resource-group $ResourceGroupName \
--vnet-name $VNetName \
--disable-private-endpoint-network-policies true
az network private-endpoint create \
--name $PrivateEndpointName \
--resource-group $ResourceGroupName \
--vnet-name $VNetName \
--subnet $SubnetName \
--private-connection-resource-id "/subscriptions/$SubscriptionId/resourceGroups/$ResourceGroupName/providers/Microsoft.DocumentDB/mongoClusters/$MongovCoreClusterName" \
--group-ids MongoCluster --connection-name $PrivateConnectionName
整合私人端點與私人 DNS 區域
建立私人端點之後,您可以使用下列 Azure CLI 腳本,將其與私人 DNS 區域整合:
#Zone name differs based on the API type and group ID you are using.
zoneName="privatelink.mongocluster.cosmos.azure.com"
az network private-dns zone create \
--resource-group $ResourceGroupName \
--name $zoneName
az network private-dns link vnet create --resource-group $ResourceGroupName \
--zone-name $zoneName \
--name <dns-link-name> \
--virtual-network $VNetName \
--registration-enabled false
#Create a DNS zone group
az network private-endpoint dns-zone-group create \
--resource-group $ResourceGroupName \
--endpoint-name <pe-name> \
--name <zone-group-name> \
--private-dns-zone $zoneName \
--zone-name mongocluster
Private Link 上的 MongoClusters 命令
az network private-link-resource list \
-g <rg-name> \
-n <resource-name> \
--type Microsoft.DocumentDB/mongoClusters