Azure Cosmos DB hesapları için Azure Özel Bağlantı yapılandırma
ŞUNLAR IÇIN GEÇERLIDIR: NoSQL MongoDB Cassandra Gremlin Masa
Azure Özel Bağlantı kullanarak özel bir uç nokta üzerinden Azure Cosmos DB hesabına bağlanabilirsiniz. Özel uç nokta, sanal ağınızda yer alan alt ağ içinde 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ı ağ güvenlik grubu (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 aracılığıyla ö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ını kullanarak özel uç nokta oluşturma
Azure portalını kullanarak mevcut bir Azure Cosmos DB hesabı için özel uç nokta oluşturmak için şu adımları izleyin:
Azure portalında oturum açın ve bir Azure Cosmos DB hesabı seçin.
Ayarlar listesinden Ağ'ı seçin ve ardından Özel erişim sekmesinin altında + Özel uç nokta'yı seçin:
Özel uç nokta oluştur - Temel bilgiler bölmesinde aşağıdaki ayrıntıları girin veya seçin:
Ayar Value Proje ayrıntıları Abonelik Aboneliğinizi seçin. Kaynak grubu Kaynak grubunu seçin. Örnek ayrıntıları Veri Akışı Adı Özel uç noktanız için herhangi bir ad girin. Bu ad alınırsa benzersiz bir ad oluşturun. Bölge Özel Bağlantı dağıtmak istediğiniz bölgeyi seçin. Özel uç noktayı sanal ağınızın bulunduğu konumda oluşturun. İleri: Kaynak'ı seçin.
Özel uç nokta oluştur - Kaynak bölmesinde şu bilgileri girin veya seçin:
İleri: Sanal Ağ'ı seçin.
Özel uç nokta oluştur - Sanal Ağ bölmesinde şu bilgileri girin veya seçin:
Ayar Value Sanal ağ Sanal ağınızı seçin. Alt ağ Alt ağınızı seçin. İleri: DNS'yi seçin.
Özel uç nokta oluştur - DNS bölmesinde şu bilgileri girin veya seçin:
Ayar Value Özel DNS bölgesi ile tümleştirme Evet'i seçin.
Özel uç noktanızla özel olarak bağlanmak için bir DNS kaydına sahip olmanız gerekir. Ö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ölge 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ını kullanarak değiştiremezsiniz.İleri: Etiketleri>Gözden Geçir ve oluştur'u seçin. Gözden geçir ve oluştur sayfasında Azure yapılandırmanızı doğrular.
Doğrulama başarılı iletisini gördüğünüzde Oluştur'u seçin.
Azure Cosmos DB hesabı için onaylanan bir Özel Bağlantı sahip olduğunuzda, Azure portalında 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 Azure Özel Uç Nokta DNS yapılandırmasını gözden geçirin. Aşağıdaki tabloda farklı Azure Cosmos DB hesap API'leri türleri, desteklenen alt kaynaklar ve buna karşılık gelen ö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ıca ayrılmış ağ geçidini kullanan hesaplar için NoSQL API'sine yönelik ek bir giriş 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ından IP adreslerini görüntülemek için:
- Daha önce oluşturduğunuz özel uç noktayı arayın. Bu durumda, cdbPrivateEndpoint3'tir.
- DNS ayarlarını ve IP adreslerini görmek için Genel Bakış sekmesini seçin.
Özel uç nokta başına birden çok IP adresi oluşturulur:
- Azure Cosmos DB hesabının genel bölge agnostik 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 bir özel 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 bir uç nokta oluşturarak Özel Bağlantı ayarlayabilirsiniz. Bunu bir Azure Resource Manager şablonu kullanarak gerçekleştirebilirsiniz.
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 hesabı için mevcut bir Azure Cosmos DB vAPI 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 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": ""
}
}
}
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
, , Gremlin
ve Table
. Bazı Azure Cosmos DB hesap türlerine birden çok API aracılığıyla erişilebilir. Örneğin:
- NoSQL hesapları api'sinde ayrılmış ağ geçidini kullanacak şekilde yapılandırılmış hesaplar için bir seçenek eklenmiştir.
- Gremlin hesapları api'sine hem Gremlin 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 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 ayarlanmasıdır.
Ş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 aşağıdaki iki parametre dosyasını oluşturun. aşağıdaki kodla PrivateZone_parameters.json 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 aşağıdaki iki parametre dosyasını oluşturun. aşağıdaki kodla PrivateZoneGroup_parameters.json oluşturun:
{
"$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ş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 DNS 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'daki ö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ız üzerinden mi yoksa standart genel yolu mu alacağını belirler. Yerel DNS'nizin özel uç noktanız tarafından eşlenen özel IP'ye doğru şekilde başvurduğunu doğrulayın.
Güvenlik duvarı kurallarıyla birlikte Özel Bağlantı
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üne göre 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ç noktayla 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 aracılığıyla erişilebilir hale getirir. Bu, Azure Cosmos DB hesabına oluşturulduktan sonra ve özel uç nokta eklenmeden önce genel trafikten ulaşabileceğ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 bayrak, herhangi bir IP veya sanal ağ kuralına göre önceliklidir. 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 bir 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üresine neden olur. Bu kapalı kalma süresini önlemek için şu yönergeleri izleyin:
- İ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.
- Yapılandırma güncelleştirmesinin uygulandığından emin olmak için 10 dakika bekleyin.
- Yeni özel uç noktanızı yapılandırın.
- 1. adımda ayarlanan güvenlik duvarı kurallarını kaldırın.
Not
Azure Cosmos DB SDK'larını kullanarak 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 bir 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ölge bağımsız uç noktası 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ölgesi 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 bunların 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 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'nin API'sini kullandığınızda, sunucu sürümü 3.6 veya üzeri (yani, uç noktayı biçiminde
*.mongo.cosmos.azure.com
kullanan hesaplar) için özel bir uç nokta desteklenir. Özel Bağlantı, sunucu sürümü 3.2'deki hesaplar (yani, uç noktayı biçiminde*.documents.azure.com
kullanan 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 API'sini kullandığınızda, araçların ve kitaplıkların Hizmet Adı Belirlemeyi (SNI) desteklemesi veya düzgün bir şekilde bağlanmak için bağlantı dizesi 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 en azından
Microsoft.DocumentDB/databaseAccounts/PrivateEndpointConnectionsApproval/action
Azure Cosmos DB hesap kapsamında bir ağ yöneticisine 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ı aşağıdakiler öncesinde el ile kaldırmanız gerekir:
- Bu özel DNS bölgesine bağlı yeni bir özel uç nokta ekleniyor.
- 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 kesintisidir.