Azure Private Link konfigurálása Azure Cosmos DB-fiókhoz

A KÖVETKEZŐKRE VONATKOZIK: Nosql MongoDB Cassandra Gremlin Táblázat

A Azure Private Link használatával privát végponton keresztül csatlakozhat egy Azure Cosmos DB-fiókhoz. A privát végpont a virtuális hálózaton belüli alhálózat privát IP-címeinek halmaza. Ezután privát IP-címeken korlátozhatja az Azure Cosmos DB-fiókhoz való hozzáférést. Ha Private Link korlátozó NSG-szabályzatokkal van kombinálva, 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 a Azure Private Link?

Megjegyzés

Private Link nem akadályozza meg, hogy az Azure Cosmos DB-végpontokat a nyilvános DNS feloldja. A bejövő kérések szűrése alkalmazásszinten történik, nem átvitel vagy hálózati szinten.

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 Link 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 egy Private Link konfigurált Azure Cosmos DB-fiókhoz. További információért tekintse meg a Private Link dokumentáció jóváhagyási munkafolyamatának 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 a 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 a Azure Portal használatával:

  1. Jelentkezzen be a Azure Portal, majd válasszon ki egy Azure Cosmos DB-fiókot.

  2. Válassza a Hálózat 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:

    Képernyőkép a privát végpont létrehozásához a Azure Portal

  3. 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 adatai
    Name Adja meg a privát végpont nevét. Ha ezt a nevet veszi fel, hozzon létre egy egyedi nevet.
    Region Válassza ki azt a régiót, ahol üzembe szeretné helyezni Private Link. Hozza létre a privát végpontot ugyanazon a helyen, ahol a virtuális hálózat létezik.
  4. Válassza a Tovább: Erőforrás lehetőséget.

  5. A Privát végpont létrehozása – Erőforrás panelen adja meg vagy válassza ki ezt az információt:

    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, mert 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, megjelenik az SqlDedicated lehetőség is.
  6. Válassza a Tovább: Virtual Network lehetőséget.

  7. A Privát végpont létrehozása – Virtual Network panelen adja meg vagy válassza ki az alábbi információkat:

    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.
  8. Válassza a Tovább: DNS lehetőséget.

  9. 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égponttal való privát csatlakozáshoz DNS-rekordra van szükség. Javasoljuk, hogy integrálja a privát végpontot egy privát DNS-zónával. Saját DNS-kiszolgálókat is használhat, vagy létrehozhat DNS-rekordokat a virtuális gépek gazdagépfájljaival.

    Ha ehhez a beállításhoz az Igen lehetőséget választja, 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 meg lesz határozva. A Azure Portal használatával nem módosíthatja.
  10. Válassza a Tovább: Címkék>áttekintése + létrehozás lehetőséget. A Felülvizsgálat és létrehozás lapon az Azure ellenőrzi a konfigurációt.

  11. Amikor megjelenik a Megfelelt az ellenőrzésen üzenet, válassza a Létrehozás lehetőséget.

Ha jóváhagyott Private Link rendelkezik egy Azure Cosmos DB-fiókhoz, a Azure Portal 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ónák nevei közötti leképezést mutatja be. A Gremlin és a Table API-fiókokhoz a NoSQL API-n keresztül is hozzáférhet, így ezekhez az API-khoz két bejegyzés tartozik. A dedikált átjárót használó fiókokhoz a NoSQL API-hoz 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 beolvasása

A privát végpont kiépítése után lekérdezheti az IP-címeket. Az IP-címek megtekintése a Azure Portal:

  1. Keresse meg a korábban létrehozott privát végpontot. Ebben az esetben ez a cdbPrivateEndpoint3.
  2. Válassza az Áttekintés lapot a DNS-beállítások és AZ IP-címek megtekintéséhez.

Képernyőkép a magánhálózati IP-címekről a Azure Portal

Privát végpontonként több IP-cím jön létre:

  • Az Azure Cosmos DB-fiók globális régiófüggetlen végpontja.
  • Egy minden régióhoz, ahol az Azure Cosmos DB-fiók üzembe van helyezve.

Privát végpont létrehozása 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 beolvasása

A privát végpont kiépítése után a következő PowerShell-szkripttel kérdezheti le 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 integrálhatja egy privát DNS-zónával a következő Azure CLI-szkripttel:

#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 sablon használatával

A Private Link úgy állíthatja be, hogy létrehoz egy privát végpontot egy virtuális hálózati alhálózaton. Ezt egy Azure Resource Manager-sablonnal érheti el.

Az alábbi kód használatával hozzon létre egy Resource Manager sablont PrivateEndpoint_template.json néven. Ez a sablon létrehoz egy privát végpontot egy meglévő virtuális hálózaton lévő, NoSQL-hez készült Azure Cosmos DB vAPI-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

A sablon paraméterfájljának meghatározása

Hozzon létre egy paraméterfájlt a sablonhoz, és adja neki a PrivateEndpoint_parameters.json nevet. 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": ""
        }
    }
}

A sablon üzembe helyezése PowerShell-szkripttel

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éldául:

  • A NoSQL-fiókok API-ja egy hozzáadott beállítással rendelkezik a dedikált átjáró használatára konfigurált fiókokhoz.
  • A Gremlin-fiókok API-ja a Gremlin- és a NoSQL-fiókokhoz készült API-bó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 hoz létre a számára SqlDedicated, 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.

Képernyőkép a Resource Manager sablon üzembehelyezési kimenetéről.

A sablon üzembe helyezése után a privát IP-címek az alhálózaton belül lesznek fenntartva. 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ózatban lévő, NoSQL-hez készült 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')]"
                }
            }
        }        
    ]
}

A sablon paraméterfájljának meghatározása

Hozza létre az alábbi két paraméterfájlt a sablonhoz. Hozza létre a PrivateZone_parameters.json fájlt 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 Resource Manager sablont PrivateZoneGroup_template.json néven. Ez a sablon létrehoz egy privát DNS-zónacsoportot egy meglévő Virtuális hálózatban lévő, NoSQL-hez készült 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"
        },
        "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'))]"
                }
              }
            ]
          }
        }
    ]
}

A sablon paraméterfájljának meghatározása

Hozza létre az alábbi két paraméterfájlt a sablonhoz. Hozza létre a PrivateZoneGroup_parameters.json fájlt. 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": ""
        }
    }
}

A sablon üzembe helyezése PowerShell-szkripttel

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

Használjon privát DNS-zónát azon az alhálózaton belül, ahol létrehozta a privát végpontot. Konfigurálja a végpontokat úgy, hogy minden magánhálózati IP-cím EGY 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 integrálhatja azt 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 áthaladnak-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 magánhálózati IP-címre.

A következő helyzetek és eredmények akkor lehetségesek, ha Private Link tűzfalszabályokkal kombinálva használja:

  • 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 engedélyezi. Ha egy privát végpont olyan alhálózaton van konfigurálva, ahol a szolgáltatásvégpont is konfigurálva van:

    • a privát végpont által leképezett adatbázisfiókra vonatkozó forgalom privát végponton keresztül van irányítva,
    • az alhálózatról más adatbázisfiókokba érkező forgalom szolgáltatásvégponton keresztül lesz átirá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ál nyilvános forgalmat vagy szolgáltatásvégpontot, a jóváhagyott privát végpontok 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 PublicNetworkAccessa Letiltva értékre van állítva.

Nyilvános hálózati hozzáférés blokkolása a fiók létrehozása során

Az előző szakaszban leírtak szerint, és ha nincs beállítva meghatározott tűzfalszabályok, a privát végpontok 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 a 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 is le van tiltva, beállíthatja a jelölőt Letiltva értékre a publicNetworkAccess fiók létrehozásakor. Vegye figyelembe, hogy 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ő Letiltva értékre van állítva, 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

Alapértelmezés szerint egy privát végpont meglévő fiókhoz való hozzáadása körülbelül öt perc rövid állásidőt eredményez. Az állásidő elkerüléséhez kövesse az alábbi utasításokat:

  1. 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.
  2. Várjon 10 percet a konfigurációs frissítés alkalmazásának ellenőrzéséhez.
  3. Konfigurálja az új privát végpontot.
  4. Távolítsa el az 1. lépésben beállított tűzfalszabályokat.

Megjegyzés

Ha az Azure Cosmos DB SDK-kkal futtat alkalmazásokat, előfordulhat, hogy átmeneti időtúllépések történnek a konfigurációs frissítés során. Győződjön meg arról, hogy az alkalmazás úgy van kialakítva, hogy rugalmas legyen az átmeneti csatlakozási hibákhoz , és szükség esetén újrapróbálkozási logikával rendelkezzen.

Porttartomány közvetlen mód használatakor

Ha közvetlen módú kapcsolaton keresztül használja Private Link 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 nyugatiré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ó mindegyike egy IP-címet tartalmaz, a globális régió-agnosztikus végponthoz pedig egy IP-címet. Később hozzáadhat egy új régiót az Azure Cosmos DB-fiókhoz. 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 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.

Aktuális korlátozások

Az alábbi korlátozások vonatkoznak Private Link Azure Cosmos DB-fiókkal való használatakor:

  • Egyetlen Azure Cosmos DB-fiókban nem lehet több mint 200 privát végpont.

  • Ha közvetlen módú kapcsolaton keresztül használja Private Link 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 *.mongo.cosmos.azure.comhasználó fiókokhoz). Private Link a kiszolgáló 3.2-es verzióján (azaz a végpontot a formátumban *.documents.azure.comhasználó fiókok esetében) nem támogatott. A Private Link használatához át kell telepítenie a régi fiókokat az új verzióra.

  • Ha az Azure Cosmos DB API-ját egy Private Link rendelkező MongoDB-fiókhoz használja, 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 Microsoft.DocumentDB/databaseAccounts/PrivateEndpointConnectionsApproval/action Azure Cosmos DB-fiók hatókörében engedélyt kell adni az automatikusan jóváhagyott privát végpontok létrehozásához.

  • Jelenleg nem lehet jóváhagyni egy 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 DNS-rekordokat manuálisan kell eltávolítania a következő előtt:

  • Ú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.

Következő lépések

Az Azure Cosmos DB biztonsági funkcióival kapcsolatos további információkért tekintse meg a következő cikkeket: