Megosztás a következőn keresztül:


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:

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

  2. 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:

    Képernyőkép a privát végpont Azure Portalon való létrehozásához használandó kijelölésekről

  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 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.
  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 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.
  6. Válassza a Következő: Virtuális hálózat lehetőséget.

  7. 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.
  8. Válassza a Következő: 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é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ó.
  10. 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.

  11. 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:

  1. Keresse meg a korábban létrehozott privát végpontot. Ebben az esetben ez a cdbPrivateEndpoint3.
  2. Az Áttekintés lapon megtekintheti a DNS-beállításokat és az IP-címeket.

Képernyőkép a privát IP-címekről az Azure Portalon

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 SqlDedicatedhoz 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.

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

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:

  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.

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.comhaszná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.