Файлы Azure предоставляют два основных типа конечных точек для доступа к общим папкам Azure:
Общедоступные и частные конечные точки размещаются в учетной записи хранения Azure. Учетная запись хранения — это конструкция управления, представляющая собой общий пул носителей, который можно использовать для развертывания нескольких общих папок и других ресурсов хранения, например контейнеров больших двоичных объектов или очередей.
В этой статье показано, как настроить конечные точки учетной записи хранения для получения доступа к общей папке Azure напрямую. Большая часть этой статьи также относится к тому, как Синхронизация файлов Azure взаимодействует с общедоступными и частными конечными точками для учетной записи хранения. Дополнительные сведения о сетевых рекомендациях по Синхронизация файлов Azure см. в настройке параметров прокси-сервера и брандмауэра Синхронизация файлов Azure.
Вы можете настроить конечные точки, чтобы ограничить сетевой доступ к учетной записи хранения. Вы можете использовать два подхода к ограничению доступа к учетной записи хранения из виртуальных сетей.
При создании частной конечной точки для учетной записи хранения развертываются следующие ресурсы Azure:
Перейдите к учетной записи хранения, для которой вы хотите создать частную конечную точку. Для создания новой частной конечной точки в содержании учетной записи хранения необходимо выбрать Сеть, Подключения к частной конечной точке, а затем + Частная конечная точка.
В мастере нужно будет заполнить несколько страниц.
В колонке Основные сведения выберите нужную подписку, группу ресурсов, имя, имя сетевого интерфейса и регион для частной конечной точки. Они могут быть любыми, но не должны совпадать с учетной записью хранения. Тем не менее необходимо создать частную конечную точку в том же регионе, что и виртуальная сеть, в которой вы хотите создать частную конечную точку. Затем щелкните Далее: Ресурс.
В колонке Ресурс выберите для целевого подресурса файл. Затем выберите Далее: Виртуальная сеть.
В колонке Виртуальная сеть можно выбрать определенную виртуальную сеть и подсеть, в которую нужно добавить частную конечную точку. Выберите динамическое или статическое выделение IP-адреса для новой частной конечной точки. Если выбрано статическое выделение, потребуется также указать имя и частный IP-адрес. При желании можно указать группу безопасности приложений. По завершении выберите Далее: DNS.
Колонка DNS содержит сведения об интеграции частной конечной точки с частной зоной DNS. Убедитесь в правильности подписки и группы ресурсов, затем щелкните Далее: теги.
При необходимости можно применить теги для классификации ресурсов (например, назначить тег с именем Среда и значением Тест всем ресурсам тестирования). При необходимости введите пары имени/значения, а затем нажмите кнопку Далее: Проверить и создать.
Щелкните Просмотр и создание, чтобы создать частную конечную точку.
Чтобы создать частную конечную точку для учетной записи хранения, сначала нужно получить ссылку на учетную запись хранения и подсеть виртуальной сети, в которую вы хотите добавить частную конечную точку. Замените <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 для учетной записи хранения.
$privateEndpointIP = $privateEndpoint | `
Select-Object -ExpandProperty NetworkInterfaces | `
Select-Object @{
Name = "NetworkInterfaces";
Expression = { Get-AzNetworkInterface -ResourceId $_.Id }
} | `
Select-Object -ExpandProperty NetworkInterfaces | `
Select-Object -ExpandProperty IpConfigurations | `
Select-Object -ExpandProperty PrivateIpAddress
$privateDnsRecordConfig = New-AzPrivateDnsRecordConfig `
-IPv4Address $privateEndpointIP
New-AzPrivateDnsRecordSet `
-ResourceGroupName $virtualNetworkResourceGroupName `
-Name $storageAccountName `
-RecordType A `
-ZoneName $dnsZoneName `
-Ttl 600 `
-PrivateDnsRecords $privateDnsRecordConfig `
-ErrorAction Stop | `
Out-Null
Чтобы создать частную конечную точку для учетной записи хранения, сначала нужно получить ссылку на учетную запись хранения и подсеть виртуальной сети, в которую вы хотите добавить частную конечную точку. Замените <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
.
# Disable private endpoint network policies
az network vnet subnet update \
--ids $subnet \
--disable-private-endpoint-network-policies \
--output none
# Get virtual network location
region=$(az network vnet show \
--ids $virtualNetwork \
--query "location" | \
tr -d '"')
# Create a private endpoint
privateEndpoint=$(az network private-endpoint create \
--resource-group $storageAccountResourceGroupName \
--name "$storageAccountName-PrivateEndpoint" \
--location $region \
--subnet $subnet \
--private-connection-resource-id $storageAccount \
--group-id "file" \
--connection-name "$storageAccountName-Connection" \
--query "id" | \
tr -d '"')
Создание частной зоны 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", можно проверить правильность настройки частной конечной точки. Выполните следующие команды из PowerShell, командной строки или терминала (работает для Windows, Linux или macOS). Замените <storage-account-name>
реальным именем учетной записи хранения.
nslookup <storage-account-name>.file.core.windows.net
В случае успешного выполнения вы увидите следующие выходные данные, где 192.168.0.5
находится частный IP-адрес частной конечной точки в виртуальной сети (выходные данные, показанные для Windows):
Server: UnKnown
Address: 10.2.4.4
Non-authoritative answer:
Name: storageaccount.privatelink.file.core.windows.net
Address: 192.168.0.5
Aliases: storageaccount.file.core.windows.net
Если у вас есть виртуальная машина внутри виртуальной сети или вы настроили перенаправление DNS, как описано в разделе "Настройка перенаправления DNS для Файлы Azure", можно проверить правильность настройки частной конечной точки, выполнив следующие команды:
$storageAccountHostName = [System.Uri]::new($storageAccount.PrimaryEndpoints.file) | `
Select-Object -ExpandProperty Host
Resolve-DnsName -Name $storageAccountHostName
В случае успешного выполнения вы увидите следующие выходные данные, где 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
Если у вас есть виртуальная машина внутри виртуальной сети или вы настроили перенаправление DNS, как описано в разделе "Настройка перенаправления DNS для Файлы Azure", можно проверить правильность настройки частной конечной точки, выполнив следующие команды:
httpEndpoint=$(az storage account show \
--resource-group $storageAccountResourceGroupName \
--name $storageAccountName \
--query "primaryEndpoints.file" | \
tr -d '"')
hostName=$(echo $httpEndpoint | cut -c7-$(expr length $httpEndpoint) | tr -d "/")
nslookup $hostName
Если все успешно, вы увидите следующие выходные данные, где 192.168.0.5
находится частный IP-адрес частной конечной точки в виртуальной сети. Вы по-прежнему должны использовать storageaccount.file.core.windows.net
для подключения общей папки вместо privatelink
пути.
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
storageaccount.file.core.windows.net canonical name = storageaccount.privatelink.file.core.windows.net.
Name: storageaccount.privatelink.file.core.windows.net
Address: 192.168.0.5
Для ограничения доступа к общедоступной конечной точке сначала необходимо отключить общий доступ к ней. Отключение доступа к общедоступной конечной точке не влияет на частные конечные точки. После отключения общедоступной конечной точки можно выбрать определенные сети или IP-адреса, которые могут продолжить доступ к нему. Как правило, большинство политик брандмауэра учетной записи хранения ограничивают сетевой доступ к одной или нескольким виртуальным сетям.
Если доступ к общедоступной конечной точке отключен, к учетной записи хранения можно обращаться только через частные конечные точки. В противном случае допустимые запросы к общедоступной конечной точке учетной записи хранения будут отклонены, если они не относятся к специально разрешенному источнику.
Перейдите к учетной записи хранения, для которой вы хотите запретить доступ к общедоступной конечной точке. В содержании для учетной записи хранения выберите Сеть.
В верхней части страницы выберите переключатель "Включено" из выбранных виртуальных сетей и 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
При ограничении учетной записи хранения определенным виртуальным сетям вы разрешаете запросы к общедоступной конечной точке из указанных виртуальных сетей. Это достигается за счет возможности виртуальной сети под названием конечная точка службы. Ее можно использовать с частными конечными точками или без них.
Перейдите к учетной записи хранения, для которой вы хотите разрешить доступ к общедоступной конечной точке только из нескольких виртуальных сетей. В содержании для учетной записи хранения выберите Сеть.
В верхней части страницы выберите переключатель "Включено" из выбранных виртуальных сетей и IP-адресов. Это действие отобразит ряд скрытых параметров для управления ограничениями общедоступной конечной точки. Нажмите кнопку +Добавить существующую виртуальную сеть, чтобы выбрать определенную виртуальную сеть , доступ к ней через общедоступную конечную точку. Выберите виртуальную сеть и подсеть для этой виртуальной сети, а затем нажмите кнопку "Включить".
Выберите "Разрешить службам Azure" в списке доверенных служб доступ к этой учетной записи хранения, чтобы разрешить доверенным лицам службы Майкрософт, например Синхронизация файлов Azure для доступа к учетной записи хранения.
Чтобы разрешить доступ к общедоступной конечной точке учетной записи хранения только из определенных виртуальных сетей через конечные точки службы, сначала необходимо собрать информацию об учетной записи хранения и виртуальной сети. Для сбора этой информации заполните параметры <storage-account-resource-group>
, <storage-account-name>
, <vnet-resource-group-name>
, <vnet-name>
и <subnet-name>
.
$storageAccountResourceGroupName = "<storage-account-resource-group>"
$storageAccountName = "<storage-account-name>"
$restrictToVirtualNetworkResourceGroupName = "<vnet-resource-group-name>"
$restrictToVirtualNetworkName = "<vnet-name>"
$subnetName = "<subnet-name>"
$storageAccount = Get-AzStorageAccount `
-ResourceGroupName $storageAccountResourceGroupName `
-Name $storageAccountName `
-ErrorAction Stop
$virtualNetwork = Get-AzVirtualNetwork `
-ResourceGroupName $restrictToVirtualNetworkResourceGroupName `
-Name $restrictToVirtualNetworkName `
-ErrorAction Stop
$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 $restrictToVirtualNetworkName." `
-ErrorAction Stop
}
Чтобы разрешить трафик из виртуальной сети к общедоступной конечной точке учетной записи хранения в структуре сети Azure, подсеть этой виртуальной сети должна предоставлять конечную точку службы Microsoft.Storage
. Следующие команды PowerShell добавят Microsoft.Storage
конечную точку службы в подсеть, если она еще не существует.
$serviceEndpoints = $subnet | `
Select-Object -ExpandProperty ServiceEndpoints | `
Select-Object -ExpandProperty Service
if ($serviceEndpoints -notcontains "Microsoft.Storage") {
if ($null -eq $serviceEndpoints) {
$serviceEndpoints = @("Microsoft.Storage")
} elseif ($serviceEndpoints -is [string]) {
$serviceEndpoints = @($serviceEndpoints, "Microsoft.Storage")
} else {
$serviceEndpoints += "Microsoft.Storage"
}
$virtualNetwork = $virtualNetwork | Set-AzVirtualNetworkSubnetConfig `
-Name $subnetName `
-AddressPrefix $subnet.AddressPrefix `
-ServiceEndpoint $serviceEndpoints `
-WarningAction SilentlyContinue `
-ErrorAction Stop | `
Set-AzVirtualNetwork `
-ErrorAction Stop
}
Последним шагом для ограничения трафика к учетной записи хранения будет создание правила сети и добавление его в набор правил сети для этой учетной записи хранения.
$networkRule = $storageAccount | Add-AzStorageAccountNetworkRule `
-VirtualNetworkResourceId $subnet.Id `
-ErrorAction Stop
$storageAccount | Update-AzStorageAccountNetworkRuleSet `
-DefaultAction Deny `
-Bypass AzureServices `
-VirtualNetworkRule $networkRule `
-WarningAction SilentlyContinue `
-ErrorAction Stop | `
Out-Null
Чтобы разрешить доступ к общедоступной конечной точке учетной записи хранения только из определенных виртуальных сетей через конечные точки службы, сначала необходимо собрать информацию об учетной записи хранения и виртуальной сети. Для сбора этой информации заполните параметры <storage-account-resource-group>
, <storage-account-name>
, <vnet-resource-group-name>
, <vnet-name>
и <subnet-name>
.
storageAccountResourceGroupName="<storage-account-resource-group>"
storageAccountName="<storage-account-name>"
restrictToVirtualNetworkResourceGroupName="<vnet-resource-group-name>"
restrictToVirtualNetworkName="<vnet-name>"
subnetName="<subnet-name>"
storageAccount=$(az storage account show \
--resource-group $storageAccountResourceGroupName \
--name $storageAccountName \
--query "id" | \
tr -d '"')
virtualNetwork=$(az network vnet show \
--resource-group $restrictToVirtualNetworkResourceGroupName \
--name $restrictToVirtualNetworkName \
--query "id" | \
tr -d '"')
subnet=$(az network vnet subnet show \
--resource-group $restrictToVirtualNetworkResourceGroupName \
--vnet-name $restrictToVirtualNetworkName \
--name $subnetName \
--query "id" | \
tr -d '"')
Чтобы разрешить трафик из виртуальной сети к общедоступной конечной точке учетной записи хранения в структуре сети 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
Последним шагом для ограничения трафика к учетной записи хранения будет создание правила сети и добавление его в набор правил сети для этой учетной записи хранения.
az storage account network-rule add \
--resource-group $storageAccountResourceGroupName \
--account-name $storageAccountName \
--subnet $subnet \
--output none
az storage account update \
--resource-group $storageAccountResourceGroupName \
--name $storageAccountName \
--bypass "AzureServices" \
--default-action "Deny" \
--output none