Azure Cosmos DB hesapları için Azure Özel Bağlantı yapılandırma

ŞUNLAR IÇIN GEÇERLIDIR: Nosql MongoDB Cassandra Gremlin Tablo

Azure Özel Bağlantı kullanarak özel bir uç nokta üzerinden Azure Cosmos DB hesabına bağlanabilirsiniz. Özel uç nokta, sanal ağınızdaki bir alt ağda yer alan özel IP adresleri kümesidir. Daha sonra özel IP adresleri üzerinden Azure Cosmos DB hesabına erişimi sınırlayabilirsiniz. Özel Bağlantı kısıtlayıcı NSG ilkeleriyle birleştirildiğinde, veri sızdırma riskini azaltmaya yardımcı olur. Özel uç noktalar hakkında daha fazla bilgi edinmek için bkz. Azure Özel Bağlantı nedir?

Not

Özel Bağlantı, Azure Cosmos DB uç noktalarınızın genel DNS tarafından çözümlenmesini engellemez. Gelen isteklerin filtrelenmesi aktarım veya ağ düzeyinde değil uygulama düzeyinde gerçekleşir.

Özel Bağlantı kullanıcıların bir Azure Cosmos DB hesabına sanal ağ içinden veya eşlenmiş herhangi bir sanal ağdan erişmesine olanak tanır. Özel Bağlantı eşlenen kaynaklara vpn veya Azure ExpressRoute üzerinden özel eşleme üzerinden şirket içinde de erişilebilir.

Otomatik veya el ile onay yöntemini kullanarak Özel Bağlantı ile yapılandırılmış bir Azure Cosmos DB hesabına bağlanabilirsiniz. Daha fazla bilgi edinmek için Özel Bağlantı belgelerinin onay iş akışı bölümüne bakın.

Bu makalede, Azure Cosmos DB işlem deposu için özel uç noktaların nasıl ayarlanacağı açıklanır. Otomatik onay yöntemini kullandığınız varsayılır. Analiz deposunu kullanıyorsanız bkz. Analiz deposu için özel uç noktaları yapılandırma.

Azure portal kullanarak özel uç nokta oluşturma

Azure portal kullanarak var olan bir Azure Cosmos DB hesabı için özel uç nokta oluşturmak için şu adımları izleyin:

  1. Azure portal oturum açın ve bir Azure Cosmos DB hesabı seçin.

  2. Ayarlar listesinden Ağ'ı seçin ve ardından Özel erişim sekmesinde + Özel uç nokta'yı seçin:

    Azure portal özel uç nokta oluşturmaya yönelik seçimlerin ekran görüntüsü

  3. Özel uç nokta oluşturma - Temel bilgiler bölmesinde aşağıdaki ayrıntıları girin veya seçin:

    Ayar Değer
    Proje ayrıntıları
    Abonelik Aboneliğinizi seçin.
    Kaynak grubu Kaynak grubunu seçin.
    Örnek ayrıntıları
    Name Özel uç noktanız için herhangi bir ad girin. Bu ad alınırsa benzersiz bir ad oluşturun.
    Region Özel Bağlantı dağıtmak istediğiniz bölgeyi seçin. Özel uç noktayı sanal ağınızın bulunduğu konumda oluşturun.
  4. İleri: Kaynak'ı seçin.

  5. Özel uç nokta oluştur - Kaynak bölmesinde şu bilgileri girin veya seçin:

    Ayar Değer
    Bağlantı yöntemi Dizinimdeki bir Azure kaynağına bağlan'ı seçin.

    Daha sonra Özel Bağlantı ayarlamak için kaynaklarınızdan birini seçebilirsiniz. Alternatif olarak, başka birinin kaynağıyla paylaştığı bir kaynak kimliği veya diğer ad kullanarak da bağlanabilirsiniz.
    Abonelik Aboneliğinizi seçin.
    Kaynak türü Microsoft.AzureCosmosDB/databaseAccounts'ı seçin.
    Kaynak Azure Cosmos DB hesabınızı seçin.
    Hedef alt kaynak Eşlemek istediğiniz Azure Cosmos DB API türünü seçin. Bu varsayılan olarak SQL, MongoDB ve Cassandra API'leri için yalnızca bir seçenektir. Gremlin ve Tablo API'leri için NoSQL'i de seçebilirsiniz çünkü bu API'ler NoSQL API'siyle birlikte çalışabilir. NoSQL hesabı için API için sağlanan ayrılmış bir ağ geçidiniz varsa , SqlDedicated seçeneğini de görürsünüz.
  6. İleri: Sanal Ağ'yi seçin.

  7. Özel uç nokta oluştur - Sanal Ağ bölmesinde şu bilgileri girin veya seçin:

    Ayar Değer
    Sanal ağ Sanal ağınızı seçin.
    Alt ağ Alt ağınızı seçin.
  8. İleri: DNS'yi seçin.

  9. Özel uç nokta oluştur - DNS bölmesinde şu bilgileri girin veya seçin:

    Ayar Değer
    Özel DNS bölgesi ile tümleştirme Evet’i seçin.

    Özel uç noktanıza özel olarak bağlanmak için bir DNS kaydına ihtiyacınız vardır. Özel uç noktanızı özel bir DNS bölgesiyle tümleştirmenizi öneririz. Ayrıca kendi DNS sunucularınızı kullanabilir veya sanal makinelerinizdeki konak dosyalarını kullanarak DNS kayıtları oluşturabilirsiniz.

    Bu seçenek için evet'i seçtiğinizde özel bir DNS bölgesi grubu da oluşturulur. DNS bölge grubu, özel DNS bölgesi ile özel uç nokta arasındaki bir bağlantıdır. Bu bağlantı, özel uç noktada bir güncelleştirme olduğunda özel DNS bölgesini otomatik olarak güncelleştirmenize yardımcı olur. Örneğin, bölgeleri eklediğinizde veya kaldırdığınızda, özel DNS bölgesi otomatik olarak güncelleştirilir.
    Yapılandırma adı Aboneliğinizi ve kaynak grubunuzu seçin.

    Özel DNS bölgesi otomatik olarak belirlenir. Azure portal kullanarak değiştiremezsiniz.
  10. İleri: Etiketler>Gözden Geçir + oluştur'u seçin. Gözden geçir ve oluştur sayfasında Azure yapılandırmanızı doğrular.

  11. Doğrulama başarılı iletisini gördüğünüzde Oluştur’u seçin.

Azure Cosmos DB hesabı için onaylanmış bir Özel Bağlantı varsa, Azure portal Güvenlik Duvarı ve sanal ağlar bölmesindeki Tüm ağlar seçeneği kullanılamaz.

API türleri ve özel bölge adları

Özel bölgeler ve özel uç nokta için DNS yapılandırmaları hakkında daha ayrıntılı bir açıklama için lütfen Azure Özel Uç Nokta DNS yapılandırmasını gözden geçirin. Aşağıdaki tabloda farklı Azure Cosmos DB hesabı API türleri, desteklenen alt kaynaklar ve ilgili özel bölge adları arasındaki eşleme gösterilmektedir. Tablo hesapları için Gremlin ve API'ye NoSQL API'sini kullanarak da erişebilirsiniz, bu nedenle bu API'ler için iki giriş vardır. Ayrılmış ağ geçidini kullanan hesaplar için NoSQL API'sine yönelik ek bir giriş de vardır.

Azure Cosmos DB hesabı API türü Desteklenen alt kaynaklar veya grup kimlikleri Özel bölge adı
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
Tablo Tablo privatelink.table.cosmos.azure.com
Tablo Sql privatelink.documents.azure.com

Özel IP adreslerini getirme

Özel uç nokta sağlandıktan sonra IP adreslerini sorgulayabilirsiniz. Azure portal IP adreslerini görüntülemek için:

  1. Daha önce oluşturduğunuz özel uç noktayı arayın. Bu durumda cdbPrivateEndpoint3 olur.
  2. DNS ayarlarını ve IP adreslerini görmek için Genel Bakış sekmesini seçin.

Azure portal özel IP adreslerinin ekran görüntüsü

Özel uç nokta başına birden çok IP adresi oluşturulur:

  • Azure Cosmos DB hesabının genel bölgeden bağımsız uç noktası için bir tane.
  • Azure Cosmos DB hesabının dağıtıldığı her bölge için bir tane.

Azure PowerShell kullanarak özel uç nokta oluşturma

Mevcut bir Azure Cosmos DB hesabı için MyPrivateEndpoint adlı özel bir uç nokta oluşturmak için aşağıdaki PowerShell betiğini çalıştırın. Değişken değerlerini ortamınızın ayrıntılarıyla değiştirin.

$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

Özel uç noktayı özel dns bölgesiyle tümleştirme

Özel uç noktayı oluşturduktan sonra, aşağıdaki PowerShell betiğini kullanarak bunu özel bir DNS bölgesiyle tümleştirebilirsiniz:

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

Özel IP adreslerini getirme

Özel uç nokta sağlandıktan sonra, aşağıdaki PowerShell betiğini kullanarak IP adreslerini ve FQDN eşlemesini sorgulayabilirsiniz:

$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
}

Azure CLI kullanarak özel uç nokta oluşturma

Mevcut bir Azure Cosmos DB hesabı için myPrivateEndpoint adlı özel bir uç nokta oluşturmak için aşağıdaki Azure CLI betiğini çalıştırın. Değişken değerlerini ortamınızın ayrıntılarıyla değiştirin.

# 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

Özel uç noktayı özel dns bölgesiyle tümleştirme

Özel uç noktayı oluşturduktan sonra, aşağıdaki Azure CLI betiğini kullanarak bunu özel bir DNS bölgesiyle tümleştirebilirsiniz:

#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"

Resource Manager şablonu kullanarak özel uç nokta oluşturma

Sanal ağ alt ağında özel uç nokta oluşturarak Özel Bağlantı ayarlayabilirsiniz. Bunu bir Azure Resource Manager şablonu kullanarak elde edebilirsiniz.

PrivateEndpoint_template.json adlı bir Resource Manager şablonu oluşturmak için aşağıdaki kodu kullanın. Bu şablon, mevcut bir sanal ağdaki NoSQL için Azure Cosmos DB vAPI hesabı için özel bir uç nokta oluşturur.

@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

Şablon için parametre dosyasını tanımlama

Şablon için bir parametre dosyası oluşturun ve PrivateEndpoint_parameters.json olarak adlandırın. Parametreler dosyasına aşağıdaki kodu ekleyin:

{
    "$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": ""
        }
    }
}

PowerShell betiği kullanarak şablonu dağıtma

Aşağıdaki kodu kullanarak bir PowerShell betiği oluşturun. Betiği çalıştırmadan önce abonelik kimliğini, kaynak grubu adını ve diğer değişken değerlerini ortamınızın ayrıntılarıyla değiştirin.

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

PowerShell betiğinde GroupId değişken yalnızca bir değer içerebilir. Bu değer hesabın API türüdür. İzin verilen değerler şunlardır: Sql, SqlDedicated, MongoDB, Cassandra, Gremlinve Table. Bazı Azure Cosmos DB hesap türlerine birden çok API aracılığıyla erişilebilir. Örnek:

  • NoSQL hesaplarının API'sinde ayrılmış ağ geçidini kullanmak üzere yapılandırılmış hesaplar için ek bir seçenek vardır.
  • Gremlin hesapları api'sine hem Gremlin'den hem de NoSQL için API'den erişilebilir.
  • Tablo hesapları API'sine Hem Tablo hem de NoSQL hesapları için API'den erişilebilir.

Bu hesaplar için her API türü için bir özel uç nokta oluşturmanız gerekir. için SqlDedicatedözel uç nokta oluşturuyorsanız, yalnızca standart ağ geçidini kullanarak hesabınıza da bağlanmak istiyorsanız için Sql ikinci bir uç nokta eklemeniz gerekir. Karşılık gelen API türü dizide GroupId belirtilir.

Şablon başarıyla dağıtıldıktan sonra, aşağıdaki görüntüde gösterildiğine benzer bir çıktı görebilirsiniz. provisioningState Değer, Succeeded özel uç noktaların doğru ayarlandığı durumdur.

Resource Manager şablonunun dağıtım çıktısının ekran görüntüsü.

Şablon dağıtıldıktan sonra özel IP adresleri alt ağ içinde ayrılır. Azure Cosmos DB hesabının güvenlik duvarı kuralı yalnızca özel uç noktadan gelen bağlantıları kabul etmek üzere yapılandırılır.

Özel uç noktayı özel dns bölgesiyle tümleştirme

PrivateZone_template.json adlı bir Resource Manager şablonu oluşturmak için aşağıdaki kodu kullanın. Bu şablon, mevcut bir sanal ağdaki NoSQL hesabı için mevcut Bir Azure Cosmos DB API'si için özel bir DNS bölgesi oluşturur.

{
    "$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')]"
                }
            }
        }        
    ]
}

Şablon için parametre dosyasını tanımlama

Şablon için aşağıdaki iki parametre dosyasını oluşturun. aşağıdaki kodla PrivateZone_parameters.json dosyasını oluşturun:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "privateZoneName": {
            "value": ""
        },
        "VNetId": {
            "value": ""
        }
    }
}

PrivateZoneGroup_template.json adlı bir Resource Manager şablonu oluşturmak için aşağıdaki kodu kullanın. Bu şablon, mevcut bir sanal ağdaki NoSQL hesabı için mevcut Bir Azure Cosmos DB API'si için özel bir DNS bölge grubu oluşturur.

{
    "$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'))]"
                }
              }
            ]
          }
        }
    ]
}

Şablon için parametre dosyasını tanımlama

Şablon için aşağıdaki iki parametre dosyasını oluşturun. PrivateZoneGroup_parameters.json dosyasını oluşturun. aşağıdaki kodla:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "privateZoneName": {
            "value": ""
        },
        "PrivateEndpointDnsGroupName": {
            "value": ""
        },
        "privateEndpointName":{
            "value": ""
        }
    }
}

PowerShell betiği kullanarak şablonu dağıtma

Aşağıdaki kodu kullanarak bir PowerShell betiği oluşturun. Betiği çalıştırmadan önce abonelik kimliğini, kaynak grubu adını ve diğer değişken değerlerini ortamınızın ayrıntılarıyla değiştirin.

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

Özel API'yi yapılandırma

Özel uç noktayı oluşturduğunuz alt ağ içinde özel bir DNS bölgesi kullanmanız gerekir. Uç noktaları, her özel IP adresinin bir DNS girdisine eşlenmesi için yapılandırın. Daha önce gösterilen yanıtta fqdns özelliğine bakın.

Özel uç noktayı oluştururken Azure'da özel bir DNS bölgesiyle tümleştirebilirsiniz. Bunun yerine özel bir DNS bölgesi kullanmayı seçerseniz, bunu özel uç nokta için ayrılmış tüm özel IP adresleri için DNS kayıtları eklemek üzere yapılandırmanız gerekir.

Önemli

İsteklerinizin DNS çözümlemesi, bu isteklerin özel uç noktalarınızdan mı geçeceğini yoksa standart genel yolu mu alacağını belirler. Yerel DNS'nizin özel uç noktanız tarafından eşlenen özel IP adresine doğru şekilde başvurduğunu doğrulayın.

Güvenlik duvarı kurallarıyla birlikte Özel Bağlantı kullandığınızda aşağıdaki durumlar ve sonuçlar mümkündür:

  • Herhangi bir güvenlik duvarı kuralı yapılandırmazsanız, varsayılan olarak tüm trafik bir Azure Cosmos DB hesabına erişebilir.

  • Genel trafiği veya bir hizmet uç noktasını yapılandırıp özel uç noktalar oluşturursanız, ilgili güvenlik duvarı kuralı türü tarafından farklı gelen trafik türleri yetkilendirilmiş olur. Hizmet uç noktasının da yapılandırıldığı bir alt ağda özel uç nokta yapılandırıldıysa:

    • özel uç nokta tarafından eşlenen veritabanı hesabına giden trafik, özel uç nokta üzerinden yönlendirilir,
    • alt ağdan diğer veritabanı hesaplarına giden trafik hizmet uç noktası üzerinden yönlendirilir.
  • Genel trafik veya hizmet uç noktası yapılandırmazsanız ve özel uç noktalar oluşturursanız Azure Cosmos DB hesabına yalnızca özel uç noktalar üzerinden erişilebilir. Genel trafiği veya hizmet uç noktasını yapılandırmazsanız, onaylanan tüm özel uç noktalar reddedildikten veya silindikten sonra, devre dışı olarak ayarlanmadığı sürece PublicNetworkAccess hesap ağın tamamında açılır.

Hesap oluşturma sırasında genel ağ erişimini engelleme

Önceki bölümde açıklandığı gibi ve belirli güvenlik duvarı kuralları ayarlanmadığı sürece özel uç nokta eklemek Azure Cosmos DB hesabınızı yalnızca özel uç noktalar üzerinden erişilebilir hale getirir. Bu, Azure Cosmos DB hesabına oluşturulduktan sonra ve özel uç nokta eklenmeden önce genel trafikten erişilebileceği anlamına gelir. Özel uç noktalar oluşturulmadan önce bile genel ağ erişiminin devre dışı bırakıldığından emin olmak için, hesap oluşturma sırasında bayrağı devre dışı olarak ayarlayabilirsinizpublicNetworkAccess. Bu bayrağın herhangi bir IP veya sanal ağ kuralına göre öncelikli olduğunu unutmayın. Güvenlik duvarı yapılandırmasında kaynak IP'ye veya sanal ağa izin verilse bile bayrak Devre Dışı olarak ayarlandığında tüm genel ve sanal ağ trafiği engellenir.

Bu bayrağın nasıl kullanılacağını gösteren bir örnek için bu Azure Resource Manager şablonuna bakın.

Kapalı kalma süresi olmadan mevcut Azure Cosmos DB hesabına özel uç noktalar ekleme

Varsayılan olarak, mevcut hesaba özel uç nokta eklemek yaklaşık beş dakikalık kısa bir kapalı kalma süresiyle sonuçlanmıştır. Bu kapalı kalma süresini önlemek için şu yönergeleri izleyin:

  1. İstemci bağlantılarınıza açıkça izin vermek için güvenlik duvarı yapılandırmanıza IP veya sanal ağ kuralları ekleyin.
  2. Yapılandırma güncelleştirmesinin uygulandığından emin olmak için 10 dakika bekleyin.
  3. Yeni özel uç noktanızı yapılandırın.
  4. 1. adımda ayarlanan güvenlik duvarı kurallarını kaldırın.

Not

Azure Cosmos DB SDK'larını kullanan uygulamaları çalıştırıyorsanız yapılandırma güncelleştirmesi sırasında geçici zaman aşımları olabilir. Uygulamanızın geçici bağlantı hatalarına karşı dayanıklı olacak şekilde tasarlandığından ve gerekirse yeniden deneme mantığına sahip olduğundan emin olun.

Doğrudan mod kullanılırken bağlantı noktası aralığı

Doğrudan mod bağlantısı aracılığıyla azure cosmos DB hesabıyla Özel Bağlantı kullandığınızda, tüm TCP bağlantı noktası aralığının (0 - 65535) açık olduğundan emin olmanız gerekir.

Bölge eklediğinizde veya kaldırdığınızda özel uç noktayı güncelleştirme

Azure Cosmos DB hesap dağıtımları için üç bölge vardır: Batı ABD, Orta ABD ve Batı Avrupa. Hesabınız için özel uç nokta oluşturduğunuzda alt ağda dört özel IP ayrılmıştır. Üç bölgenin her biri için bir IP ve genel bölgeden bağımsız uç nokta için bir IP vardır. Daha sonra Azure Cosmos DB hesabına yeni bir bölge ekleyebilirsiniz. Özel DNS bölgesi aşağıdaki gibi güncelleştirilir:

  • Özel DNS bölge grubu kullanılıyorsa:

    Özel DNS bölge grubu kullanıyorsanız, özel uç nokta güncelleştirildiğinde özel DNS bölgesi otomatik olarak güncelleştirilir. Önceki örnekte, yeni bir bölge eklendikten sonra özel DNS bölgesi otomatik olarak güncelleştirilir.

  • Özel DNS bölge grubu kullanılmıyorsa:

    Özel DNS bölge grubu kullanmıyorsanız, Azure Cosmos DB hesabına bölge eklemek veya kaldırmak için bu hesap için DNS girdileri eklemeniz veya kaldırmanız gerekir. Bölgeler eklendikten veya kaldırıldıktan sonra, alt ağın özel DNS bölgesini eklenen veya kaldırılan DNS girişlerini ve ilgili özel IP adreslerini yansıtacak şekilde güncelleştirebilirsiniz.

    Önceki örnekte, yeni bölgeyi ekledikten sonra özel DNS bölgenize veya özel DNS'nize karşılık gelen bir DNS kaydı eklemeniz gerekir. Bir bölgeyi kaldırırken de aynı adımları kullanabilirsiniz. Bölgeyi kaldırdıktan sonra, ilgili DNS kaydını özel DNS bölgenizden veya özel DNS'nizden kaldırmanız gerekir.

Geçerli sınırlamalar

Azure Cosmos DB hesabıyla Özel Bağlantı kullandığınızda aşağıdaki sınırlamalar geçerlidir:

  • Tek bir Azure Cosmos DB hesabında 200'den fazla özel uç noktanız olamaz.

  • Özel Bağlantı doğrudan mod bağlantısı üzerinden bir Azure Cosmos DB hesabıyla kullandığınızda, yalnızca TCP protokollerini kullanabilirsiniz. HTTP protokolü şu anda desteklenmiyor.

  • MongoDB hesabı için Azure Cosmos DB API'sini kullandığınızda, sunucu sürümü 3.6 veya üzeri (yani uç noktayı biçiminde *.mongo.cosmos.azure.comkullanan hesaplar) için özel uç nokta desteklenir. Özel Bağlantı, sunucu sürümü 3.2'deki hesaplar (yani uç noktayı biçiminde *.documents.azure.comkullanan hesaplar) için desteklenmez. Özel Bağlantı kullanmak için eski hesapları yeni sürüme geçirmeniz gerekir.

  • Özel Bağlantı olan bir MongoDB hesabı için Azure Cosmos DB'nin API'sini kullandığınızda, araçların ve kitaplıkların hizmet adı tanımlamasını (SNI) desteklemesi veya düzgün bağlanmak için bağlantı dizesinden parametresini geçirmesi appName gerekir. Bazı eski araçlar ve kitaplıklar Özel Bağlantı özelliğiyle uyumlu olmayabilir.

  • Otomatik olarak onaylanan özel uç noktalar oluşturmak için bir ağ yöneticisine en azından Microsoft.DocumentDB/databaseAccounts/PrivateEndpointConnectionsApproval/action Azure Cosmos DB hesap kapsamında izin verilmelidir.

  • Şu anda reddedilen özel uç nokta bağlantısını onaylayamazsınız. Bunun yerine, özel bağlantıyı sürdürmek için özel uç noktayı yeniden oluşturun. Azure Cosmos DB özel bağlantı hizmeti, yeniden oluşturulan özel uç noktayı otomatik olarak onaylar.

Özel DNS bölgesi tümleştirmesine yönelik sınırlamalar

Özel DNS bölge grubu kullanmıyorsanız, özel bir uç noktayı sildiğinizde veya Azure Cosmos DB hesabından bir bölgeyi kaldırdığınızda özel DNS bölgesindeki DNS kayıtları otomatik olarak kaldırılmaz. Dns kayıtlarını şundan önce el ile kaldırmanız gerekir:

  • Bu özel DNS bölgesine bağlı yeni bir özel uç nokta ekleme.
  • Bu özel DNS bölgesine bağlı özel uç noktaları olan herhangi bir veritabanı hesabına yeni bölge ekleme.

DNS kayıtlarını temizlemezseniz beklenmeyen veri düzlemi sorunları oluşabilir. Bu sorunlar, özel uç nokta kaldırma veya bölge kaldırma sonrasında eklenen bölgelerde veri kesintisini içerir.

Sonraki adımlar

Azure Cosmos DB güvenlik özellikleri hakkında daha fazla bilgi edinmek için aşağıdaki makalelere bakın: