在 Azure Cosmos DB for MongoDB V 核心中啟用私人存取
適用於: MongoDB 虛擬核心
Azure Private Link 是一項功能強大的服務,可協助使用者利用指定的私人端點連線到 Azure Cosmos DB for MongoDB 虛擬核心。 私人端點會包含位於您個人虛擬網路子網路的私人 IP 位址。 透過端點,可將存取 Azure Cosmos DB for MongoDB 虛擬核心產品的方式限制為僅限私人 IP。 藉由整合 Private Link 與嚴格的 NSG 原則,能夠大幅降低資料外流的風險。 若要深入了解私人端點,請參閱什麼是 Azure Private Link?。
注意
Private Link 可保護連線,然而無法防止公用 DNS 解析您的 Azure Cosmos DB 端點。 傳入要求會在應用程式層級進行篩選,而非在傳輸或網路層級。
Private Link 具有彈性的連線能力,讓使用者既可從虛擬網路內部,也可透過任何對等互連的虛擬網路存取 Azure Cosmos DB for MongoDB 虛擬核心。 此外,也可透過 VPN 或 Azure ExpressRoute,以私人對等互連方式在內部部署環境存取連結至 Private Link 的資源。
使用 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 V 核心叢集:
登入 Azure 入口網站中,然後選取 Azure 入口網站左上角的 [建立資源]。
在 [建立資源] 頁面上,選取 [資料庫],然後選取 [Azure Cosmos DB]。
在 [選取 API 選項] 頁面上的 [MongoDB] 圖格上,選取 [建立]。
選擇 [V 核心叢集] 資源類型。
在 [建立 Azure Cosmos DB for MongoDB V 核心叢集] 頁面上,選取或建立 [資源群組]、輸入 [叢集名稱] 和位置,然後輸入並確認管理員密碼。
選取 [下一步:網路]。
選取 [網路] 索引標籤,針對 [連線方法],選取 [私人存取]。
在 [建立私人端點] 畫面上,為以下項目輸入或選取適當的值:
設定 值 資源群組 選取資源群組。 名稱 為私人端點輸入任何名稱。 如果此名稱已被使用,請建立不重複的名稱。 網路介面名稱 為網路介面輸入任何名稱。 如果此名稱已被使用,請建立不重複的名稱。 Location 選取要部署 Private Link 的區域。 在虛擬網路所在的相同位置中建立私人端點。 資源類型 選取 Microsoft.DocumentDB/mongoClusters
。目標資源 選取您所建立的 Azure Cosmos DB for MongoDB V 核心資源。 目標子資源 針對先前所選資源,且應能供您私人端點存取的子資源類型。 虛擬網路 選取您的虛擬網路。 子網路 選取子網路。 與私人 DNS 區域整合 選取 [是]。 若要私下與您的私人端點連接,您需要 DNS 記錄。 我們建議您將私人端點與私人 DNS 區域整合。 您也可以使用自己的 DNS 伺服器,或藉由使用虛擬機器上的主機檔案來建立 DNS 記錄。 針對此選項選取 [是] 時,也會建立私人 DNS 區域群組。 DNS 區域群組是私人 DNS 區域與私人端點之間的連結。 當私人端點有更新時,此連結可協助您自動更新私人 DNS 區域。 例如,當您新增或移除地區時,系統會自動更新私人 DNS 區域。 設定名稱 選取訂用帳戶和資源群組。 系統會自動決定私人 DNS 區域。 您無法使用 Azure 入口網站來加以變更。 選取 [確定]。
選取 [下一步:標籤]>[檢閱 + 建立]。 在 [檢閱 + 建立] 頁面上,選取 [建立]。
在現有叢集上啟用私人存取
若要為現有叢集中的節點建立私人端點,請開啟叢集的 [網路] 頁面。
選取 [新增私人端點]。
在 [建立私人端點] 畫面的 [基本] 索引標籤上,確認 [訂用帳戶]、[資源群組] 和 [區域]。 輸入端點的名稱,例如 my-cluster-1,並輸入網路介面名稱,例如 my-cluster-1-nic。
注意
除非您有充分理由另行選擇,否則建議您挑選與您叢集相符的訂用帳戶和區域。 表單欄位的預設值可能不正確。 檢查這些值並視需要更新。
選取 [下一步:資源]。 針對 [資源類型] 選擇 [Microsoft.DocumentDB/mongoClusters],然後選擇 [資源] 的目標叢集。 針對 [目標子資源],選擇 [MongoCluster]。
選取 [下一步:虛擬網路]。 選擇所需的虛擬網路和子網路。 在 [私人 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