Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
С помощью Приватный канал Azure можно подключиться к учетной записи Azure Cosmos DB через частную конечную точку. Частная конечная точка — это набор частных IP-адресов в подсети в виртуальной сети. Затем можно ограничить доступ к учетной записи Azure Cosmos DB по частным IP-адресам. При использовании Приватный канал в сочетании с ограничивающими политиками сетевой группы безопасности (NSG), это помогает снизить риск утечки данных. Дополнительные сведения о частных конечных точках см. в статье "Что такое Приватный канал Azure?"
Замечание
Приватный канал не предотвращает разрешение конечных точек Azure Cosmos DB публичной DNS. Фильтрация входящих запросов выполняется на уровне приложения, а не на уровне транспорта или сети.
Приватный канал позволяет пользователям получать доступ к учетной записи Azure Cosmos DB из виртуальной сети или из любой одноранговой виртуальной сети. Ресурсы, сопоставленные с Приватный канал, также доступны в локальной сети с использованием частного пиринга через VPN или Azure ExpressRoute.
Вы можете подключиться к учетной записи Azure Cosmos DB, настроенной для Приватный канал, с помощью метода автоматического или ручного утверждения. Дополнительные сведения см. в разделе о рабочем процессе утверждения документации по Приватный канал.
В этой статье описано, как настроить частные конечные точки для хранилища транзакций Azure Cosmos DB. Предполагается, что вы используете метод автоматического утверждения. Если вы используете аналитическое хранилище, ознакомьтесь с разделом "Настройка частных конечных точек" для аналитического хранилища.
Создание частной конечной точки с помощью портала Azure
Выполните следующие действия, чтобы создать частную конечную точку для существующей учетной записи Azure Cosmos DB с помощью портал Azure:
Войдите в портал Azure, а затем выберите учетную запись Azure Cosmos DB.
Выберите "Сеть" из списка параметров и выберите "Частная конечная точка " на вкладке "Частный доступ ".
В области Создание частной конечной точки — Основные введите или выберите следующие параметры.
Настройки Value Детали проекта Subscription Выберите подписку. Группа ресурсов Выберите группу ресурсов. Сведения об инстанции Name Введите любое имя частной конечной точки. Если это имя уже используется, создайте уникальное. Регион Выберите регион, в котором требуется развернуть Приватный канал. Создайте частную конечную точку в том же расположении, где существует виртуальная сеть. Нажмите кнопку "Далее": ресурс.
В области «Создание частной конечной точки – Ресурс» введите или выберите следующие сведения:
Настройки Value Способ подключения Выберите "Подключиться к ресурсу Azure" в моем каталоге.
Затем можно выбрать один из ресурсов для настройки Приватный канал. Или можно подключиться к чужому ресурсу, используя предоставленный вам ИД или псевдоним ресурса.Subscription Выберите подписку. Тип ресурса Выберите параметр Microsoft.AzureCosmosDB/databaseAccounts.Resource Выберите свою учетную запись Azure Cosmos DB. Целевой субресурс Выберите тип API Azure Cosmos DB, который нужно сопоставить. По умолчанию используется только один вариант для API для SQL, MongoDB и Cassandra. Для API для Gremlin и Table можно также выбрать NoSQL , так как эти API взаимодействуют с API для NoSQL. Если у вас есть выделенный шлюз, подготовленный для учетной записи API для NoSQL, вы также увидите вариант SqlDedicated. Нажмите кнопку "Далее" — виртуальная сеть.
В области "Создание частной конечной точки" виртуальная сеть введите или выберите следующие сведения:
Настройки Value Виртуальная сеть Выберите свою виртуальную сеть. Подсеть Выберите подсеть. Нажмите кнопку "Далее": DNS.
В области "Создать частную конечную точку " DNS " введите или выберите следующую информацию:
Настройки Value Интегрировать с частной зоной DNS Выберите Да.
Для частного подключения к частной конечной точке требуется запись DNS. Рекомендуется интегрировать частную конечную точку с частной зоной DNS. Вы также можете использовать собственные DNS-серверы или создавать записи DNS с помощью файлов узлов на виртуальных машинах.
При выборе "Да" для этого параметра также создается частная группа зон DNS. Группа зон DNS — это связь между частной зоной DNS и частной конечной точкой. Эта ссылка помогает автоматически обновлять частную зону DNS при обновлении частной конечной точки. Например, при добавлении или удалении регионов частная зона DNS автоматически обновляется.Имя конфигурации Выберите подписку и группу ресурсов.
Частная зона DNS определяется автоматически. Его нельзя изменить с помощью портала Azure.Нажмите кнопку "Далее": проверка тегов>и создание. На странице Просмотр и создание Azure проверит вашу конфигурацию.
При появлении сообщения Проверка пройдена нажмите кнопку Создать.
Когда у вас есть утвержденная Приватная ссылка для учетной записи Azure Cosmos DB, в портале Azure параметр "Все сети" в области "Брандмауэр и виртуальные сети" недоступен.
Типы API и имена частных зон
Ознакомьтесь с конфигурацией DNS частной конечной точки Azure, чтобы получить более подробное описание частных зон и конфигураций DNS для частной конечной точки. В следующей таблице показано сопоставление различных типов API учетных записей Azure Cosmos DB, поддерживаемых подресурсов и соответствующих имен частных зон. Вы также можете получить доступ к учетным записям Gremlin и API для таблиц через API для NoSQL, поэтому для этих API есть две записи. Также существует дополнительная запись для API NoSQL для учетных записей с использованием выделенного шлюза.
| Тип API учетной записи Azure Cosmos DB | Поддерживаемые подресурсы или идентификаторы групп | Имя частной зоны |
|---|---|---|
| NoSQL | SQL | privatelink.documents.azure.com |
| NoSQL | SqlDedicated | privatelink.sqlx.cosmos.azure.com |
| Cassandra | Cassandra | privatelink.cassandra.cosmos.azure.com |
| Монго | MongoDB | privatelink.mongo.cosmos.azure.com |
| Гремлин | Гремлин | privatelink.gremlin.cosmos.azure.com |
| Гремлин | SQL | privatelink.documents.azure.com |
| Таблица | Таблица | privatelink.table.cosmos.azure.com |
| Таблица | SQL | privatelink.documents.azure.com |
Получение частных IP-адресов
После создания частной конечной точки можно запросить IP-адреса. Чтобы просмотреть IP-адреса на портале Azure, выполните следующие действия.
- Найдите частную конечную точку, созданную ранее. В данном случае это cdbPrivateEndpoint3.
- Перейдите на вкладку Обзор, чтобы просмотреть параметры DNS и IP-адреса.
Для каждой частной конечной точки создается несколько IP-адресов.
- Одна для глобальной конечной точки учетной записи Azure Cosmos DB, независимой от региона.
- По одному для каждого региона, в котором развернута учетная запись Azure Cosmos DB.
Создание частной конечной точки с помощью Azure PowerShell
Выполните следующий скрипт PowerShell, чтобы создать частную конечную точку с именем MyPrivateEndpoint для существующей учетной записи Azure Cosmos DB. Замените значения переменной сведениями для вашей среды.
$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
Интеграция частной конечной точки с частной зоной DNS
После создания частной конечной точки ее можно интегрировать с частной зоной DNS с помощью следующего сценария PowerShell.
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
Получение частных IP-адресов
После подготовки частной конечной точки можно запросить IP-адреса и сопоставление полного доменного имени с помощью следующего сценария PowerShell.
$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
Выполните следующий скрипт Azure CLI, чтобы создать частную конечную точку с именем myPrivateEndpoint для существующей учетной записи Azure Cosmos DB. Замените значения переменной сведениями для вашей среды.
# 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
Интеграция частной конечной точки с частной зоной DNS
После создания частной конечной точки ее можно интегрировать с частной зоной DNS с помощью следующего сценария Azure CLI.
#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
Можно настроить Приватный канал, создав частную конечную точку в подсети виртуальной сети. Это достигается с помощью шаблона Azure Resource Manager.
Используйте следующий код для создания шаблона Resource Manager с именем PrivateEndpoint_template.json. Этот шаблон создает частную конечную точку для существующей учетной записи Azure Cosmos DB vAPI для NoSQL в существующей виртуальной сети.
@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
Создайте файл параметров для шаблона и назовите его PrivateEndpoint_parameters.json. Добавьте следующий код в файл параметров.
{
"$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, используя следующий код. Перед запуском сценария замените идентификатор подписки, имя группы ресурсов и другие значения переменных на значения вашей среды.
### 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 переменная GroupId может содержать только одно значение. Это значение является типом API учетной записи. Допустимые значения: Sql, SqlDedicated, MongoDB, Cassandra, Gremlin и Table. Некоторые типы учетных записей Azure Cosmos DB доступны через несколько API. Рассмотрим пример.
- Api для учетных записей NoSQL имеет добавленный параметр для учетных записей, настроенных для использования выделенного шлюза.
- Доступ к API для учетных записей Gremlin можно получить как из Gremlin, так и с помощью API для учетных записей NoSQL.
- Доступ к учетным записям API для таблиц можно получить как в таблице, так и в API для учетных записей NoSQL.
Для этих учетных записей необходимо создать одну частную конечную точку для каждого типа API. Если вы создаете частную конечную точку для SqlDedicated, вам нужно будет добавить вторую конечную точку только если вы хотите также подключиться к вашей учетной записи с помощью стандартного шлюза. Соответствующий тип API указывается в массиве GroupId.
После успешного развертывания шаблона должны отобразиться выходные данные, аналогичные приведенным ниже. Если частные конечные точки настроены правильно, параметр provisioningState должен иметь значение Succeeded.
После развертывания шаблона частные IP-адреса резервируются в подсети. Правило брандмауэра учетной записи Azure Cosmos DB настроено для приема подключений только из частной конечной точки.
Интеграция частной конечной точки с частной зоной DNS
Используйте следующий код для создания шаблона Resource Manager с именем PrivateZone_template.json. Этот шаблон создает частную зону DNS для существующей учетной записи API Azure Cosmos DB для NoSQL в существующей виртуальной сети.
{
"$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')]"
}
}
}
]
}
Создайте для шаблона следующие два файла параметров. Создайте PrivateZone_parameters.json со следующим кодом:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"privateZoneName": {
"value": ""
},
"VNetId": {
"value": ""
}
}
}
Используйте следующий код для создания шаблона Resource Manager с именем PrivateZoneGroup_template.json. Этот шаблон создает частную группу зон DNS для существующей учетной записи API Azure Cosmos DB для NoSQL в существующей виртуальной сети.
{
"$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'))]"
}
}
]
}
}
]
}
Создайте для шаблона следующие два файла параметров. Создайте PrivateZoneGroup_parameters.json со следующим кодом:
{
"$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, используя следующий код. Перед запуском сценария замените идентификатор подписки, имя группы ресурсов и другие значения переменных на значения вашей среды.
### 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
Настройка пользовательской службы DNS
Следует использовать частную зону DNS в подсети, где вы создали частную конечную точку. Настройте конечные точки таким образом, чтобы каждый частный IP-адрес был сопоставлен с записью DNS. См. свойство fqdns в ответе, показанном ранее.
При создании частной конечной точки ее можно интегрировать с частной зоной DNS в Azure. Если вместо этого вы решили использовать пользовательскую зону DNS, необходимо настроить ее, чтобы добавить записи DNS для всех частных IP-адресов, зарезервированных для частной конечной точки.
Important
Это разрешение DNS-запросов, которое определяет, проходят ли эти запросы через частные конечные точки или принимают стандартный общедоступный маршрут. Убедитесь, что локальная DNS корректно ссылается на частный IP-адрес, сопоставленный с частной конечной точкой.
Использование Приватного канала совместно с правилами брандмауэра
При использовании Приватного канала совместно с правилами брандмауэра возможны следующие ситуации и результаты.
Если правила брандмауэра не настроены, то по умолчанию весь трафик может получить доступ к учетной записи Azure Cosmos DB.
Если вы настраиваете общедоступный трафик или конечную точку службы и создаете частные конечные точки, то для разных типов входящего трафика применяется соответствующий тип правила брандмауэра. Если частная конечная точка настроена в подсети, где также настроена конечная точка службы:
- Трафик к учетной записи базы данных, сопоставленной частной конечной точкой, направляется через частную конечную точку.
- Трафик к другим учетным записям базы данных из подсети направляется через конечную точку службы.
Если вы не настраиваете общедоступный трафик или конечную точку службы и создаете частные конечные точки, учетная запись Azure Cosmos DB доступна только через частные конечные точки. Если вы не настраиваете общедоступный трафик или конечную точку службы, после того как все утвержденные частные конечные точки отклоняются или удаляются, учетная запись открыта для всей сети, если
PublicNetworkAccessне задано значение "Отключено".
Блокировка доступа из общедоступной сети во время создания учетной записи
Как описано в предыдущем разделе, и если не заданы определенные правила брандмауэра, добавление частной конечной точки делает учетную запись Azure Cosmos DB доступной только через частные конечные точки. Это означает, что учетная запись Azure Cosmos DB может быть доступна из публичного трафика после ее создания и до добавления частной конечной точки. Чтобы убедиться, что доступ к общедоступной сети отключен даже до создания частных конечных точек, можно задать publicNetworkAccess флаг "Отключено " во время создания учетной записи. Этот флаг имеет приоритет над любым правилом IP-адресов или виртуальной сети. Весь общедоступный и виртуальный сетевой трафик блокируется при отключении флага, даже если исходный IP-адрес или виртуальная сеть разрешены в конфигурации брандмауэра.
Пример использования этого флага см. в шаблоне создания учетной записи Azure Cosmos DB с частной конечной точкой.
Добавление частных конечных точек в существующую учетную запись Azure Cosmos DB без простоя
По умолчанию добавление частной конечной точки в существующую учетную запись приводит к короткому простою приблизительно пять минут. Выполните следующие инструкции, чтобы избежать простоя.
- Добавьте правила IP или виртуальной сети в конфигурацию брандмауэра, чтобы в явной форме разрешить подключения клиентов.
- Подождите 10 минут и убедитесь, что обновление конфигурации выполнено.
- Настройте новую частную конечную точку.
- Удалите правила брандмауэра, заданные на шаге 1.
Замечание
Если у вас есть приложения, использующие SDK для Azure Cosmos DB, во время обновления настроек могут возникнуть временные тайм-ауты. Убедитесь, что приложение предназначено для обеспечения устойчивости к временным сбоям подключения и иметь логику повторных попыток в случае необходимости.
Диапазон портов при использовании режима прямого подключения
При использовании Приватный канал с учетной записью Azure Cosmos DB через подключение в прямом режиме необходимо убедиться в открытости полного диапазона TCP-портов (0 – 65535).
Обновление частной конечной точки при добавлении или удалении региона
Существует три региона для развертываний учетных записей Azure Cosmos DB: западная часть США, центральная часть США и Западная Европа. При создании частной конечной точки для вашей учетной записи в подсети зарезервированы четыре частных IP-адреса. Существует один IP-адрес для каждого из трех регионов, и существует один IP-адрес для глобальной конечной точки, не зависящая от региона. Позже вы можете добавить новый регион в учетную запись Azure Cosmos DB. Частная зона DNS обновляется следующим образом.
Если используется группа частных зон DNS
- Если вы используете частную группу зон DNS, частная зона DNS автоматически обновляется при обновлении частной конечной точки. В предыдущем примере после добавления нового региона частная зона DNS обновилась автоматически.
Если частная группа зон DNS не используется:
Если вы не используете частную группу зон DNS, добавление или удаление регионов в учетную запись Azure Cosmos DB требует добавления или удаления записей DNS для этой учетной записи. После добавления или удаления регионов можно обновить частную зону DNS подсети, чтобы отразить добавленные или удаленные записи DNS и соответствующие им частные IP-адреса.
В предыдущем примере после добавления нового региона необходимо добавить соответствующую запись DNS в частную зону DNS или пользовательскую службу DNS. Аналогичные действия необходимы и при удалении региона. После удаления региона необходимо удалить соответствующую запись DNS из вашей частной зоны DNS или пользовательской службы DNS.
Текущие ограничения
Следующие ограничения применяются при использовании Приватный канал с учетной записью Azure Cosmos DB:
У вас не может быть более 200 частных конечных точек в одной учетной записи Azure Cosmos DB.
При использовании Приватный канал с учетной записью Azure Cosmos DB в режиме прямого подключения, можно использовать только протокол TCP. Протокол HTTP в настоящее время не поддерживается.
При использовании API Azure Cosmos DB для учетной записи MongoDB частная конечная точка поддерживается для учетных записей на сервере версии 3.6 или выше (то есть учетные записи, использующие конечную точку в формате
*.mongo.cosmos.azure.com). Личная ссылка не поддерживается для учетных записей на сервере версии 3.2 (то есть учетных записей, использующих интерфейс в формате*.documents.azure.com). Чтобы использовать Приватный канал, необходимо перенести старые учетные записи на новую версию.При использовании API Azure Cosmos DB для учетной записи MongoDB, которая имеет Личное соединение, средства и библиотеки должны поддерживать идентификацию имени службы (SNI) или передавать параметр
appNameиз строки подключения для корректного подключения. Некоторые старые инструменты и библиотеки могут быть несовместимы с функцией Приватный канал.Администратор сети должен иметь по крайней мере
Microsoft.DocumentDB/databaseAccounts/PrivateEndpointConnectionsApproval/actionразрешение на уровне учетной записи Azure Cosmos DB, чтобы автоматически создавать утвержденные частные конечные точки.В настоящее время утвердить отклоненное подключение частной конечной точки нельзя. Вместо этого повторно создайте частную конечную точку, чтобы возобновить частное подключение. Служба приватного канала Azure Cosmos DB автоматически утверждает повторно созданную частную конечную точку.
Ограничения на интеграцию частной зоны DNS
Если вы не используете частную группу зон DNS, записи DNS в частной зоне DNS не удаляются автоматически при удалении частной конечной точки или удалении региона из учетной записи Azure Cosmos DB. Необходимо вручную удалить записи DNS перед:
- добавлением новой частной конечной точки, связанной с этой частной зоной DNS;
- Добавление нового региона в учетную запись базы данных, к которой частные конечные точки подключаются через эту частную зону DNS.
Если не очистить записи DNS, могут возникнуть непредвиденные проблемы с плоскостью данных. Эти проблемы включают сбои данных в регионах, добавленных после удаления частной конечной точки или удаления региона.