Azure Private Link konfigurálása Azure Cosmos DB-fiókhoz
A KÖVETKEZŐKRE VONATKOZIK: NoSQL MongoDB Cassandra Gremlin Asztal
Az Azure Private Link használatával privát végponton keresztül csatlakozhat egy Azure Cosmos DB-fiókhoz. A privát végpont magánhálózati IP-címek készlete egy adott virtuális hálózaton belüli alhálózaton. Ezután korlátozhatja az Azure Cosmos DB-fiókhoz való hozzáférést privát IP-címeken. Ha a Private Linket korlátozó hálózati biztonsági csoport (NSG) szabályzatokkal kombinálják, az segít csökkenteni az adatkiszivárgás kockázatát. A privát végpontokkal kapcsolatos további információkért lásd : Mi az Az Azure Private Link?
Feljegyzés
A Private Link nem akadályozza meg, hogy az Azure Cosmos DB-végpontokat nyilvános DNS-sel oldja fel. A bejövő kérések szűrése alkalmazásszinten történik, nem pedig átviteli vagy hálózati szinten.
A Private Link lehetővé teszi a felhasználók számára egy Azure Cosmos DB-fiók elérését a virtuális hálózaton belülről vagy bármely társhálózatról. A Private Linkre leképezett erőforrások a helyszínen is elérhetők privát társviszony-létesítésen keresztül VPN-en vagy Azure ExpressRoute-on keresztül.
Az automatikus vagy manuális jóváhagyási módszer használatával csatlakozhat a Private Linkkel konfigurált Azure Cosmos DB-fiókhoz. További információkért tekintse meg a Private Link dokumentációjának jóváhagyási munkafolyamat-szakaszát .
Ez a cikk bemutatja, hogyan állíthat be privát végpontokat az Azure Cosmos DB tranzakciós tárolóhoz. Feltételezi, hogy az automatikus jóváhagyási módszert használja. Ha az elemzési tárat használja, olvassa el a Privát végpontok konfigurálása az elemzési tárhoz című témakört.
Privát végpont létrehozása az Azure Portal használatával
Az alábbi lépéseket követve hozzon létre privát végpontot egy meglévő Azure Cosmos DB-fiókhoz az Azure Portal használatával:
Jelentkezzen be az Azure Portalra, majd válasszon ki egy Azure Cosmos DB-fiókot.
Válassza a Hálózatkezelés lehetőséget a beállítások listájából, majd válassza a + Privát végpont lehetőséget a Privát hozzáférés lapon:
A Privát végpont létrehozása – Alapszintű beállítások panelen adja meg vagy válassza ki a következő részleteket:
Beállítás Érték Projekt részletei Előfizetés Válassza ki előfizetését. Erőforráscsoport Válasszon ki egy erőforráscsoportot. Példány részletei Név Adja meg a privát végpont nevét. Ha ezt a nevet veszi fel, hozzon létre egy egyedi nevet. Régió Válassza ki azt a régiót, ahol a Private Linket telepíteni szeretné. Hozza létre a privát végpontot ugyanazon a helyen, ahol a virtuális hálózat létezik. Válassza a Tovább: Erőforrás lehetőséget.
A Privát végpont létrehozása – Erőforrás panelen adja meg vagy válassza ki az alábbi adatokat:
Beállítás Érték Kapcsolati módszer Válassza a Csatlakozás azure-erőforráshoz lehetőséget a címtáramban.
Ezután kiválaszthatja az egyik erőforrást a Private Link beállításához. Vagy csatlakozhat valaki más erőforrásához egy önnel megosztott erőforrás-azonosító vagy alias használatával.Előfizetés Válassza ki előfizetését. Erőforrás típusa Válassza a Microsoft.AzureCosmosDB/databaseAccounts lehetőséget. Erőforrás Válassza ki az Azure Cosmos DB-fiókját. Cél-alforrás Válassza ki a megfeleltetni kívánt Azure Cosmos DB API-típust. Ez alapértelmezés szerint csak egy választási lehetőséget biztosít az SQL, a MongoDB és a Cassandra API-khoz. A Gremlin és a Table API-k esetében a NoSQL-t is választhatja, mivel ezek az API-k együttműködnek a NoSQL API-val. Ha dedikált átjáró van kiépítve egy API for NoSQL-fiókhoz, akkor megjelenik az SqlDedicated egyik lehetősége is. Válassza a Következő: Virtuális hálózat lehetőséget.
A Privát végpont létrehozása – Virtuális hálózat panelen adja meg vagy válassza ki az alábbi adatokat:
Beállítás Érték Virtuális hálózat Válassza ki a virtuális hálózatot. Alhálózat Válassza ki az alhálózatot. Válassza a Következő: DNS lehetőséget.
A Privát végpont létrehozása – DNS panelen adja meg vagy válassza ki az alábbi adatokat:
Beállítás Érték Integrálás saját DNS-zónával Válassza az Igen lehetőséget.
A privát végponthoz való privát kapcsolódáshoz DNS-rekordra van szükség. Javasoljuk, hogy integrálja a privát végpontot egy privát DNS-zónával. Használhatja saját DNS-kiszolgálóit is, vagy létrehozhat DNS-rekordokat a virtuális gépek gazdagépfájljaival.
Ha az igen lehetőséget választja ehhez a beállításhoz, létrejön egy privát DNS-zónacsoport is. A DNS-zónacsoport a privát DNS-zóna és a privát végpont közötti kapcsolat. Ez a hivatkozás segít automatikusan frissíteni a privát DNS-zónát a privát végpont frissítésekor. Ha például régiókat ad hozzá vagy távolít el, a privát DNS-zóna automatikusan frissül.Konfiguráció neve Válassza ki az előfizetést és az erőforráscsoportot.
A privát DNS-zóna automatikusan lesz meghatározva. Az Azure Portal használatával nem módosítható.Válassza a Következő: Címkék>áttekintése + létrehozás lehetőséget. A Felülvizsgálat + létrehozás lapon az Azure ellenőrzi a konfigurációt.
Amikor megjelenik az Ellenőrzés átadott üzenet, válassza a Létrehozás lehetőséget.
Ha egy Azure Cosmos DB-fiókhoz jóváhagyott privát kapcsolattal rendelkezik, az Azure Portalon a Tűzfal és a virtuális hálózatok panel Minden hálózat lehetőség nem érhető el.
API-típusok és privát zónanevek
Tekintse át az Azure Private Endpoint DNS-konfigurációját a privát zónákkal és a privát végpont DNS-konfigurációival kapcsolatos részletesebb magyarázatért. Az alábbi táblázat a különböző Azure Cosmos DB-fiók API-típusok, a támogatott alforrások és a megfelelő privát zónanevek leképezését mutatja be. A Gremlin- és a Table API-fiókokat a NoSQL API-n keresztül is elérheti, így ezekhez az API-khoz két bejegyzés tartozik. A dedikált átjárót használó fiókokhoz a NoSQL API-hoz egy további bejegyzés is tartozik.
Azure Cosmos DB-fiók API-típusa | Támogatott alforrások vagy csoportazonosítók | Privát zóna neve |
---|---|---|
NoSQL | Sql | privatelink.documents.azure.com |
NoSQL | SqlDedicated | privatelink.sqlx.cosmos.azure.com |
Cassandra | Cassandra | privatelink.cassandra.cosmos.azure.com |
Mongo | MongoDB | privatelink.mongo.cosmos.azure.com |
Gremlin | Gremlin | privatelink.gremlin.cosmos.azure.com |
Gremlin | Sql | privatelink.documents.azure.com |
Tábla | Tábla | privatelink.table.cosmos.azure.com |
Tábla | Sql | privatelink.documents.azure.com |
A magánhálózati IP-címek lekérése
A privát végpont kiépítése után lekérdezheti az IP-címeket. Az IP-címek megtekintése az Azure Portalról:
- Keresse meg a korábban létrehozott privát végpontot. Ebben az esetben ez a cdbPrivateEndpoint3.
- Az Áttekintés lapon megtekintheti a DNS-beállításokat és az IP-címeket.
Privát végpontonként több IP-cím jön létre:
- Az Azure Cosmos DB-fiók globális régió-agnosztikus végpontja.
- Egyet minden régióhoz, ahol az Azure Cosmos DB-fiók üzembe van helyezve.
Privát végpont létrehozása az Azure PowerShell használatával
Futtassa a következő PowerShell-szkriptet egy MyPrivateEndpoint nevű privát végpont létrehozásához egy meglévő Azure Cosmos DB-fiókhoz. Cserélje le a változóértékeket a környezet részleteire.
$SubscriptionId = "<your Azure subscription ID>"
# Resource group where the Azure Cosmos DB account and virtual network resources are located
$ResourceGroupName = "myResourceGroup"
# Name of the Azure Cosmos DB account
$CosmosDbAccountName = "mycosmosaccount"
# Resource for the Azure Cosmos DB account: Sql, SqlDedicated, MongoDB, Cassandra, Gremlin, or Table
$CosmosDbSubResourceType = "Sql"
# Name of the existing virtual network
$VNetName = "myVnet"
# Name of the target subnet in the virtual network
$SubnetName = "mySubnet"
# Name of the private endpoint to create
$PrivateEndpointName = "MyPrivateEndpoint"
# Location where the private endpoint can be created. The private endpoint should be created in the same location where your subnet or the virtual network exists
$Location = "westcentralus"
$cosmosDbResourceId = "/subscriptions/$($SubscriptionId)/resourceGroups/$($ResourceGroupName)/providers/Microsoft.DocumentDB/databaseAccounts/$($CosmosDbAccountName)"
$privateEndpointConnection = New-AzPrivateLinkServiceConnection -Name "myConnectionPS" -PrivateLinkServiceId $cosmosDbResourceId -GroupId $CosmosDbSubResourceType
$virtualNetwork = Get-AzVirtualNetwork -ResourceGroupName $ResourceGroupName -Name $VNetName
$subnet = $virtualNetwork | Select -ExpandProperty subnets | Where-Object {$_.Name -eq $SubnetName}
$privateEndpoint = New-AzPrivateEndpoint -ResourceGroupName $ResourceGroupName -Name $PrivateEndpointName -Location $Location -Subnet $subnet -PrivateLinkServiceConnection $privateEndpointConnection
A privát végpont integrálása privát DNS-zónával
A privát végpont létrehozása után az alábbi PowerShell-szkripttel integrálhatja azt egy privát DNS-zónával:
Import-Module Az.PrivateDns
# Zone name differs based on the API type and group ID you are using.
$zoneName = "privatelink.documents.azure.com"
$zone = New-AzPrivateDnsZone -ResourceGroupName $ResourceGroupName `
-Name $zoneName
$link = New-AzPrivateDnsVirtualNetworkLink -ResourceGroupName $ResourceGroupName `
-ZoneName $zoneName `
-Name "myzonelink" `
-VirtualNetworkId $virtualNetwork.Id
$pe = Get-AzPrivateEndpoint -Name $PrivateEndpointName `
-ResourceGroupName $ResourceGroupName
$networkInterface = Get-AzResource -ResourceId $pe.NetworkInterfaces[0].Id `
-ApiVersion "2019-04-01"
# Create DNS configuration
$PrivateDnsZoneId = $zone.ResourceId
$config = New-AzPrivateDnsZoneConfig -Name $zoneName `
-PrivateDnsZoneId $PrivateDnsZoneId
## Create a DNS zone group
New-AzPrivateDnsZoneGroup -ResourceGroupName $ResourceGroupName `
-PrivateEndpointName $PrivateEndpointName `
-Name "MyPrivateZoneGroup" `
-PrivateDnsZoneConfig $config
A magánhálózati IP-címek lekérése
A privát végpont kiépítése után az alábbi PowerShell-szkripttel lekérdezheti az IP-címeket és az FQDN-leképezést:
$pe = Get-AzPrivateEndpoint -Name MyPrivateEndpoint -ResourceGroupName myResourceGroup
$networkInterface = Get-AzNetworkInterface -ResourceId $pe.NetworkInterfaces[0].Id
foreach ($IPConfiguration in $networkInterface.IpConfigurations)
{
Write-Host $IPConfiguration.PrivateIpAddress ":" $IPConfiguration.PrivateLinkConnectionProperties.Fqdns
}
Privát végpont létrehozása az Azure CLI használatával
Futtassa a következő Azure CLI-szkriptet egy myPrivateEndpoint nevű privát végpont létrehozásához egy meglévő Azure Cosmos DB-fiókhoz. Cserélje le a változóértékeket a környezet részleteire.
# Resource group where the Azure Cosmos DB account and virtual network resources are located
ResourceGroupName="myResourceGroup"
# Subscription ID where the Azure Cosmos DB account and virtual network resources are located
SubscriptionId="<your Azure subscription ID>"
# Name of the existing Azure Cosmos DB account
CosmosDbAccountName="mycosmosaccount"
# API type of your Azure Cosmos DB account: Sql, SqlDedicated, MongoDB, Cassandra, Gremlin, or Table
CosmosDbSubResourceType="Sql"
# 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 $SubnetName \
--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/databaseAccounts/$CosmosDbAccountName" \
--group-ids $CosmosDbSubResourceType \
--connection-name $PrivateConnectionName
A privát végpont integrálása privát DNS-zónával
A privát végpont létrehozása után az alábbi Azure CLI-szkripttel integrálhatja azt egy privát DNS-zónával:
#Zone name differs based on the API type and group ID you are using.
zoneName="privatelink.documents.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 myzonelink \
--virtual-network $VNetName \
--registration-enabled false
#Create a DNS zone group
az network private-endpoint dns-zone-group create \
--resource-group $ResourceGroupName \
--endpoint-name $PrivateEndpointName \
--name "MyPrivateZoneGroup" \
--private-dns-zone $zoneName \
--zone-name "myzone"
Privát végpont létrehozása Resource Manager-sablonnal
A Private Link beállításához hozzon létre egy privát végpontot egy virtuális hálózati alhálózatban. Ezt egy Azure Resource Manager-sablonnal érheti el.
Az alábbi kód használatával hozzon létre egy PrivateEndpoint_template.json nevű Resource Manager-sablont. Ez a sablon létrehoz egy privát végpontot egy meglévő virtuális hálózaton lévő Meglévő Azure Cosmos DB vAPI for NoSQL-fiókhoz.
@description('Location for all resources.')
param location string = resourceGroup().location
param privateEndpointName string
param resourceId string
param groupId string
param subnetId string
resource privateEndpoint 'Microsoft.Network/privateEndpoints@2019-04-01' = {
name: privateEndpointName
location: location
properties: {
subnet: {
id: subnetId
}
privateLinkServiceConnections: [
{
name: 'MyConnection'
properties: {
privateLinkServiceId: resourceId
groupIds: [
groupId
]
requestMessage: ''
}
}
]
}
}
output privateEndpointNetworkInterface string = privateEndpoint.properties.networkInterfaces[0].id
Hozzon létre egy paraméterfájlt a sablonhoz, és nevezze el PrivateEndpoint_parameters.json. Adja hozzá a következő kódot a paraméterfájlhoz:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"privateEndpointName": {
"value": ""
},
"resourceId": {
"value": ""
},
"groupId": {
"value": ""
},
"subnetId": {
"value": ""
}
}
}
Hozzon létre egy PowerShell-szkriptet az alábbi kód használatával. A szkript futtatása előtt cserélje le az előfizetés azonosítóját, az erőforráscsoport nevét és más változóértékeket a környezet adataira.
### This script creates a private endpoint for an existing Azure Cosmos DB account in an existing virtual network
## Step 1: Fill in these details. Replace the variable values with the details for your environment.
$SubscriptionId = "<your Azure subscription ID>"
# Resource group where the Azure Cosmos DB account and virtual network resources are located
$ResourceGroupName = "myResourceGroup"
# Name of the Azure Cosmos DB account
$CosmosDbAccountName = "mycosmosaccount"
# API type of the Azure Cosmos DB account. It can be one of the following: "Sql", "SqlDedicated", "MongoDB", "Cassandra", "Gremlin", "Table"
$CosmosDbSubResourceType = "Sql"
# Name of the existing virtual network
$VNetName = "myVnet"
# Name of the target subnet in the virtual network
$SubnetName = "mySubnet"
# Name of the private endpoint to create
$PrivateEndpointName = "myPrivateEndpoint"
$cosmosDbResourceId = "/subscriptions/$($SubscriptionId)/resourceGroups/$($ResourceGroupName)/providers/Microsoft.DocumentDB/databaseAccounts/$($CosmosDbAccountName)"
$VNetResourceId = "/subscriptions/$($SubscriptionId)/resourceGroups/$($ResourceGroupName)/providers/Microsoft.Network/virtualNetworks/$($VNetName)"
$SubnetResourceId = "$($VNetResourceId)/subnets/$($SubnetName)"
$PrivateEndpointTemplateFilePath = "PrivateEndpoint_template.json"
$PrivateEndpointParametersFilePath = "PrivateEndpoint_parameters.json"
## Step 2: Sign in to your Azure account and select the target subscription.
Login-AzAccount
Select-AzSubscription -SubscriptionId $subscriptionId
## Step 3: Make sure private endpoint network policies are disabled in the subnet.
$VirtualNetwork= Get-AzVirtualNetwork -Name "$VNetName" -ResourceGroupName "$ResourceGroupName"
($virtualNetwork | Select -ExpandProperty subnets | Where-Object {$_.Name -eq "$SubnetName"} ).PrivateEndpointNetworkPolicies = "Disabled"
$virtualNetwork | Set-AzVirtualNetwork
## Step 4: Create the private endpoint.
Write-Output "Deploying private endpoint on $($resourceGroupName)"
$deploymentOutput = New-AzResourceGroupDeployment -Name "PrivateCosmosDbEndpointDeployment" `
-ResourceGroupName $resourceGroupName `
-TemplateFile $PrivateEndpointTemplateFilePath `
-TemplateParameterFile $PrivateEndpointParametersFilePath `
-SubnetId $SubnetResourceId `
-ResourceId $CosmosDbResourceId `
-GroupId $CosmosDbSubResourceType `
-PrivateEndpointName $PrivateEndpointName
$deploymentOutput
A PowerShell-szkriptben a GroupId
változó csak egy értéket tartalmazhat. Ez az érték a fiók API-típusa. Az engedélyezett értékek a következők: Sql
, SqlDedicated
, MongoDB
, Cassandra
, Gremlin
és Table
. Egyes Azure Cosmos DB-fióktípusok több API-on keresztül érhetők el. Példa:
- A NoSQL-fiókok API-jának hozzáadott lehetősége van a dedikált átjáró használatára konfigurált fiókokhoz.
- A Gremlin-fiókok API-ja a Gremlin és az API for NoSQL-fiókokból is elérhető.
- A Table-fiókok API-ja a Table és az API for NoSQL-fiókokból is elérhető.
Ezekhez a fiókokhoz minden API-típushoz létre kell hoznia egy privát végpontot. Ha privát végpontot SqlDedicated
hoz létre, csak akkor kell hozzáadnia egy második végpontot Sql
, ha a standard átjáróval is csatlakozni szeretne a fiókjához. A tömbben meg van adva a GroupId
megfelelő API-típus.
A sablon sikeres üzembe helyezése után az alábbi képen láthatóhoz hasonló kimenet jelenik meg. Az provisioningState
érték az, Succeeded
ha a privát végpontok megfelelően vannak beállítva.
A sablon üzembe helyezése után a privát IP-címek az alhálózaton belül vannak lefoglalva. Az Azure Cosmos DB-fiók tűzfalszabálya úgy van konfigurálva, hogy csak a privát végpontról fogadjon kapcsolatokat.
A privát végpont integrálása privát DNS-zónával
Az alábbi kód használatával hozzon létre egy PrivateZone_template.json nevű Resource Manager-sablont. Ez a sablon létrehoz egy privát DNS-zónát egy meglévő virtuális hálózaton lévő Meglévő Azure Cosmos DB API-fiókhoz.
{
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"privateZoneName": {
"type": "string"
},
"VNetId": {
"type": "string"
}
},
"resources": [
{
"name": "[parameters('privateZoneName')]",
"type": "Microsoft.Network/privateDnsZones",
"apiVersion": "2018-09-01",
"location": "global",
"properties": {
}
},
{
"type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks",
"apiVersion": "2018-09-01",
"name": "[concat(parameters('privateZoneName'), '/myvnetlink')]",
"location": "global",
"dependsOn": [
"[resourceId('Microsoft.Network/privateDnsZones', parameters('privateZoneName'))]"
],
"properties": {
"registrationEnabled": false,
"virtualNetwork": {
"id": "[parameters('VNetId')]"
}
}
}
]
}
Hozza létre a következő két paraméterfájlt a sablonhoz. Hozza létre a PrivateZone_parameters.json a következő kóddal:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"privateZoneName": {
"value": ""
},
"VNetId": {
"value": ""
}
}
}
Az alábbi kód használatával hozzon létre egy PrivateZoneGroup_template.json nevű Resource Manager-sablont. Ez a sablon létrehoz egy privát DNS-zónacsoportot egy meglévő virtuális hálózaton lévő Meglévő Azure Cosmos DB API for NoSQL-fiókhoz.
{
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"privateZoneName": {
"type": "string"
},
"PrivateEndpointDnsGroupName": {
"value": "string"
},
"privateEndpointName":{
"value": "string"
}
},
"resources": [
{
"type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups",
"apiVersion": "2020-06-01",
"name": "[parameters('PrivateEndpointDnsGroupName')]",
"location": "global",
"dependsOn": [
"[resourceId('Microsoft.Network/privateDnsZones', parameters('privateZoneName'))]",
"[variables('privateEndpointName')]"
],
"properties": {
"privateDnsZoneConfigs": [
{
"name": "config1",
"properties": {
"privateDnsZoneId": "[resourceId('Microsoft.Network/privateDnsZones', parameters('privateZoneName'))]"
}
}
]
}
}
]
}
Hozza létre a következő két paraméterfájlt a sablonhoz. Hozza létre a PrivateZoneGroup_parameters.json a következő kóddal:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"privateZoneName": {
"value": ""
},
"PrivateEndpointDnsGroupName": {
"value": ""
},
"privateEndpointName":{
"value": ""
}
}
}
Hozzon létre egy PowerShell-szkriptet az alábbi kód használatával. A szkript futtatása előtt cserélje le az előfizetés azonosítóját, az erőforráscsoport nevét és más változóértékeket a környezet adataira.
### This script:
### - creates a private zone
### - creates a private endpoint for an existing Azure Cosmos DB account in an existing VNet
### - maps the private endpoint to the private zone
## Step 1: Fill in these details. Replace the variable values with the details for your environment.
$SubscriptionId = "<your Azure subscription ID>"
# Resource group where the Azure Cosmos DB account and virtual network resources are located
$ResourceGroupName = "myResourceGroup"
# Name of the Azure Cosmos DB account
$CosmosDbAccountName = "mycosmosaccount"
# API type of the Azure Cosmos DB account. It can be one of the following: "Sql", "SqlDedicated", "MongoDB", "Cassandra", "Gremlin", "Table"
$CosmosDbSubResourceType = "Sql"
# Name of the existing virtual network
$VNetName = "myVnet"
# Name of the target subnet in the virtual network
$SubnetName = "mySubnet"
# Name of the private zone to create
$PrivateZoneName = "myPrivateZone.documents.azure.com"
# Name of the private endpoint to create
$PrivateEndpointName = "myPrivateEndpoint"
# Name of the DNS zone group to create
$PrivateEndpointDnsGroupName = "myPrivateDNSZoneGroup"
$cosmosDbResourceId = "/subscriptions/$($SubscriptionId)/resourceGroups/$($ResourceGroupName)/providers/Microsoft.DocumentDB/databaseAccounts/$($CosmosDbAccountName)"
$VNetResourceId = "/subscriptions/$($SubscriptionId)/resourceGroups/$($ResourceGroupName)/providers/Microsoft.Network/virtualNetworks/$($VNetName)"
$SubnetResourceId = "$($VNetResourceId)/subnets/$($SubnetName)"
$PrivateZoneTemplateFilePath = "PrivateZone_template.json"
$PrivateZoneParametersFilePath = "PrivateZone_parameters.json"
$PrivateEndpointTemplateFilePath = "PrivateEndpoint_template.json"
$PrivateEndpointParametersFilePath = "PrivateEndpoint_parameters.json"
$PrivateZoneGroupTemplateFilePath = "PrivateZoneGroup_template.json"
$PrivateZoneGroupParametersFilePath = "PrivateZoneGroup_parameters.json"
## Step 2: Login your Azure account and select the target subscription
Login-AzAccount
Select-AzSubscription -SubscriptionId $subscriptionId
## Step 3: Make sure private endpoint network policies are disabled in the subnet
$VirtualNetwork= Get-AzVirtualNetwork -Name "$VNetName" -ResourceGroupName "$ResourceGroupName"
($virtualNetwork | Select -ExpandProperty subnets | Where-Object {$_.Name -eq "$SubnetName"} ).PrivateEndpointNetworkPolicies = "Disabled"
$virtualNetwork | Set-AzVirtualNetwork
## Step 4: Create the private zone
New-AzResourceGroupDeployment -Name "PrivateZoneDeployment" `
-ResourceGroupName $ResourceGroupName `
-TemplateFile $PrivateZoneTemplateFilePath `
-TemplateParameterFile $PrivateZoneParametersFilePath `
-PrivateZoneName $PrivateZoneName `
-VNetId $VNetResourceId
## Step 5: Create the private endpoint
Write-Output "Deploying private endpoint on $($resourceGroupName)"
$deploymentOutput = New-AzResourceGroupDeployment -Name "PrivateCosmosDbEndpointDeployment" `
-ResourceGroupName $resourceGroupName `
-TemplateFile $PrivateEndpointTemplateFilePath `
-TemplateParameterFile $PrivateEndpointParametersFilePath `
-SubnetId $SubnetResourceId `
-ResourceId $CosmosDbResourceId `
-GroupId $CosmosDbSubResourceType `
-PrivateEndpointName $PrivateEndpointName
$deploymentOutput
## Step 6: Create the private zone
New-AzResourceGroupDeployment -Name "PrivateZoneGroupDeployment" `
-ResourceGroupName $ResourceGroupName `
-TemplateFile $PrivateZoneGroupTemplateFilePath `
-TemplateParameterFile $PrivateZoneGroupParametersFilePath `
-PrivateZoneName $PrivateZoneName `
-PrivateEndpointName $PrivateEndpointName`
-PrivateEndpointDnsGroupName $PrivateEndpointDnsGroupName
Egyéni DNS konfigurálása
Egy privát DNS-zónát kell használnia az alhálózaton belül, ahol létrehozta a privát végpontot. Konfigurálja a végpontokat úgy, hogy minden privát IP-cím dns-bejegyzéshez legyen leképezve. Tekintse meg a fqdns tulajdonságot a korábban bemutatott válaszban.
A privát végpont létrehozásakor a végpontot integrálhatja egy privát DNS-zónával az Azure-ban. Ha ehelyett egyéni DNS-zónát használ, úgy kell konfigurálnia, hogy a privát végpont számára fenntartott összes magánhálózati IP-címhez dns-rekordokat adjon hozzá.
Fontos
A kérések DNS-feloldása határozza meg, hogy ezek a kérések átmennek-e a privát végpontokon, vagy a szokásos nyilvános útvonalon haladnak-e. Győződjön meg arról, hogy a helyi DNS megfelelően hivatkozik a privát végpont által leképezett privát IP-címre.
Private Link tűzfalszabályokkal való együttes használata
A privát kapcsolat tűzfalszabályokkal való együttes használata esetén a következő helyzetek és eredmények lehetségesek:
Ha nem konfigurál tűzfalszabályokat, akkor alapértelmezés szerint minden forgalom hozzáférhet egy Azure Cosmos DB-fiókhoz.
Ha nyilvános forgalmat vagy szolgáltatásvégpontot konfigurál, és privát végpontokat hoz létre, a bejövő forgalom különböző típusait a megfelelő tűzfalszabály-típus engedélyezi. Ha egy privát végpont olyan alhálózatban van konfigurálva, ahol a szolgáltatásvégpont is konfigurálva van:
- a privát végpont által leképezett adatbázisfiók felé történő forgalom privát végponton keresztül lesz irányítva,
- az alhálózatról más adatbázisfiókokba érkező forgalom szolgáltatásvégponton keresztül lesz irányítva.
Ha nem konfigurál nyilvános forgalmat vagy szolgáltatásvégpontot, és privát végpontokat hoz létre, akkor az Azure Cosmos DB-fiók csak a privát végpontokon keresztül érhető el. Ha nem konfigurálja a nyilvános forgalmat vagy a szolgáltatásvégpontot, az összes jóváhagyott privát végpont elutasítása vagy törlése után a fiók a teljes hálózat számára nyitva van, kivéve, ha
PublicNetworkAccess
le van tiltva.
Nyilvános hálózati hozzáférés blokkolása a fiók létrehozása során
Az előző szakaszban leírtaknak megfelelően, és ha nem állítottak be meghatározott tűzfalszabályokat, egy privát végpont hozzáadása csak privát végpontokon keresztül teszi elérhetővé az Azure Cosmos DB-fiókot. Ez azt jelenti, hogy az Azure Cosmos DB-fiók a létrehozása után és egy privát végpont hozzáadása előtt elérhető a nyilvános forgalomból. Ha meg szeretné győződni arról, hogy a nyilvános hálózati hozzáférés még a privát végpontok létrehozása előtt le van tiltva, beállíthatja a jelölőt Letiltva értékre a publicNetworkAccess
fiók létrehozásakor. Ez a jelző elsőbbséget élvez bármely IP- vagy virtuális hálózati szabállyal szemben. Az összes nyilvános és virtuális hálózati forgalom le van tiltva, ha a jelző le van tiltva, még akkor is, ha a forrás IP-címe vagy a virtuális hálózat engedélyezve van a tűzfal konfigurációjában.
A jelző használatát bemutató példáért tekintse meg ezt az Azure Resource Manager-sablont.
Privát végpontok hozzáadása meglévő Azure Cosmos DB-fiókhoz állásidő nélkül
A privát végpont meglévő fiókhoz való hozzáadása alapértelmezés szerint körülbelül öt perc rövid állásidőt eredményez. Az állásidő elkerülése érdekében kövesse az alábbi utasításokat:
- Adjon hozzá IP- vagy virtuális hálózati szabályokat a tűzfal konfigurációjához, hogy explicit módon engedélyezze az ügyfélkapcsolatokat.
- Várjon 10 percet a konfigurációs frissítés alkalmazásának ellenőrzéséhez.
- Konfigurálja az új privát végpontot.
- Távolítsa el az 1. lépésben beállított tűzfalszabályokat.
Feljegyzés
Ha az Azure Cosmos DB SDK-kkal futtat alkalmazásokat, a konfigurációs frissítés során átmeneti időtúllépések fordulhatnak elő. Győződjön meg arról, hogy az alkalmazás rugalmas az átmeneti csatlakozási hibákhoz , és szükség esetén újrapróbálkozási logikával rendelkezik.
Porttartomány közvetlen mód használata esetén
Ha közvetlen módú kapcsolaton keresztül használ Privát kapcsolatot egy Azure Cosmos DB-fiókkal, meg kell győződnie arról, hogy a TCP-portok teljes tartománya (0 – 65535) nyitva van.
Privát végpont frissítése régió hozzáadásakor vagy eltávolításakor
Az Azure Cosmos DB-fiók üzembe helyezésének három régiója van: az USA nyugati régiója, az USA középső régiója és Nyugat-Európa. Amikor privát végpontot hoz létre a fiókjához, négy privát IP-cím van fenntartva az alhálózatban. A három régió mindegyikéhez egy IP-cím tartozik, a globális régió-agnosztikus végponthoz pedig egy IP-cím tartozik. Később új régiót vehet fel az Azure Cosmos DB-fiókba. A privát DNS-zóna a következőképpen frissül:
Privát DNS-zónacsoport használata esetén:
- Ha privát DNS-zónacsoportot használ, a privát DNS-zóna automatikusan frissül a privát végpont frissítésekor. Az előző példában egy új régió hozzáadása után a privát DNS-zóna automatikusan frissül.
Ha a privát DNS-zónacsoport nincs használatban:
Ha nem használ privát DNS-zónacsoportot, a régiók Azure Cosmos DB-fiókhoz való hozzáadásához vagy eltávolításához hozzá kell adnia vagy el kell távolítania az adott fiókHOZ tartozó DNS-bejegyzéseket. A régiók hozzáadása vagy eltávolítása után frissítheti az alhálózat privát DNS-zónáját, hogy az tükrözze a hozzáadott vagy eltávolított DNS-bejegyzéseket és a hozzájuk tartozó privát IP-címeket.
Az előző példában az új régió hozzáadása után hozzá kell adnia egy megfelelő DNS-rekordot a privát DNS-zónához vagy az egyéni DNS-hez. Ugyanezeket a lépéseket használhatja egy régió eltávolításakor is. A régió eltávolítása után el kell távolítania a megfelelő DNS-rekordot a privát DNS-zónából vagy az egyéni DNS-ből.
Jelenlegi korlátozások
A Private Link Azure Cosmos DB-fiókkal való használatakor a következő korlátozások érvényesek:
Egyetlen Azure Cosmos DB-fiókban nem lehet 200-nál több privát végpont.
Ha közvetlen módú kapcsolaton keresztül használja a Private Linket egy Azure Cosmos DB-fiókkal, csak a TCP protokollt használhatja. A HTTP protokoll jelenleg nem támogatott.
Ha Az Azure Cosmos DB API-ját mongoDB-fiókhoz használja, a privát végpontok támogatottak a 3.6-os vagy újabb kiszolgálói verziójú fiókokhoz (azaz a végpontot a formátumban
*.mongo.cosmos.azure.com
használó fiókokhoz). A Private Link nem támogatott a 3.2-es kiszolgálói verzióban (azaz a végpontot használó fiókoknál*.documents.azure.com
). A Private Link használatához át kell telepítenie a régi fiókokat az új verzióra.Ha privát kapcsolattal rendelkező MongoDB-fiókhoz használja az Azure Cosmos DB API-t, az eszközöknek és kódtáraknak támogatniuk kell a szolgáltatásnév-azonosítást (SNI), vagy át kell adniuk a
appName
paramétert a kapcsolati sztring a megfelelő csatlakozáshoz. Előfordulhat, hogy egyes régebbi eszközök és kódtárak nem kompatibilisek a Private Link funkcióval.A hálózati rendszergazdának legalább az Azure Cosmos DB-fiók hatókörében meg kell adni az
Microsoft.DocumentDB/databaseAccounts/PrivateEndpointConnectionsApproval/action
engedélyt az automatikusan jóváhagyott privát végpontok létrehozásához.Jelenleg nem hagyhatja jóvá az elutasított privát végpontkapcsolatot. Ehelyett hozza létre újra a privát végpontot a privát kapcsolat folytatásához. Az Azure Cosmos DB private link szolgáltatás automatikusan jóváhagyja az újra létrehozott privát végpontot.
A privát DNS-zóna integrációjának korlátozásai
Ha nem privát DNS-zónacsoportot használ, a privát DNS-zónában lévő DNS-rekordok nem törlődnek automatikusan, amikor töröl egy privát végpontot, vagy eltávolít egy régiót az Azure Cosmos DB-fiókból. A KÖVETKEZŐ előtt manuálisan kell eltávolítania a DNS-rekordokat:
- Új privát végpont hozzáadása ehhez a privát DNS-zónához.
- Új régió hozzáadása minden olyan adatbázisfiókhoz, amelyhez privát végpontok kapcsolódnak ehhez a privát DNS-zónához.
Ha nem törli a DNS-rekordokat, váratlan adatsík-problémák fordulhatnak elő. Ezek a problémák közé tartozik a privát végpont eltávolítása vagy a régió eltávolítása után hozzáadott régiók adatkimaradása.