Настройка конечных точек общедоступной и частной сети Синхронизация файлов Azure
Мақала
Службы "Файлы Azure" и "Синхронизация файлов Azure" предоставляют два основных типа конечных точек для доступа к общим папкам Azure:
общедоступные конечные точки, у которых есть общедоступный IP-адрес и к которым можно обращаться из любой точки мира;
частные конечные точки, которые существуют только в виртуальной сети и имеют частный IP-адрес в пределах адресного пространства этой виртуальной сети.
Для Файлы Azure и Синхронизация файлов Azure объекты управления Azure (учетная запись хранения и служба синхронизации хранилища) управляют как общедоступными, так и частными конечными точками. Учетная запись хранения — это конструкция управления, представляющая общий пул хранилища, в котором можно развернуть несколько общих папок, а также другие ресурсы хранилища, такие как большие двоичные объекты или очереди. Служба синхронизации хранилища — это управляющая конструкция, представляющая зарегистрированные серверы, которые являются файловыми серверами Windows с установленными отношениями доверия с Синхронизацией файлов Azure и группами синхронизации, определяющими топологию отношения синхронизации.
В этой статье обсуждается настройка конечных точек сети для Файлов Azure и Синхронизации файлов Azure. Дополнительные сведения о настройке конечных точек сети для прямого доступа к общим папкам Azure вместо локального кэширования с использованием Синхронизации файлов Azure см. в статье Настройка сетевых конечных точек Файлов Azure.
Вы уже создали общую папку Azure в учетной записи хранения, к которой вы хотите подключиться из локальной среды. Чтобы узнать, как создать общую папку Azure, ознакомьтесь с этой статьей.
Чтобы разрешить трафик домена для указанных ниже конечных точек, воспользуйтесь инструкциями в этой статье:
При создании частной конечной точки для ресурса Azure развертываются следующие ресурсы:
Частная конечная точка — это ресурс Azure, представляющий частную конечную точку для учетной записи хранения или службы синхронизации хранилища. Подумайте об этом как о ресурсе, который подключает ресурс Azure и сетевой интерфейс.
Сетевой интерфейс — ресурс для поддержки частного IP-адреса в указанной виртуальной сети или подсети. Это тот же ресурс, который развертывается при развертывании виртуальной машины, однако вместо назначения виртуальной машине он принадлежит частной конечной точке.
Частная зона DNS — если вы никогда не развертывали частную конечную точку для этой виртуальной сети, для нее будет развернута новая частная зона DNS. В этой зоне DNS также будет создана запись DNS типа A для ресурса Azure. Если вы уже развертывали частную конечную точку в этой виртуальной сети, новая запись типа A для ресурса Azure будет добавлена в существующую зону DNS. Развертывание зоны DNS не обязательно, но настоятельно рекомендуется для упрощения необходимого управления DNS.
Примечание.
В этой статье используются DNS-суффиксы для общедоступных регионов Azure: core.windows.net для учетных записей хранения и afs.azure.net для служб синхронизации хранилища. Это также относится к облакам Azure Sovereign, таким как облако Azure для государственных организаций США, просто замените соответствующие суффиксы для вашей среды.
Создание частной конечной точки для учетной записи хранения
Перейдите к учетной записи хранения, для которой вы хотите создать частную конечную точку. Для создания новой частной конечной точки в содержании учетной записи хранения необходимо выбрать Сеть, Подключения к частной конечной точке, а затем + Частная конечная точка.
В мастере нужно будет заполнить несколько страниц.
В колонке Основные сведения выберите нужную подписку, группу ресурсов, имя, имя сетевого интерфейса и регион для частной конечной точки. Они могут быть любыми, но не должны совпадать с учетной записью хранения. Тем не менее необходимо создать частную конечную точку в том же регионе, что и виртуальная сеть, в которой вы хотите создать частную конечную точку. Затем щелкните Далее: Ресурс.
В колонке Ресурс выберите для целевого подресурса файл. Затем выберите Далее: Виртуальная сеть.
В колонке Виртуальная сеть можно выбрать определенную виртуальную сеть и подсеть, в которую нужно добавить частную конечную точку. Выберите динамическое или статическое выделение IP-адреса для новой частной конечной точки. Если выбрано статическое выделение, потребуется также указать имя и частный IP-адрес. При желании можно указать группу безопасности приложений. По завершении выберите Далее: DNS.
Колонка DNS содержит сведения об интеграции частной конечной точки с частной зоной DNS. Убедитесь в правильности подписки и группы ресурсов, затем щелкните Далее: теги.
При необходимости можно применить теги для классификации ресурсов (например, назначить тег с именем Среда и значением Тест всем ресурсам тестирования). При необходимости введите пары имени/значения, а затем нажмите кнопку Далее: Проверить и создать.
Щелкните Просмотр и создание, чтобы создать частную конечную точку.
Если у вас есть виртуальная машина внутри виртуальной сети или вы настроили перенаправление DNS, как описано в разделе "Настройка перенаправления DNS для Файлы Azure", можно проверить правильность настройки частной конечной точки, выполнив следующие команды из PowerShell, командной строки или терминала (работает для Windows, Linux или macOS). Замените <storage-account-name> реальным именем учетной записи хранения.
Если все работает успешно, вы увидите следующие выходные данные, где 192.168.0.5 находится частный IP-адрес частной конечной точки в виртуальной сети (выходные данные, показанные для Windows):
Чтобы создать частную конечную точку для учетной записи хранения, сначала нужно получить ссылку на учетную запись хранения и подсеть виртуальной сети, в которую вы хотите добавить частную конечную точку. Замените <storage-account-resource-group-name>, <storage-account-name>, <vnet-resource-group-name>, <vnet-name> и <vnet-subnet-name> ниже:
$storageAccountResourceGroupName = "<storage-account-resource-group-name>"
$storageAccountName = "<storage-account-name>"
$virtualNetworkResourceGroupName = "<vnet-resource-group-name>"
$virtualNetworkName = "<vnet-name>"
$subnetName = "<vnet-subnet-name>"
# Get storage account reference, and throw error if it doesn't exist
$storageAccount = Get-AzStorageAccount `
-ResourceGroupName $storageAccountResourceGroupName `
-Name $storageAccountName `
-ErrorAction SilentlyContinue
if ($null -eq $storageAccount) {
$errorMessage = "Storage account $storageAccountName not found "
$errorMessage += "in resource group $storageAccountResourceGroupName."
Write-Error -Message $errorMessage -ErrorAction Stop
}
# Get virtual network reference, and throw error if it doesn't exist
$virtualNetwork = Get-AzVirtualNetwork `
-ResourceGroupName $virtualNetworkResourceGroupName `
-Name $virtualNetworkName `
-ErrorAction SilentlyContinue
if ($null -eq $virtualNetwork) {
$errorMessage = "Virtual network $virtualNetworkName not found "
$errorMessage += "in resource group $virtualNetworkResourceGroupName."
Write-Error -Message $errorMessage -ErrorAction Stop
}
# Get reference to virtual network subnet, and throw error if it doesn't exist
$subnet = $virtualNetwork | `
Select-Object -ExpandProperty Subnets | `
Where-Object { $_.Name -eq $subnetName }
if ($null -eq $subnet) {
Write-Error `
-Message "Subnet $subnetName not found in virtual network $virtualNetworkName." `
-ErrorAction Stop
}
Чтобы создать частную конечную точку, необходимо создать подключение службы Приватного канала к учетной записи хранения. Подключение службы Приватного канала передается как входные данные для создания частной конечной точки.
# Disable private endpoint network policies
$subnet.PrivateEndpointNetworkPolicies = "Disabled"
$virtualNetwork = $virtualNetwork | `
Set-AzVirtualNetwork -ErrorAction Stop
# Create a private link service connection to the storage account.
$privateEndpointConnection = New-AzPrivateLinkServiceConnection `
-Name "$storageAccountName-Connection" `
-PrivateLinkServiceId $storageAccount.Id `
-GroupId "file" `
-ErrorAction Stop
# Create a new private endpoint.
$privateEndpoint = New-AzPrivateEndpoint `
-ResourceGroupName $storageAccountResourceGroupName `
-Name "$storageAccountName-PrivateEndpoint" `
-Location $virtualNetwork.Location `
-Subnet $subnet `
-PrivateLinkServiceConnection $privateEndpointConnection `
-ErrorAction Stop
Создание частной зоны DNS в Azure позволяет использовать для учетной записи хранения оригинальное имя, например storageaccount.file.core.windows.net, которое будет разрешаться в частный IP-адрес в пределах виртуальной сети. Это не нужно для создания частной конечной точки, но требуется при подключении общей папки Azure с использованием субъекта-пользователя AD или REST API.
# Get the desired storage account suffix (core.windows.net for public cloud).
# This is done like this so this script will seamlessly work for non-public Azure.
$storageAccountSuffix = Get-AzContext | `
Select-Object -ExpandProperty Environment | `
Select-Object -ExpandProperty StorageEndpointSuffix
# For public cloud, this will generate the following DNS suffix:
# privatelink.file.core.windows.net.
$dnsZoneName = "privatelink.file.$storageAccountSuffix"
# Find a DNS zone matching desired name attached to this virtual network.
$dnsZone = Get-AzPrivateDnsZone | `
Where-Object { $_.Name -eq $dnsZoneName } | `
Where-Object {
$privateDnsLink = Get-AzPrivateDnsVirtualNetworkLink `
-ResourceGroupName $_.ResourceGroupName `
-ZoneName $_.Name `
-ErrorAction SilentlyContinue
$privateDnsLink.VirtualNetworkId -eq $virtualNetwork.Id
}
if ($null -eq $dnsZone) {
# No matching DNS zone attached to virtual network, so create new one.
$dnsZone = New-AzPrivateDnsZone `
-ResourceGroupName $virtualNetworkResourceGroupName `
-Name $dnsZoneName `
-ErrorAction Stop
$privateDnsLink = New-AzPrivateDnsVirtualNetworkLink `
-ResourceGroupName $virtualNetworkResourceGroupName `
-ZoneName $dnsZoneName `
-Name "$virtualNetworkName-DnsLink" `
-VirtualNetworkId $virtualNetwork.Id `
-ErrorAction Stop
}
Теперь, когда у вас есть ссылка на частную зону DNS, нужно создать запись типа A для учетной записи хранения.
Если у вас есть виртуальная машина в виртуальной сети или вы настроили перенаправление DNS, как описано в разделе "Настройка перенаправления DNS для Файлы Azure", можно проверить правильность настройки частной конечной точки с помощью следующих команд:
Если все работает успешно, вы увидите следующие выходные данные, где 192.168.0.5 находится частный IP-адрес частной конечной точки в виртуальной сети:
Name Type TTL Section NameHost
---- ---- --- ------- --------
storageaccount.file.core.windows CNAME 60 Answer storageaccount.privatelink.file.core.windows.net
.net
Name : storageaccount.privatelink.file.core.windows.net
QueryType : A
TTL : 600
Section : Answer
IP4Address : 192.168.0.5
Чтобы создать частную конечную точку для учетной записи хранения, сначала нужно получить ссылку на учетную запись хранения и подсеть виртуальной сети, в которую вы хотите добавить частную конечную точку. Замените <storage-account-resource-group-name>, <storage-account-name>, <vnet-resource-group-name>, <vnet-name> и <vnet-subnet-name> ниже:
storageAccountResourceGroupName="<storage-account-resource-group-name>"
storageAccountName="<storage-account-name>"
virtualNetworkResourceGroupName="<vnet-resource-group-name>"
virtualNetworkName="<vnet-name>"
subnetName="<vnet-subnet-name>"
# Get storage account ID
storageAccount=$(az storage account show \
--resource-group $storageAccountResourceGroupName \
--name $storageAccountName \
--query "id" | \
tr -d '"')
# Get virtual network ID
virtualNetwork=$(az network vnet show \
--resource-group $virtualNetworkResourceGroupName \
--name $virtualNetworkName \
--query "id" | \
tr -d '"')
# Get subnet ID
subnet=$(az network vnet subnet show \
--resource-group $virtualNetworkResourceGroupName \
--vnet-name $virtualNetworkName \
--name $subnetName \
--query "id" | \
tr -d '"')
Чтобы создать частную конечную точку, необходимо убедиться, что для частной конечной точки подсети отключена политика сети. Затем создайте частную конечную точку с помощью команды az network private-endpoint create.
Создание частной зоны DNS в Azure позволяет использовать для учетной записи хранения оригинальное имя, например storageaccount.file.core.windows.net, которое будет разрешаться в частный IP-адрес в пределах виртуальной сети. Это не нужно для создания частной конечной точки, но требуется при подключении общей папки Azure с использованием субъекта-пользователя AD или REST API.
# Get the desired storage account suffix (core.windows.net for public cloud).
# This is done like this so this script will seamlessly work for non-public Azure.
storageAccountSuffix=$(az cloud show \
--query "suffixes.storageEndpoint" | \
tr -d '"')
# For public cloud, this will generate the following DNS suffix:
# privatelink.file.core.windows.net.
dnsZoneName="privatelink.file.$storageAccountSuffix"
# Find a DNS zone matching desired name attached to this virtual network.
possibleDnsZones=""
possibleDnsZones=$(az network private-dns zone list \
--query "[?name == '$dnsZoneName'].id" \
--output tsv)
dnsZone=""
possibleDnsZone=""
for possibleDnsZone in $possibleDnsZones
do
possibleResourceGroupName=$(az resource show \
--ids $possibleDnsZone \
--query "resourceGroup" | \
tr -d '"')
link=$(az network private-dns link vnet list \
--resource-group $possibleResourceGroupName \
--zone-name $dnsZoneName \
--query "[?virtualNetwork.id == '$virtualNetwork'].id" \
--output tsv)
if [ -z $link ]
then
echo "1" > /dev/null
else
dnsZoneResourceGroup=$possibleResourceGroupName
dnsZone=$possibleDnsZone
break
fi
done
if [ -z $dnsZone ]
then
# No matching DNS zone attached to virtual network, so create a new one
dnsZone=$(az network private-dns zone create \
--resource-group $virtualNetworkResourceGroupName \
--name $dnsZoneName \
--query "id" | \
tr -d '"')
az network private-dns link vnet create \
--resource-group $virtualNetworkResourceGroupName \
--zone-name $dnsZoneName \
--name "$virtualNetworkName-DnsLink" \
--virtual-network $virtualNetwork \
--registration-enabled false \
--output none
dnsZoneResourceGroup=$virtualNetworkResourceGroupName
fi
Теперь, когда у вас есть ссылка на частную зону DNS, нужно создать запись типа A для учетной записи хранения.
privateEndpointNIC=$(az network private-endpoint show \
--ids $privateEndpoint \
--query "networkInterfaces[0].id" | \
tr -d '"')
privateEndpointIP=$(az network nic show \
--ids $privateEndpointNIC \
--query "ipConfigurations[0].privateIPAddress" | \
tr -d '"')
az network private-dns record-set a create \
--resource-group $dnsZoneResourceGroup \
--zone-name $dnsZoneName \
--name $storageAccountName \
--output none
az network private-dns record-set a add-record \
--resource-group $dnsZoneResourceGroup \
--zone-name $dnsZoneName \
--record-set-name $storageAccountName \
--ipv4-address $privateEndpointIP \
--output none
Если у вас есть виртуальная машина в виртуальной сети или вы настроили перенаправление DNS, как описано в разделе "Настройка перенаправления DNS для Файлы Azure", можно проверить правильность настройки частной конечной точки с помощью следующих команд:
Перейдите в Центр приватных каналов, введя Private Link (Приватный канал) в поле поиска, которое находится вверху на портале Azure. В списке содержимого Центра приватных каналов выберите Частные конечные точки, а затем нажмите кнопку + Добавить, чтобы создать новую частную конечную точку.
В мастере нужно будет заполнить несколько страниц.
В колонке Основные сведения выберите нужную группу ресурсов, имя и регион для частной конечной точки. Они могут быть любыми, но не должны каким-либо образом соответствовать службе синхронизации хранилища, хотя вы должны создать частную конечную точку в том же регионе, что и виртуальная сеть, в которой вы хотите ее создать.
В колонке Ресурс установите переключатель рядом с пунктом Подключиться к ресурсу Azure в моем каталоге. В разделе Тип ресурса выберите Microsoft.StorageSync/storageSyncServices в качестве типа.
В колонке Конфигурация можно выбрать определенную виртуальную сеть и подсеть, в которую вы хотите добавить частную конечную точку. Выберите ту же виртуальную сеть, которую использовали выше для учетной записи хранения. В колонке "Конфигурация" также содержатся сведения для создания или обновления частной зоны DNS.
Нажмите кнопку Проверить и создать, чтобы создать частную конечную точку.
Вы можете проверить правильность настройки частной конечной точки, выполнив следующие команды PowerShell.
Если все работает правильно, вы увидите следующие выходные данные, где 192.168.1.4192.168.1.5, 192.168.1.6и 192.168.1.7 являются частными IP-адресами, назначенными частной конечной точке:
Name : mysssmanagement.westus2.afs.azure.net
Type : CNAME
TTL : 60
Section : Answer
NameHost : mysssmanagement.westus2.privatelink.afs.azure.net
Name : mysssmanagement.westus2.privatelink.afs.azure.net
QueryType : A
TTL : 60
Section : Answer
IP4Address : 192.168.1.4
Name : myssssyncp.westus2.afs.azure.net
Type : CNAME
TTL : 60
Section : Answer
NameHost : myssssyncp.westus2.privatelink.afs.azure.net
Name : myssssyncp.westus2.privatelink.afs.azure.net
QueryType : A
TTL : 60
Section : Answer
IP4Address : 192.168.1.5
Name : myssssyncs.westus2.afs.azure.net
Type : CNAME
TTL : 60
Section : Answer
NameHost : myssssyncs.westus2.privatelink.afs.azure.net
Name : myssssyncs.westus2.privatelink.afs.azure.net
QueryType : A
TTL : 60
Section : Answer
IP4Address : 192.168.1.6
Name : mysssmonitoring.westus2.afs.azure.net
Type : CNAME
TTL : 60
Section : Answer
NameHost : mysssmonitoring.westus2.privatelink.afs.azure.net
Name : mysssmonitoring.westus2.privatelink.afs.azure.net
QueryType : A
TTL : 60
Section : Answer
IP4Address : 192.168.1.7
Чтобы создать частную конечную точку для службы синхронизации хранилища, сначала необходимо получить ссылку на службу синхронизации хранилища. Не забудьте заменить <storage-sync-service-resource-group> и <storage-sync-service> соответствующими значениями из своей среды. Следующие команды PowerShell предполагают, что вы уже заполняли сведения о виртуальной сети.
$storageSyncServiceResourceGroupName = "<storage-sync-service-resource-group>"
$storageSyncServiceName = "<storage-sync-service>"
$storageSyncService = Get-AzStorageSyncService `
-ResourceGroupName $storageSyncServiceResourceGroupName `
-Name $storageSyncServiceName `
-ErrorAction SilentlyContinue
if ($null -eq $storageSyncService) {
$errorMessage = "Storage Sync Service $storageSyncServiceName not found "
$errorMessage += "in resource group $storageSyncServiceResourceGroupName."
Write-Error -Message $errorMessage -ErrorAction Stop
}
Чтобы создать частную конечную точку, необходимо создать подключение службы Приватного канала к службе синхронизации хранилища. Подключение Приватного канала передается как входные данные для создания частной конечной точки.
# Disable private endpoint network policies
$subnet.PrivateEndpointNetworkPolicies = "Disabled"
$virtualNetwork = $virtualNetwork | `
Set-AzVirtualNetwork -ErrorAction Stop
# Create a private link service connection to the storage account.
$privateEndpointConnection = New-AzPrivateLinkServiceConnection `
-Name "$storageSyncServiceName-Connection" `
-PrivateLinkServiceId $storageSyncService.ResourceId `
-GroupId "Afs" `
-ErrorAction Stop
# Create a new private endpoint.
$privateEndpoint = New-AzPrivateEndpoint `
-ResourceGroupName $storageSyncServiceResourceGroupName `
-Name "$storageSyncServiceName-PrivateEndpoint" `
-Location $virtualNetwork.Location `
-Subnet $subnet `
-PrivateLinkServiceConnection $privateEndpointConnection `
-ErrorAction Stop
Создание частной зоны DNS Azure позволяет разрешать имена узлов для службы синхронизации хранилища, такие как mysssmanagement.westus2.afs.azure.net, в правильные частные IP-адреса для службы синхронизации хранилища в виртуальной сети. Хотя это необязательно с точки зрения создания частной конечной точки, это явно необходимо для агента Синхронизация файлов Azure для доступа к службе синхронизации хранилища.
# Get the desired Storage Sync Service suffix (afs.azure.net for public cloud).
# This is done like this so this script will seamlessly work for non-public Azure.
$azureEnvironment = Get-AzContext | `
Select-Object -ExpandProperty Environment | `
Select-Object -ExpandProperty Name
switch($azureEnvironment) {
"AzureCloud" {
$storageSyncSuffix = "afs.azure.net"
}
"AzureUSGovernment" {
$storageSyncSuffix = "afs.azure.us"
}
"AzureChinaCloud" {
$storageSyncSuffix = "afs.azure.cn"
}
default {
Write-Error
-Message "The Azure environment $_ is not currently supported by Azure File Sync." `
-ErrorAction Stop
}
}
# For public cloud, this will generate the following DNS suffix:
# privatelink.afs.azure.net
$dnsZoneName = "privatelink.$storageSyncSuffix"
# Find a DNS zone matching desired name attached to this virtual network.
$dnsZone = Get-AzPrivateDnsZone | `
Where-Object { $_.Name -eq $dnsZoneName } | `
Where-Object {
$privateDnsLink = Get-AzPrivateDnsVirtualNetworkLink `
-ResourceGroupName $_.ResourceGroupName `
-ZoneName $_.Name `
-ErrorAction SilentlyContinue
$privateDnsLink.VirtualNetworkId -eq $virtualNetwork.Id
}
if ($null -eq $dnsZone) {
# No matching DNS zone attached to virtual network, so create new one.
$dnsZone = New-AzPrivateDnsZone `
-ResourceGroupName $virtualNetworkResourceGroupName `
-Name $dnsZoneName `
-ErrorAction Stop
$privateDnsLink = New-AzPrivateDnsVirtualNetworkLink `
-ResourceGroupName $virtualNetworkResourceGroupName `
-ZoneName $dnsZoneName `
-Name "$virtualNetworkName-DnsLink" `
-VirtualNetworkId $virtualNetwork.Id `
-ErrorAction Stop
}
Теперь, когда у вас есть ссылка на частную зону DNS, необходимо создать запись A для службы синхронизации хранилища.
Чтобы создать частную конечную точку для службы синхронизации хранилища, сначала необходимо получить ссылку на службу синхронизации хранилища. Не забудьте заменить <storage-sync-service-resource-group> и <storage-sync-service> соответствующими значениями из своей среды. В следующих командах CLI предполагается, что вы уже заполняли сведения о виртуальной сети.
Чтобы создать частную конечную точку, необходимо убедиться, что для частной конечной точки подсети отключена политика сети. Затем создайте частную конечную точку с помощью команды az network private-endpoint create.
Создание частной зоны DNS Azure позволяет разрешать имена узлов для службы синхронизации хранилища, такие как mysssmanagement.westus2.afs.azure.net, в правильные частные IP-адреса для службы синхронизации хранилища в виртуальной сети. Хотя это необязательно с точки зрения создания частной конечной точки, это явно необходимо для агента Синхронизация файлов Azure для доступа к службе синхронизации хранилища.
# Get the desired storage account suffix (afs.azure.net for public cloud).
# This is done like this so this script will seamlessly work for non-public Azure.
azureEnvironment=$(az cloud show \
--query "name" |
tr -d '"')
storageSyncSuffix=""
if [ $azureEnvironment == "AzureCloud" ]
then
storageSyncSuffix="afs.azure.net"
elif [ $azureEnvironment == "AzureUSGovernment" ]
then
storageSyncSuffix="afs.azure.us"
else
echo "Unsupported Azure environment $azureEnvironment."
fi
# For public cloud, this will generate the following DNS suffix:
# privatelinke.afs.azure.net.
dnsZoneName="privatelink.$storageSyncSuffix"
# Find a DNS zone matching desired name attached to this virtual network.
possibleDnsZones=""
possibleDnsZones=$(az network private-dns zone list \
--query "[?name == '$dnsZoneName'].id" \
--output tsv)
dnsZone=""
possibleDnsZone=""
for possibleDnsZone in $possibleDnsZones
do
possibleResourceGroupName=$(az resource show \
--ids $possibleDnsZone \
--query "resourceGroup" | \
tr -d '"')
link=$(az network private-dns link vnet list \
--resource-group $possibleResourceGroupName \
--zone-name $dnsZoneName \
--query "[?virtualNetwork.id == '$virtualNetwork'].id" \
--output tsv)
if [ -z $link ]
then
echo "1" > /dev/null
else
dnsZoneResourceGroup=$possibleResourceGroupName
dnsZone=$possibleDnsZone
break
fi
done
if [ -z $dnsZone ]
then
# No matching DNS zone attached to virtual network, so create a new one
dnsZone=$(az network private-dns zone create \
--resource-group $virtualNetworkResourceGroupName \
--name $dnsZoneName \
--query "id" | \
tr -d '"')
az network private-dns link vnet create \
--resource-group $virtualNetworkResourceGroupName \
--zone-name $dnsZoneName \
--name "$virtualNetworkName-DnsLink" \
--virtual-network $virtualNetwork \
--registration-enabled false \
--output none
dnsZoneResourceGroup=$virtualNetworkResourceGroupName
fi
Теперь, когда у вас есть ссылка на частную зону DNS, необходимо создать запись A для службы синхронизации хранилища.
privateEndpointNIC=$(az network private-endpoint show \
--ids $privateEndpoint \
--query "networkInterfaces[0].id" | \
tr -d '"')
privateIpAddresses=$(az network nic show \
--ids $privateEndpointNIC \
--query "ipConfigurations[].privateIpAddress" \
--output tsv)
hostNames=$(az network nic show \
--ids $privateEndpointNIC \
--query "ipConfigurations[].privateLinkConnectionProperties.fqdns[]" \
--output tsv)
i=0
for privateIpAddress in $privateIpAddresses
do
j=0
targetHostName=""
for hostName in $hostNames
do
if [ $i == $j ]
then
targetHostName=$hostName
break
fi
j=$(expr $j + 1)
done
endpointName=$(echo $targetHostName | \
cut -c1-$(expr $(expr index $targetHostName ".") - 1))
az network private-dns record-set a create \
--resource-group $dnsZoneResourceGroup \
--zone-name $dnsZoneName \
--name "$endpointName.$storageSyncServiceRegion" \
--output none
az network private-dns record-set a add-record \
--resource-group $dnsZoneResourceGroup \
--zone-name $dnsZoneName \
--record-set-name "$endpointName.$storageSyncServiceRegion" \
--ipv4-address $privateIpAddress \
--output none
i=$(expr $i + 1)
done
Ограничение доступа к общедоступным конечным точкам
Вы можете ограничить доступ к общедоступным конечным точкам как учетной записи хранения, так и службы синхронизации хранилища. Ограничение доступа к общедоступной конечной точке обеспечивает дополнительную безопасность, гарантируя, что сетевые пакеты принимаются только из утвержденных расположений.
Ограничение доступа к общедоступной конечной точке учетной записи хранения
Вы можете ограничить доступ к общедоступной конечной точке, настроив параметры брандмауэра учетной записи хранения. Как правило, большинство политик брандмауэра учетной записи хранения разрешают сетевой доступ из одной или нескольких виртуальных сетей. Вы можете использовать два подхода к ограничению доступа к учетной записи хранения из виртуальных сетей.
Ограничьте доступ к общедоступной конечной точке одной или несколькими виртуальными сетями. Это достигается за счет возможности виртуальной сети под названием конечная точка службы. При ограничении трафика на учетную запись хранения через конечную точку службы вы по-прежнему обращаетесь к учетной записи хранения через общедоступный IP-адрес.
Примечание.
Чтобы разрешить службам Azure в списке доверенных служб доступ к этому исключению учетной записи хранения, необходимо выбрать учетную запись хранения, чтобы разрешить доверенным первым лицам службы Майкрософт, например Синхронизация файлов Azure для доступа к учетной записи хранения. Дополнительные сведения см. в статье "Предоставление доступа к доверенным службам Azure".
Предоставление доступа к доверенным службам Azure и отключение доступа к общедоступной конечной точке учетной записи хранения
Если доступ к общедоступной конечной точке отключен, к учетной записи хранения можно обращаться только через частные конечные точки. Даже допустимые запросы к общедоступной конечной точке учетной записи хранения будут отклоняться.
Перейдите к учетной записи хранения, для которой вы хотите запретить доступ к общедоступной конечной точке. В содержании для учетной записи хранения выберите Сеть.
В верхней части страницы выберите переключатель "Включено" из выбранных виртуальных сетей и IP-адресов. Это действие отобразит ряд скрытых параметров для управления ограничениями общедоступной конечной точки. Выберите "Разрешить службам Azure" в списке доверенных служб доступ к этой учетной записи хранения, чтобы разрешить доверенным лицам службы Майкрософт, например Синхронизация файлов Azure для доступа к учетной записи хранения.
Следующая команда PowerShell блокирует весь трафик к общедоступной конечной точке учетной записи хранения. Обратите внимание, что в этой команде параметр -Bypass имеет значение AzureServices. Это значение разрешает доступ к учетной записи хранения через общедоступную конечную точку для доверенных служб корпорации Майкрософт, таких как Синхронизация файлов Azure.
# This assumes $storageAccount is still defined from the beginning of this of this guide.
$storageAccount | Update-AzStorageAccountNetworkRuleSet `
-DefaultAction Deny `
-Bypass AzureServices `
-WarningAction SilentlyContinue `
-ErrorAction Stop | `
Out-Null
Следующая команда CLI блокирует весь трафик к общедоступной конечной точке учетной записи хранения. Обратите внимание, что в этой команде параметр -bypass имеет значение AzureServices. Это значение разрешает доступ к учетной записи хранения через общедоступную конечную точку для доверенных служб корпорации Майкрософт, таких как Синхронизация файлов Azure.
# This assumes $storageAccountResourceGroupName and $storageAccountName
# are still defined from the beginning of this guide.
az storage account update \
--resource-group $storageAccountResourceGroupName \
--name $storageAccountName \
--bypass "AzureServices" \
--default-action "Deny" \
--output none
Предоставление доступа к доверенным службам Azure и ограничение доступа к общедоступной конечной точке учетной записи хранения определенным виртуальным сетям
При ограничении учетной записи хранения определенным виртуальным сетям вы разрешаете запросы к общедоступной конечной точке из указанных виртуальных сетей. Это достигается за счет возможности виртуальной сети под названием конечная точка службы. Ее можно использовать с частными конечными точками или без них.
Перейдите к учетной записи хранения, для которой вы хотите разрешить доступ к общедоступной конечной точке только из нескольких виртуальных сетей. В содержании для учетной записи хранения выберите Сеть.
В верхней части страницы выберите переключатель "Включено" из выбранных виртуальных сетей и IP-адресов. Это действие отобразит ряд скрытых параметров для управления ограничениями общедоступной конечной точки. Нажмите кнопку +Добавить существующую виртуальную сеть, чтобы выбрать определенную виртуальную сеть , доступ к ней через общедоступную конечную точку. Выберите виртуальную сеть и подсеть для этой виртуальной сети, а затем нажмите кнопку "Включить".
Выберите "Разрешить службам Azure" в списке доверенных служб доступ к этой учетной записи хранения, чтобы разрешить доверенным лицам службы Майкрософт, например Синхронизация файлов Azure для доступа к учетной записи хранения.
Чтобы разрешить доступ к общедоступной конечной точке учетной записи хранения только из определенных виртуальных сетей через конечные точки службы, сначала необходимо собрать информацию об учетной записи хранения и виртуальной сети. Для сбора этой информации заполните параметры <storage-account-resource-group>, <storage-account-name>, <vnet-resource-group-name>, <vnet-name> и <subnet-name>.
Чтобы разрешить трафик из виртуальной сети к общедоступной конечной точке учетной записи хранения в структуре сети Azure, подсеть этой виртуальной сети должна предоставлять конечную точку службы Microsoft.Storage. Следующие команды PowerShell добавят Microsoft.Storage конечную точку службы в подсеть, если она еще не существует.
Последним шагом для ограничения трафика к учетной записи хранения будет создание правила сети и добавление его в набор правил сети для этой учетной записи хранения.
Чтобы разрешить доступ к общедоступной конечной точке учетной записи хранения только из определенных виртуальных сетей через конечные точки службы, сначала необходимо собрать информацию об учетной записи хранения и виртуальной сети. Для сбора этой информации заполните параметры <storage-account-resource-group>, <storage-account-name>, <vnet-resource-group-name>, <vnet-name> и <subnet-name>.
Чтобы разрешить трафик из виртуальной сети к общедоступной конечной точке учетной записи хранения в структуре сети Azure, подсеть этой виртуальной сети должна предоставлять конечную точку службы Microsoft.Storage. Следующие команды CLI добавляют Microsoft.Storage конечную точку службы в подсеть, если она еще не существует.
serviceEndpoints=$(az network vnet subnet show \
--resource-group $restrictToVirtualNetworkResourceGroupName \
--vnet-name $restrictToVirtualNetworkName \
--name $subnetName \
--query "serviceEndpoints[].service" \
--output tsv)
foundStorageServiceEndpoint=false
for serviceEndpoint in $serviceEndpoints
do
if [ $serviceEndpoint = "Microsoft.Storage" ]
then
foundStorageServiceEndpoint=true
fi
done
if [ $foundStorageServiceEndpoint = false ]
then
serviceEndpointList=""
for serviceEndpoint in $serviceEndpoints
do
serviceEndpointList+=$serviceEndpoint
serviceEndpointList+=" "
done
serviceEndpointList+="Microsoft.Storage"
az network vnet subnet update \
--ids $subnet \
--service-endpoints $serviceEndpointList \
--output none
fi
Последним шагом для ограничения трафика к учетной записи хранения будет создание правила сети и добавление его в набор правил сети для этой учетной записи хранения.
Отключение доступа к общедоступной конечной точке службы синхронизации хранилища
Синхронизация файлов Azure позволяет ограничить доступ только к определенным виртуальным сетям через частные конечные точки; Синхронизация файлов Azure не поддерживает конечные точки службы для ограничения доступа к общедоступной конечной точке определенным виртуальным сетям. Это означает, что два состояния общедоступной конечной точки службы синхронизации хранилища включены и отключены.
Внимание
Перед отключением доступа к общедоступной конечной точке необходимо создать частную конечную точку. Если общедоступная конечная точка отключена и не настроена частная конечная точка, синхронизация не может работать.
Перейдите в службу синхронизации хранилища и выберите "Параметры сети" в области навигации>слева.
В разделе "Разрешить доступ" выберите только частные конечные точки.
Выберите частную конечную точку из списка подключений к частной конечной точке.
Чтобы отключить доступ к общедоступной конечной точке службы синхронизации хранилища, задайте incomingTrafficPolicy для свойства службы синхронизации хранилища значение AllowVirtualNetworksOnly. Если вы хотите включить доступ к общедоступной конечной точке службы синхронизации хранилища, задайте incomingTrafficPolicy вместо AllowAllTraffic этого значение. Не забудьте заменить <storage-sync-service-resource-group> и <storage-sync-service> с собственными значениями.
Azure CLI не поддерживает настройку incomingTrafficPolicy свойства в службе синхронизации хранилища. Чтобы получить инструкции о том, как отключить общедоступную конечную точку службы синхронизации хранилища, откройте вкладку Azure PowerShell.
Политика Azure
Политика Azure помогает применять стандарты организации и оценивать соблюдение этих стандартов в нужном масштабе. Файлы Azure и Синхронизация файлов Azure предоставляют несколько полезных сетевых политик аудита и исправления, которые помогают отслеживать и автоматизировать развертывание.
Политики выполняют аудит среды и предупреждают пользователя, если поведение учетных записей хранения или служб синхронизации хранилища отклоняется от заданного. Например, если общедоступная конечная точка включена, когда для политики настроено отключение общедоступных конечных точек. Изменение и развертывание политик выполняет дальнейший шаг и упреждающее изменение ресурса (например, службы синхронизации хранилища) или развертывание ресурсов (например, частных конечных точек) для согласования с политиками.
Для Файлов Azure и Синхронизации файлов Azure доступны следующие предварительно определенные политики:
Синхронизация файлов Azure должна использовать приватный канал
Изменить
Служба синхронизации файлов Azure
Отключает общедоступную конечную точку службы синхронизации хранилища.
Изменение — отключение доступа к общедоступной сети в Синхронизации файлов Azure
Развернуть
Служба синхронизации файлов Azure
Развертывает частную конечную точку для службы синхронизации хранилища.
Настройка частных конечных точек для Синхронизации файлов Azure
Развернуть
Служба синхронизации файлов Azure
Развертывает запись A в зоне DNS privatelink.afs.azure.net.
Настройка использования частных зон DNS для Синхронизации файлов Azure
Настройка политики развертывания частной конечной точки
Чтобы настроить политику развертывания частной конечной точки, перейдите на портал Azure и выполните поиск по запросу Политика. Центр политики Azure должен быть первым результатом. Перейдите в раздел Разработка>Определения в оглавлении центра политики. В отобразившейся области Определения содержатся предварительно определенные политики для всех служб Azure. Чтобы найти конкретную политику, выберите категорию Хранилище в фильтре категорий или выполните поиск по запросу Настройка Синхронизации файлов Azure с помощью частных конечных точек. Нажмите значок ... и выберите Назначить, чтобы создать новую политику из определения.
В колонке Основные сведения мастера Назначить политику можно задать список исключений для областей, ресурсов или групп ресурсов, а также дать политике понятное имя, отличающее ее. Чтобы политика работала, не обязательно вносить эти изменения. Но при необходимости их можно ввести. Нажмите кнопку Далее, чтобы перейти на страницу Параметры.
В колонке Параметры щелкните значок ... рядом с раскрывающимся списком privateEndpointSubnetId, чтобы выбрать виртуальную сеть и подсеть, в которых следует развернуты частные конечные точки для ресурсов службы синхронизации хранилища. Мастеру может потребоваться несколько секунд для загрузки доступных в подписке виртуальных сетей. Выберите подходящую виртуальную сеть или подсеть для своей среды и нажмите кнопку Выбрать. Нажмите кнопку Далее, чтобы перейти в колонку Исправление.
Чтобы развернуть частную конечную точку при обнаружении службы синхронизации хранилища без частной конечной точки, необходимо выбрать параметр Создание задачи исправления на странице Исправление. Наконец, выберите Проверка и создание, чтобы проверить назначение политики, и нажмите кнопку Создать, чтобы создать его.
Результирующее назначение политики будет выполняться периодически и может не выполняться сразу после создания.