Конечные точки служб для виртуальной сети позволяют ограничить сетевой доступ к некоторым ресурсам службы Azure определенной подсетью виртуальной сети. Можно также запретить доступ к ресурсам через Интернет. Конечные точки службы предоставляют прямое подключение из виртуальной сети к поддерживаемым службам Azure. Это позволяет использовать закрытый диапазон адресов виртуальной сети для доступа к службам Azure. Трафик, поступающий к ресурсам Azure через конечные точки службы, всегда остается в магистральной сети Microsoft Azure.
В этом руководстве описано следующее:
- Создание виртуальной сети с одной подсетью.
- Добавление подсети и включение конечной точки службы.
- Создание ресурса Azure и разрешение сетевого доступа к нему только из подсети.
- Развертывание виртуальной машины в каждой подсети.
- Подтверждение прав доступа к ресурсу из подсети.
- Убедитесь, что доступ к ресурсу запрещен из подсети и Интернета.
Предварительные условия
Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.
Azure Cloud Shell
В Azure есть Azure Cloud Shell, интерактивная оболочка среды, с которой можно работать в браузере. Для работы со службами Azure можно использовать Bash или PowerShell с Cloud Shell. Для запуска кода из этой статьи можно использовать предварительно установленные команды Cloud Shell. Ничего дополнительного в локальной среде устанавливать не нужно.
Начало работы с Azure Cloud Shell
Вариант |
Пример и ссылка |
Нажмите кнопку Попробовать в правом верхнем углу блока кода или команд. При нажатии кнопки Попробовать код или команда не копируется в Cloud Shell автоматически. |
|
Чтобы открыть Cloud Shell в браузере, перейдите по адресу https://shell.azure.com или нажмите кнопку Запуск Cloud Shell. |
|
Нажмите кнопку Cloud Shell в строке меню в правом верхнем углу окна портала Azure. |
|
Чтобы использовать Azure Cloud Shell, выполните следующие действия:
Запустите Cloud Shell.
Нажмите кнопку Копировать в блоке кода (или блоке команд), чтобы скопировать код или команду.
Вставьте код или команду в окно сеанса Cloud Shell, нажав клавиши CTRL+SHIFT+V в Windows и Linux или CMD+SHIFT+V в macOS.
Нажмите клавишу ВВОД, чтобы запустить код или команду.
Чтобы установить и использовать PowerShell локально для работы с этой статьей, вам понадобится модуль Azure PowerShell 1.0.0 или более поздней версии. Запустите Get-Module -ListAvailable Az
, чтобы узнать установленную версию. Если вам необходимо выполнить обновление, ознакомьтесь со статьей, посвященной установке модуля Azure PowerShell. При использовании PowerShell на локальном компьютере также нужно запустить Connect-AzAccount
, чтобы создать подключение к Azure.
Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
- Для работы с этой статьей требуется Azure CLI версии 2.0.28 или более поздней. Если вы используете Azure Cloud Shell, последняя версия уже установлена.
Включить конечную точку службы
Создание виртуальной сети и узла Бастиона Azure
Следующая процедура создает виртуальную сеть с подсетью ресурсов, подсетью Бастиона Azure и узлом Бастиона:
На портале найдите и выберите "Виртуальные сети".
На странице Виртуальные сети выберите команду + Создать.
На вкладке "Основы" создайте виртуальную сеть, введите или выберите следующие сведения:
Настройка |
Значение |
Сведения о проекте |
|
Подписка |
Выберите свою подписку. |
Группа ресурсов |
Выберите Создать новый.
Введите test-rg для имени.
Нажмите кнопку ОК. |
Сведения об экземпляре |
|
Имя. |
Введите vnet-1. |
Область/регион |
Выберите регион Восточная часть США 2. |
Нажмите кнопку "Далее ", чтобы перейти на вкладку "Безопасность ".
В разделе Azure Bastion выберите Включить Azure Bastion.
Бастион использует браузер для подключения к виртуальным машинам в виртуальной сети через Secure Shell (SSH) или протокол удаленного рабочего стола (RDP) с помощью частных IP-адресов. Виртуальные машины не нуждаются в общедоступных IP-адресах, клиентском программном обеспечении или специальной конфигурации. Подробные сведения см. в статье Что такое Бастион Azure?
Примечание.
Почасовая оплата начинается с момента установки Bastion, независимо от использования исходящих данных. Дополнительные сведения см. в разделе "Цены и номера SKU". Если вы развертываете Бастион в рамках руководства или теста, рекомендуется удалить этот ресурс после завершения работы с ним.
В Azure Bastion введите или выберите следующие сведения:
Настройка |
Значение |
Имя узла Бастиона Azure |
Введите бастион. |
Общедоступный IP-адрес Бастиона Azure |
Выберите " Создать общедоступный IP-адрес".
Введите public-ip-бастион в поле Имя.
Нажмите кнопку ОК. |
Нажмите Далее, чтобы перейти на вкладку IP-адреса.
В поле адресного пространства в подсетях выберите подсеть по умолчанию .
В разделе "Изменить подсеть" введите или выберите следующие сведения:
Настройка |
Значение |
Назначение подсети |
Оставьте значение по умолчанию. |
Имя. |
Введите subnet-1. |
IРv4 |
|
Диапазон адресов IPv4 |
Оставьте значение по умолчанию 10.0.0.0/16. |
Начальный адрес |
Оставьте значение по умолчанию 10.0.0.0. |
Размер |
Оставьте значение по умолчанию /24 (256 адресов). |
Выберите Сохранить.
Выберите "Проверка и создание " в нижней части окна. После завершения проверки нажмите кнопку Создать.
Конечные точки службы активируются для каждой службы и каждой подсети.
В поле поиска в верхней части страницы портала найдите виртуальную сеть. В результатах поиска выберите Виртуальные сети.
В виртуальных сетях выберите виртуальную сеть-1.
В разделе "Параметры" виртуальной сети-1 выберите подсети.
Выберите + Подсеть.
На странице "Добавление подсети" введите или выберите следующие сведения:
Настройка |
Значение |
Имя. |
subnet-private |
Диапазон адресов подсети |
Оставьте значение по умолчанию 10.0.2.0/24. |
КОНЕЧНЫЕ ТОЧКИ СЛУЖБЫ |
|
Службы |
Выберите элемент Microsoft.Storage. |
Выберите Сохранить.
Внимание
Перед включением конечной точки службы для существующей подсети, которая содержит ресурсы, см. раздел Изменение параметров подсети.
Создание виртуальной сети
Перед созданием виртуальной сети необходимо создать для нее группу ресурсов и другие компоненты, указанные в этой статье. Создайте группу ресурсов с помощью командлета PowerShell New-AzResourceGroup. В следующем примере создается группа ресурсов с именем test-rg:
$rg = @{
ResourceGroupName = "test-rg"
Location = "westus2"
}
New-AzResourceGroup @rg
Создайте виртуальную сеть с использованием New-AzVirtualNetwork. В следующем примере создается виртуальная сеть с именем vnet-1 с префиксом адреса 10.0.0.0.0/16.
$vnet = @{
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "vnet-1"
AddressPrefix = "10.0.0.0/16"
}
$virtualNetwork = New-AzVirtualNetwork @vnet
Создайте конфигурацию подсети с помощью командлета New-AzVirtualNetworkSubnetConfig. В следующем примере создается конфигурация подсети для подсети с именем subnet-public:
$subpub = @{
Name = "subnet-public"
AddressPrefix = "10.0.0.0/24"
VirtualNetwork = $virtualNetwork
}
$subnetConfigPublic = Add-AzVirtualNetworkSubnetConfig @subpub
Создайте подсеть в виртуальной сети, записав параметры конфигурации подсети в виртуальную сеть с помощью команды Set-AzVirtualNetwork.
$virtualNetwork | Set-AzVirtualNetwork
Создайте другую подсеть в виртуальной сети. В этом примере создается подсеть с именем subnet-private с конечной точкой службы для Microsoft.Storage:
$subpriv = @{
Name = "subnet-private"
AddressPrefix = "10.0.2.0/24"
VirtualNetwork = $virtualNetwork
ServiceEndpoint = "Microsoft.Storage"
}
$subnetConfigPrivate = Add-AzVirtualNetworkSubnetConfig @subpriv
$virtualNetwork | Set-AzVirtualNetwork
Развертывание Бастиона Azure
Бастион Azure использует браузер для подключения к виртуальным машинам в виртуальной сети через Secure Shell (SSH) или протокол удаленного рабочего стола (RDP) с помощью частных IP-адресов. Виртуальные машины не нуждаются в общедоступных IP-адресах, клиентском программном обеспечении или специальной конфигурации. Дополнительные сведения о Бастионе см. в статье "Что такое Бастион Azure?".
Почасовая цена начинается с момента развертывания бастиона, независимо от объема исходящего трафика. Дополнительные сведения см. в разделе "Цены и номера SKU". Если вы развертываете Бастион в рамках руководства или теста, рекомендуется удалить этот ресурс после завершения работы с ним.
Настройте подсеть Бастиона для виртуальной сети. Эта подсеть зарезервирована исключительно для ресурсов Бастиона и должна называться AzureBastionSubnet.
$subnet = @{
Name = 'AzureBastionSubnet'
VirtualNetwork = $virtualNetwork
AddressPrefix = '10.0.1.0/26'
}
$subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
Задайте конфигурацию:
$virtualNetwork | Set-AzVirtualNetwork
Создайте общедоступный IP-адрес бастиона. Сервер Бастиона использует общедоступный IP-адрес для доступа к SSH и RDP по порту 443.
$ip = @{
ResourceGroupName = 'test-rg'
Name = 'public-ip'
Location = 'westus2'
AllocationMethod = 'Static'
Sku = 'Standard'
Zone = 1,2,3
}
New-AzPublicIpAddress @ip
Используйте команду New-AzBastion для создания нового стандартного узла Бастиона в AzureBastionSubnet:
$bastion = @{
Name = 'bastion'
ResourceGroupName = 'test-rg'
PublicIpAddressRgName = 'test-rg'
PublicIpAddressName = 'public-ip'
VirtualNetworkRgName = 'test-rg'
VirtualNetworkName = 'vnet-1'
Sku = 'Basic'
}
New-AzBastion @bastion -AsJob
Развертывание ресурсов Бастиона занимает около 10 минут. В следующем разделе можно создать виртуальные машины, пока Bastion развертывается в вашей виртуальной сети.
Создание виртуальной сети
Перед созданием виртуальной сети необходимо создать для нее группу ресурсов и другие компоненты, указанные в этой статье. Создайте группу ресурсов с помощью команды az group create. В следующем примере создается группа ресурсов с именем test-rg в расположении westus2 .
az group create \
--name test-rg \
--location westus2
Создайте виртуальную сеть с одной подсетью при помощи команды az network vnet create.
az network vnet create \
--name vnet-1 \
--resource-group test-rg \
--address-prefix 10.0.0.0/16 \
--subnet-name subnet-public \
--subnet-prefix 10.0.0.0/24
Вы можете включить конечные точки службы только для служб, поддерживающих конечные точки службы. Просмотрите, какие службы с поддержкой конечных точек доступны в регионе Azure, выполнив команду az network vnet list-endpoint-services. В следующем примере возвращается список служб с поддержкой конечной точки службы, доступных в регионе westus2 . Список возвращаемых служб со временем будет увеличиваться, так как поддержка конечных точек службы будет реализовываться во все большем числе служб Azure.
az network vnet list-endpoint-services \
--location westus2 \
--out table
Создайте другую подсеть в виртуальной сети с az network vnet subnet create. В этом примере для подсети создается конечная точка Microsoft.Storage
службы:
az network vnet subnet create \
--vnet-name vnet-1 \
--resource-group test-rg \
--name subnet-private \
--address-prefix 10.0.1.0/24 \
--service-endpoints Microsoft.Storage
Ограничение сетевого доступа для подсети
По умолчанию все экземпляры виртуальных машин в подсети могут обмениваться данными со всеми ресурсами. Вы можете ограничить обмен данными со всеми ресурсами в подсети, создав группу безопасности сети и связав ее с подсетью.
В поле поиска в верхней части страницы портала найдите группу безопасности сети. В результатах поиска выберите Группы безопасности сети.
В группах безопасности сети нажмите кнопку +Создать.
На вкладке основных сведений страницы Создание группы безопасности сети введите или выберите указанные ниже значения параметров.
Настройка |
Значение |
Сведения о проекте |
|
Подписка |
Выберите свою подписку. |
Группа ресурсов |
Выберите test-rg. |
Сведения об экземпляре |
|
Имя. |
Введите nsg-storage. |
Область/регион |
Выберите регион Восточная часть США 2. |
Выберите Проверить и создать, а затем выберите Создать.
Создайте группу безопасности сети с помощью командлета New-AzNetworkSecurityGroup. В следующем примере создается группа безопасности сети с именем nsg-private.
$nsgpriv = @{
ResourceGroupName = 'test-rg'
Location = 'westus2'
Name = 'nsg-private'
}
$nsg = New-AzNetworkSecurityGroup @nsgpriv
Создайте группу безопасности сети с помощью команды az network nsg create. В следующем примере создается группа безопасности сети с именем nsg-private.
az network nsg create \
--resource-group test-rg \
--name nsg-private
Создание правил для исходящей группы безопасности сети (NSG)
В поле поиска в верхней части страницы портала найдите группу безопасности сети. В результатах поиска выберите Группы безопасности сети.
Выберите nsg-storage.
В разделе Параметры выберите Правила безопасности для исходящего трафика.
Выберите Добавить.
Создайте правило, разрешающее исходящий обмен данными в службе хранилища Azure. Введите или выберите следующие сведения в Добавить правило безопасности для исходящего трафика:
Параметр |
Значение |
Оригинал |
Выберите Service Tag (Тег службы). |
Тег службы источника |
Выберите VirtualNetwork. |
Диапазоны исходных портов |
Оставьте значение по умолчанию *. |
Назначение |
Выберите Service Tag (Тег службы). |
Тег сервиса назначения |
Выберите Хранилище. |
Сервис |
Оставьте значение по умолчанию custom. |
Диапазоны портов назначения |
Введите 445. |
Протокол |
Выберите Любое. |
Действие |
Выберите Разрешить. |
Приоритет |
Оставьте значение по умолчанию 100. |
Имя. |
Введите allow-storage-all. |
Выберите Добавить.
Создайте другое правило безопасности, которое запрещает исходящие подключения через Интернет. Это правило переопределяет правило по умолчанию во всех группах безопасности сети, которое позволяет исходящую связь через Интернет. Воспользуйтесь следующими значениями в Добавить правило безопасности для исходящего трафика, чтобы завершить предыдущие шаги.
Настройка |
Значение |
Оригинал |
Выберите Service Tag (Тег службы). |
Тег службы источника |
Выберите VirtualNetwork. |
Диапазоны исходных портов |
Оставьте значение по умолчанию *. |
Назначение |
Выберите Service Tag (Тег службы). |
Тег службы назначения |
Выберите Интернет. |
Сервис |
Оставьте значение по умолчанию custom. |
Диапазоны портов назначения |
Введите *. |
Протокол |
Выберите Любой. |
Действие |
Выберите Отклонить. |
Приоритет |
Оставьте значение по умолчанию 110. |
Имя. |
Введите deny-internet-all. |
Выберите Добавить.
В поле поиска в верхней части страницы портала найдите группу безопасности сети. В результатах поиска выберите Группы безопасности сети.
Выберите nsg-storage.
В разделе Параметры выберите Подсети.
Нажмите + Связать.
В разделе "Ассоциация подсети" выберите vnet-1 в виртуальной сети. Выберите subnet-private в разделе подсеть.
Нажмите ОК.
Создайте правила безопасности для группы защиты сети с помощью командлета PowerShell New-AzNetworkSecurityRuleConfig. Приведенное ниже правило разрешает исходящий доступ к общедоступным IP-адресам, назначенным службе хранилища Azure.
$r1 = @{
Name = "Allow-Storage-All"
Access = "Allow"
DestinationAddressPrefix = "Storage"
DestinationPortRange = "*"
Direction = "Outbound"
Priority = 100
Protocol = "*"
SourceAddressPrefix = "VirtualNetwork"
SourcePortRange = "*"
}
$rule1 = New-AzNetworkSecurityRuleConfig @r1
Следующее правило запрещает доступ ко всем общедоступным IP-адресам. Предыдущее правило переопределяет это правило ввиду более высокого приоритета. Оно предоставляет доступ к общедоступным IP-адресам службы хранилища Azure.
$r2 = @{
Name = "Deny-Internet-All"
Access = "Deny"
DestinationAddressPrefix = "Internet"
DestinationPortRange = "*"
Direction = "Outbound"
Priority = 110
Protocol = "*"
SourceAddressPrefix = "VirtualNetwork"
SourcePortRange = "*"
}
$rule2 = New-AzNetworkSecurityRuleConfig @r2
Используйте Get-AzNetworkSecurityGroup , чтобы получить объект группы безопасности сети в переменную. Используйте Set-AzNetworkSecurityRuleConfig , чтобы добавить правила в группу безопасности сети.
# Retrieve the existing network security group
$nsgpriv = @{
ResourceGroupName = 'test-rg'
Name = 'nsg-private'
}
$nsg = Get-AzNetworkSecurityGroup @nsgpriv
# Add the new rules to the security group
$nsg.SecurityRules += $rule1
$nsg.SecurityRules += $rule2
# Update the network security group with the new rules
Set-AzNetworkSecurityGroup -NetworkSecurityGroup $nsg
Присоедините группу безопасности сети к подсети subnet-private с помощью Set-AzVirtualNetworkSubnetConfig и затем запишите конфигурацию подсети в виртуальную сеть. В следующем примере группа безопасности сети nsg-private ассоциируется с подсетью subnet-private:
$subnet = @{
VirtualNetwork = $VirtualNetwork
Name = "subnet-private"
AddressPrefix = "10.0.2.0/24"
ServiceEndpoint = "Microsoft.Storage"
NetworkSecurityGroup = $nsg
}
Set-AzVirtualNetworkSubnetConfig @subnet
$virtualNetwork | Set-AzVirtualNetwork
Создайте правила безопасности командой az network nsg rule create. Приведенное ниже правило разрешает исходящий доступ к общедоступным IP-адресам, назначенным службе хранилища Azure.
az network nsg rule create \
--resource-group test-rg \
--nsg-name nsg-private \
--name Allow-Storage-All \
--access Allow \
--protocol "*" \
--direction Outbound \
--priority 100 \
--source-address-prefix "VirtualNetwork" \
--source-port-range "*" \
--destination-address-prefix "Storage" \
--destination-port-range "*"
Каждая группа безопасности сети содержит несколько правил безопасности по умолчанию. Следующее правило переопределяет правило безопасности по умолчанию, разрешающее исходящий доступ ко всем общедоступным IP-адресам. Параметр destination-address-prefix "Internet"
запрещает доступ ко всем общедоступным IP-адресам. Предыдущее правило переопределяет это правило ввиду более высокого приоритета. Оно предоставляет доступ к общедоступным IP-адресам службы хранилища Azure.
az network nsg rule create \
--resource-group test-rg \
--nsg-name nsg-private \
--name Deny-Internet-All \
--access Deny \
--protocol "*" \
--direction Outbound \
--priority 110 \
--source-address-prefix "VirtualNetwork" \
--source-port-range "*" \
--destination-address-prefix "Internet" \
--destination-port-range "*"
Следующее правило разрешает входящий трафик SSH в подсеть из любой точки. Это правило переопределяет правило безопасности по умолчанию, запрещающее весь входящий трафик из Интернета. В подсети разрешено использование SSH, так чтобы позже можно было проверить подключение.
az network nsg rule create \
--resource-group test-rg \
--nsg-name nsg-private \
--name Allow-SSH-All \
--access Allow \
--protocol Tcp \
--direction Inbound \
--priority 120 \
--source-address-prefix "*" \
--source-port-range "*" \
--destination-address-prefix "VirtualNetwork" \
--destination-port-range "22"
Свяжите группу безопасности сети с частной подсетью с помощью команды az network vnet subnet update. В следующем примере группа безопасности сети nsg-private связывается с подсеть-частная подсетью:
az network vnet subnet update \
--vnet-name vnet-1 \
--name subnet-private \
--resource-group test-rg \
--network-security-group nsg-private
Ограничение сетевого доступа к ресурсу
Действия, необходимые для ограничения сетевого доступа к ресурсам, созданным через службы Azure, которые включены для конечных точек служб, зависят от служб. Ознакомьтесь с документацией по отдельным службам, чтобы получить точные инструкции для них. В оставшейся части этого руководства в качестве примера приведены инструкции по ограничению сетевого доступа для учетной записи службы хранилища Azure.
Создание учетной записи хранилища
Создайте учетную запись хранилища Azure для шагов, описанных в этой статье. Если у вас уже есть учетная запись хранения, ее можно использовать.
В поле поиска в верхней части портала введите Учетная запись хранения. Выберите Учетные записи хранения в результатах поиска.
Выберите + Создать.
На вкладке "Основные сведения" в разделе "Создание учетной записи хранения" введите или выберите следующие сведения:
Настройка |
Значение |
Сведения о проекте |
|
Подписка |
Выберите свою подписку Azure. |
Группа ресурсов |
Выберите test-rg. |
Сведения об экземпляре |
|
Название учетной записи хранилища |
Введите storage1. Если имя недоступно, введите уникальное имя. |
Расположение |
Выберите регион (США) Восточная часть США 2. |
Производительность |
Оставьте значение по умолчанию Стандартная. |
Избыточность |
Выберите Локально избыточное хранилище (LRS). |
Выберите Review.
Нажмите кнопку создания.
Чтобы создать учетную запись хранения Azure, используйте командлет New-AzStorageAccount. Замените <replace-with-your-unique-storage-account-name>
именем, которое является уникальным для всех расположений Azure, содержащим только цифры и строчные буквы (длиной от 3 до 24 знаков).
$storageAcctName = '<replace-with-your-unique-storage-account-name>'
$storage = @{
Location = 'westus2'
Name = $storageAcctName
ResourceGroupName = 'test-rg'
SkuName = 'Standard_LRS'
Kind = 'StorageV2'
}
New-AzStorageAccount @storage
После создания учетной записи хранения получите ключ учетной записи хранения и сохраните его в переменной, выполнив командлет Get-AzStorageAccountKey:
$storagekey = @{
ResourceGroupName = 'test-rg'
AccountName = $storageAcctName
}
$storageAcctKey = (Get-AzStorageAccountKey @storagekey).Value[0]
Этот ключ потребуется для создания файлового ресурса на более позднем этапе. Введите $storageAcctKey
и запишите значение. Вы вручную вводите его на более позднем шаге, когда сопоставляете общую папку с диском в виртуальной машине.
Действия, необходимые для ограничения сетевого доступа к ресурсам, созданным с помощью служб Azure, использующих конечные точки службы, отличаются в зависимости службы. Ознакомьтесь с документацией по отдельным службам, чтобы получить точные инструкции для них. В оставшейся части этой статьи в качестве примера приведены инструкции по ограничению сетевого доступа для учетной записи хранения Azure.
Создание учетной записи хранилища
Создайте учетную запись хранения Azure с помощью команды az storage account create. Замените <replace-with-your-unique-storage-account-name>
именем, которое является уникальным для всех расположений Azure, содержащим только цифры и строчные буквы (длиной от 3 до 24 знаков).
storageAcctName="<replace-with-your-unique-storage-account-name>"
az storage account create \
--name $storageAcctName \
--resource-group test-rg \
--sku Standard_LRS \
--kind StorageV2
После создания учетной записи хранения получите строку подключения для этой учетной записи и сохраните ее в переменной с помощью команды az storage account show-connection-string. Строка подключения используется для создания общего доступа к файлам на более позднем этапе.
saConnectionString=$(az storage account show-connection-string \
--name $storageAcctName \
--resource-group test-rg \
--query 'connectionString' \
--out tsv)
Это важно
Корпорация Майкрософт рекомендует использовать самый безопасный поток проверки подлинности. Поток проверки подлинности, описанный в этой процедуре, требует очень высокого уровня доверия к приложению и несет риски, которые отсутствуют в других потоках. Этот поток следует использовать только в том случае, если другие более безопасные потоки, такие как управляемые удостоверения, не являются жизнеспособными.
Дополнительные сведения о подключении к учетной записи хранения с помощью управляемого удостоверения см. в статье "Использование управляемого удостоверения для доступа к служба хранилища Azure".
Создайте файловую общую папку в учетной записи хранения
В поле поиска в верхней части портала введите Учетная запись хранения. Выберите Учетные записи хранения в результатах поиска.
В учетных записях хранения выберите учетную запись хранения, созданную на предыдущем шаге.
В хранилище данных выберите общие папки.
Выберите + Общий доступ к файлам.
Введите или выберите следующие сведения в новой общей папке:
Настройки |
Значение |
Имя. |
Введите общую папку. |
Уровень |
Оставьте значение по умолчанию Оптимизировано для транзакций. |
Нажмите кнопку "Далее" — резервное копирование.
Отмена выбора включения резервного копирования.
Выберите Проверить и создать, а затем выберите Создать.
Создайте объект контекста для учетной записи хранения и ключа, выполнив командлет New-AzStorageContext. Этот контекст инкапсулирует имя учетной записи хранения и ее ключ.
$storagecontext = @{
StorageAccountName = $storageAcctName
StorageAccountKey = $storageAcctKey
}
$storageContext = New-AzStorageContext @storagecontext
Создайте общий доступ к файлам с помощью командлета New-AzStorageShare:
$fs = @{
Name = "file-share"
Context = $storageContext
}
$share = New-AzStorageShare @fs
Создайте файловый ресурс в учетной записи хранения командой az storage share create. Позже этот файловый ресурс монтируется для подтверждения сетевого доступа к нему.
az storage share create \
--name file-share \
--quota 2048 \
--connection-string $saConnectionString > /dev/null
Ограничение сетевого доступа к подсети
По умолчанию учетные записи хранения принимают сетевые подключения от клиентов из любой сети, включая Интернет. Вы можете ограничить доступ к сети из Интернета, а также ко всем остальным подсетям во всех виртуальных сетях (за исключением подсети subnet-private в виртуальной сети vnet-1).
Ограничение сетевого доступа к подсети:
В поле поиска в верхней части портала введите Учетная запись хранения. Выберите Учетные записи хранения в результатах поиска.
Затем выберите учетную запись хранения.
В разделе "Безопасность и сеть" выберите "Сеть".
На вкладке "Брандмауэры и виртуальные сети" выберите "Включено из выбранных виртуальных сетей и IP-адресов" в доступе к общедоступной сети.
В виртуальных сетях выберите + Добавить существующую виртуальную сеть.
В разделе "Добавление сетей" введите или выберите следующие сведения:
Настройка |
Значение |
Подписка |
Выберите свою подписку. |
Виртуальные сети |
Выберите vnet-1. |
подсети; |
Выберите subnet-private. |
Выберите Добавить.
Нажмите кнопку "Сохранить", чтобы сохранить конфигурации виртуальной сети.
По умолчанию учетные записи хранения принимают сетевые подключения клиентов в любой сети. Чтобы ограничить доступ к выбранным сетям, измените действие по умолчанию на Запретить, используя командлет Update-AzStorageAccountNetworkRuleSet. После запрета доступа к сети учетная запись хранения недоступна из любой сети.
$storagerule = @{
ResourceGroupName = "test-rg"
Name = $storageAcctName
DefaultAction = "Deny"
}
Update-AzStorageAccountNetworkRuleSet @storagerule
Извлеките созданную виртуальную сеть, выполнив командлет Get-AzVirtualNetwork, а затем передайте объект подсети Private в переменную с помощью командлета Get-AzVirtualNetworkSubnetConfig:
$subnetpriv = @{
ResourceGroupName = "test-rg"
Name = "vnet-1"
}
$privateSubnet = Get-AzVirtualNetwork @subnetpriv | Get-AzVirtualNetworkSubnetConfig -Name "subnet-private"
Разрешить сетевой доступ к учетной записи хранения из подсети-частной подсети с помощью Add-AzStorageAccountNetworkRule.
$storagenetrule = @{
ResourceGroupName = "test-rg"
Name = $storageAcctName
VirtualNetworkResourceId = $privateSubnet.Id
}
Add-AzStorageAccountNetworkRule @storagenetrule
По умолчанию учетные записи хранения принимают сетевые подключения клиентов в любой сети. Чтобы ограничить доступ выбранными сетями, измените действие по умолчанию на Запретить, выполнив команду az storage account update. После запрета доступа к сети учетная запись хранения недоступна из любой сети.
az storage account update \
--name $storageAcctName \
--resource-group test-rg \
--default-action Deny
Разрешить сетевой доступ к учетной записи хранения из подсети-частной с помощью команды az storage account network-rule add.
az storage account network-rule add \
--resource-group test-rg \
--account-name $storageAcctName \
--vnet-name vnet-1 \
--subnet subnet-private
Развертывание виртуальных машин в подсетях
Чтобы проверить сетевой доступ к учетной записи хранения, разверните виртуальную машину в каждой подсети.
Создание тестовой виртуальной машины
Следующая процедура создает тестовую виртуальную машину с именем vm-1 в виртуальной сети.
На портале найдите и выберите "Виртуальные машины".
На виртуальных машинах нажмите кнопку +Создать, а затем виртуальную машину Azure.
На вкладке Основные сведения страницы Создание виртуальной машины введите или выберите следующие значения параметров:
Настройки |
Значение |
Сведения о проекте |
|
Подписка |
Выберите свою подписку. |
Группа ресурсов |
Выберите test-rg. |
Сведения об экземпляре |
|
Имя виртуальной машины |
Введите vm-1. |
Область/регион |
Выберите регион Восточная часть США 2. |
Параметры доступности |
Выберите Избыточность инфраструктуры не требуется. |
Тип безопасности |
Оставьте значение по умолчанию Стандартный. |
Изображение |
Выберите Windows Server 2022 Datacenter - x64 Gen2. |
Архитектура виртуальной машины |
Оставьте значение по умолчанию x64. |
Размер |
Выберите размер. |
Учетная запись администратора |
|
Тип аутентификации |
выберите Пароль. |
Имя пользователя |
Введите azureuser. |
Пароль |
Введите пароль. |
Подтверждение пароля |
Повторно введите пароль. |
Правила входящего порта |
|
Общедоступные входящие порты |
Выберите Отсутствует. |
Выберите вкладку "Сеть" в верхней части страницы.
На вкладке Сеть введите или выберите следующие значения параметров:
Настройка |
Значение |
Сетевой интерфейс |
|
Виртуальная сеть |
Выберите vnet-1. |
Подсеть |
Выберите подсеть-1 (10.0.0.0/24). |
Общедоступный IP-адрес |
Выберите Отсутствует. |
Группа безопасности сети сетевого адаптера |
Выберите Дополнительно. |
Настройка группы безопасности сети |
Выберите Создать новый.
Введите nsg-1 для имени.
Оставьте остальные значения по умолчанию и нажмите кнопку "ОК". |
Оставьте остальные параметры по умолчанию и нажмите кнопку "Просмотр и создание".
Проверьте параметры и выберите Создать.
Примечание.
Виртуальные машины в виртуальной сети с узлом бастиона не требуют общедоступных IP-адресов. Бастион предоставляет общедоступный IP-адрес, а виртуальные машины используют частные IP-адреса для обмена данными в сети. Вы можете удалить общедоступные IP-адреса из любых виртуальных машин в размещенных виртуальных сетях бастиона. Дополнительные сведения см. в разделе "Отсообщение общедоступного IP-адреса" с виртуальной машины Azure.
Примечание.
Azure предоставляет IP-адрес исходящего доступа по умолчанию для виртуальных машин, которые либо не назначены общедоступным IP-адресом, либо находятся в серверном пуле внутренней подсистемы балансировки нагрузки Azure. Механизм IP-адреса исходящего трафика по умолчанию предоставляет исходящий IP-адрес, который нельзя настроить.
IP-адрес исходящего доступа по умолчанию отключен при возникновении одного из следующих событий:
- Общедоступный IP-адрес назначается виртуальной машине.
- Виртуальная машина размещается в серверном пуле стандартной подсистемы балансировки нагрузки с правилами исходящего трафика или без нее.
- Ресурс шлюза NAT Azure привязан к подсети виртуальной машины.
Виртуальные машины, созданные с помощью масштабируемых наборов виртуальных машин в гибком режиме оркестрации, не имеют исходящего доступа по умолчанию.
Дополнительные сведения об исходящих подключениях в Azure см. в статье об исходящем доступе по умолчанию в Azure и использовании преобразования исходящих сетевых адресов (SNAT) для исходящих подключений.
Создание второй виртуальной машины
Создайте вторую виртуальную машину, повторяющую шаги, описанные в предыдущем разделе. Замените следующие значения в разделе "Создание виртуальной машины".
Настройка |
Значение |
Имя виртуальной машины |
Введите vm-private. |
Подсеть |
Выберите частную подсеть. |
Общедоступный IP-адрес |
Выберите Отсутствует. |
Группа безопасности сетевого адаптера |
Выберите Отсутствует. |
Предупреждение
Не переходите к следующему шагу, пока развертывание не будет завершено.
Создание первой виртуальной машины
Создайте виртуальную машину в подсети subnet-public с использованием New-AzVM. При выполнении следующей команды вам будет предложено указать учетные данные. В качестве вводимых значений указываются имя пользователя и пароль для виртуальной машины.
$vm1 = @{
ResourceGroupName = "test-rg"
Location = "westus2"
VirtualNetworkName = "vnet-1"
SubnetName = "subnet-public"
Name = "vm-public"
PublicIpAddressName = $null
}
New-AzVm @vm1
Создание второй виртуальной машины
Создайте виртуальную машину в подсети subnet-private.
$vm2 = @{
ResourceGroupName = "test-rg"
Location = "westus2"
VirtualNetworkName = "vnet-1"
SubnetName = "subnet-private"
Name = "vm-private"
PublicIpAddressName = $null
}
New-AzVm @vm2
Создание виртуальной машины в Azure занимает несколько минут. Не продолжайте переходить к следующему шагу, пока Azure не завершит создание виртуальной машины и возвращает выходные данные в PowerShell.
Чтобы проверить сетевой доступ к учетной записи хранения, разверните виртуальную машину в каждой подсети.
Создание первой виртуальной машины
Создайте виртуальную машину в subnet-public с помощью команды az vm create. Команда также создает ключи SSH, если они не существуют в расположении ключей по умолчанию. Чтобы использовать определенный набор ключей, используйте параметр --ssh-key-value
.
az vm create \
--resource-group test-rg \
--name vm-public \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-public \
--admin-username azureuser \
--generate-ssh-keys
Создание виртуальной машины занимает несколько минут. После создания виртуальной машины в Azure CLI отображаются примерно такие данные:
{
"fqdns": "",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-rg/providers/Microsoft.Compute/virtualMachines/vm-public",
"location": "westus2",
"macAddress": "00-0D-3A-23-9A-49",
"powerState": "VM running",
"privateIpAddress": "10.0.0.4",
"publicIpAddress": "203.0.113.24",
"resourceGroup": "test-rg"
}
Создание второй виртуальной машины
az vm create \
--resource-group test-rg \
--name vm-private \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-private \
--admin-username azureuser \
--generate-ssh-keys
Создание виртуальной машины занимает несколько минут.
Подтверждение прав доступа к учетной записи хранения
Созданная ранее виртуальная машина, назначенная в subnet-private подсеть, используется для подтверждения доступа к учетной записи хранения. Виртуальная машина, созданная в предыдущем разделе и назначенная в подсеть subnet-1, используется для подтверждения блокировки доступа к учетной записи хранения.
Получение ключа доступа к учетной записи хранения
В поле поиска в верхней части портала введите Учетная запись хранения. Выберите Учетные записи хранения в результатах поиска.
В учетных записях хранения выберите учетную запись хранения.
В разделе "Безопасность и сеть" выберите ключи доступа.
Скопируйте значение key1. Чтобы отобразить ключ, может потребоваться выбрать кнопку "Показать ".
В поле поиска в верхней части портала введите Виртуальная машина. В результатах поиска выберите Виртуальные машины.
Выберите vm-private.
Выберите Бастион в Операциях.
Введите имя пользователя и пароль, указанные при создании виртуальной машины. Нажмите Подключиться.
Откройте Windows PowerShell. Используйте следующий сценарий для сопоставления общей папки Azure с диском Z.
Замените <storage-account-key>
на ключ, который вы скопировали на предыдущем шаге.
Замените <storage-account-name>
именем своей учетной записи хранения. В этом примере это storage8675.
$key = @{
String = "<storage-account-key>"
}
$acctKey = ConvertTo-SecureString @key -AsPlainText -Force
$cred = @{
ArgumentList = "Azure\<storage-account-name>", $acctKey
}
$credential = New-Object System.Management.Automation.PSCredential @cred
$map = @{
Name = "Z"
PSProvider = "FileSystem"
Root = "\\<storage-account-name>.file.core.windows.net\file-share"
Credential = $credential
}
New-PSDrive @map
PowerShell вернет выходные данные, как в следующем примере.
Name Used (GB) Free (GB) Provider Root
---- --------- --------- -------- ----
Z FileSystem \\storage8675.file.core.windows.net\f...
Облачный файловый ресурс Azure успешно подключен как диск Z.
Закройте подключение Bastion к vm-private.
Созданная ранее виртуальная машина, назначенная подсети subnet-private, используется для подтверждения доступа к учетной записи хранилища. Виртуальная машина, созданная в предыдущем разделе и назначенная в подсеть-1, используется для подтверждения блокировки доступа к учетной записи хранения.
Получение ключа доступа к учетной записи хранения
Войдите на портал Azure.
В поле поиска в верхней части портала введите Учетная запись хранения. Выберите Учетные записи хранения в результатах поиска.
В аккаунтах хранения выберите свой аккаунт хранения.
В разделе "Безопасность и сеть" выберите ключи доступа.
Скопируйте значение key1. Чтобы отобразить ключ, может потребоваться выбрать кнопку "Показать ".
В поле поиска в верхней части портала введите Виртуальная машина. В результатах поиска выберите Виртуальные машины.
Выберите vm-частная.
Выберите Подключиться, затем Подключиться через бастион в Обзор.
Введите имя пользователя и пароль, указанные при создании виртуальной машины. Нажмите Подключиться.
Откройте Windows PowerShell. Используйте следующий сценарий для сопоставления общей папки Azure с диском Z.
Замените <storage-account-key>
на ключ, который вы скопировали на предыдущем шаге.
Замените <storage-account-name>
именем своей учетной записи хранения. В этом примере это storage8675.
$key = @{
String = "<storage-account-key>"
}
$acctKey = ConvertTo-SecureString @key -AsPlainText -Force
$cred = @{
ArgumentList = "Azure\<storage-account-name>", $acctKey
}
$credential = New-Object System.Management.Automation.PSCredential @cred
$map = @{
Name = "Z"
PSProvider = "FileSystem"
Root = "\\<storage-account-name>.file.core.windows.net\file-share"
Credential = $credential
}
New-PSDrive @map
PowerShell вернет выходные данные, как в следующем примере.
Name Used (GB) Free (GB) Provider Root
---- --------- --------- -------- ----
Z FileSystem \\storage8675.file.core.windows.net\f...
Файловый ресурс Azure успешно сопоставлен с диском Z.
Убедитесь, что виртуальная машина запрещает любые исходящие подключения с любых других общедоступных IP-адресов.
ping bing.com
Вы не получаете ответов, так как группа безопасности сети, связанная с частной подсетью, не разрешает исходящий доступ к общедоступным IP-адресам, кроме адресов, назначенных службе служба хранилища Azure.
Закройте подключение Бастиона к vm-private.
SSH на виртуальную машину vm-private.
Выполните следующую команду, чтобы сохранить IP-адрес виртуальной машины в качестве переменной среды:
export IP_ADDRESS=$(az vm show --show-details --resource-group test-rg --name vm-private --query publicIps --output tsv)
ssh -o StrictHostKeyChecking=no azureuser@$IP_ADDRESS
Создайте папку для точки подключения.
sudo mkdir /mnt/file-share
Подключите файловое хранилище Azure к созданному каталогу. Прежде чем выполнить следующую команду, замените <storage-account-name>
именем учетной записи и <storage-account-key>
ключом, которые вы получили при создании учетной записи хранения.
sudo mount --types cifs //<storage-account-name>.file.core.windows.net/my-file-share /mnt/file-share --options vers=3.0,username=<storage-account-name>,password=<storage-account-key>,dir_mode=0777,file_mode=0777,serverino
Отобразится строка запроса user@vm-private:~$
. Файловое хранилище Azure успешно подключено к /mnt/file-share.
Убедитесь, что виртуальная машина запрещает любые исходящие подключения с любых других общедоступных IP-адресов.
ping bing.com -c 4
Вы не получаете ответов, так как группа безопасности сети, связанная с подсетью- частной подсети, не разрешает исходящий доступ к общедоступным IP-адресам, кроме адресов, назначенных службе служба хранилища Azure.
Выйдите из сеанса SSH на vm-private ВМ.
Подтверждение запрета доступа к учетной записи хранения
Из vm-1
В поле поиска в верхней части портала введите Виртуальная машина. В результатах поиска выберите Виртуальные машины.
Выберите vm-1.
Выберите Бастион в Операциях.
Введите имя пользователя и пароль, указанные при создании виртуальной машины. Нажмите Подключиться.
Повторите предыдущую команду, чтобы попытаться сопоставить диск с общей папкой в учетной записи хранения. Для этой процедуры может потребоваться скопировать ключ доступа к учетной записи хранения:
$key = @{
String = "<storage-account-key>"
}
$acctKey = ConvertTo-SecureString @key -AsPlainText -Force
$cred = @{
ArgumentList = "Azure\<storage-account-name>", $acctKey
}
$credential = New-Object System.Management.Automation.PSCredential @cred
$map = @{
Name = "Z"
PSProvider = "FileSystem"
Root = "\\<storage-account-name>.file.core.windows.net\file-share"
Credential = $credential
}
New-PSDrive @map
Должно появиться следующее сообщение об ошибке:
New-PSDrive : Access is denied
At line:1 char:5
+ New-PSDrive @map
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (Z:PSDriveInfo) [New-PSDrive], Win32Exception
+ FullyQualifiedErrorId : CouldNotMapNetworkDrive,Microsoft.PowerShell.Commands.NewPSDriveCommand
Закройте подключение Бастиона к vm-1.
С локального компьютера
В поле поиска в верхней части портала введите Учетная запись хранения. Выберите учетные записи хранения в результатах поиска.
В аккаунтах хранения выберите свой аккаунт хранения.
В хранилище данных выберите общие папки.
Выберите файлообмен.
Выберите "Обзор " в меню слева.
Должно появиться следующее сообщение об ошибке:
Примечание.
Доступ запрещен, так как ваш компьютер не находится в подсети subnet-private виртуальной сети vnet-1.
Из vm-1
В поле поиска в верхней части портала введите Виртуальная машина. В результатах поиска выберите Виртуальные машины.
Выберите vm-1.
Выберите Бастион в Операциях.
Введите имя пользователя и пароль, указанные при создании виртуальной машины. Нажмите Подключиться.
Повторите предыдущую команду, чтобы попытаться сопоставить диск с общей папкой в учетной записи хранения. Для этой процедуры может потребоваться скопировать ключ доступа к учетной записи хранения:
$key = @{
String = "<storage-account-key>"
}
$acctKey = ConvertTo-SecureString @key -AsPlainText -Force
$cred = @{
ArgumentList = "Azure\<storage-account-name>", $acctKey
}
$credential = New-Object System.Management.Automation.PSCredential @cred
$map = @{
Name = "Z"
PSProvider = "FileSystem"
Root = "\\<storage-account-name>.file.core.windows.net\file-share"
Credential = $credential
}
New-PSDrive @map
Должно появиться следующее сообщение об ошибке:
New-PSDrive : Access is denied
At line:1 char:5
+ New-PSDrive @map
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (Z:PSDriveInfo) [New-PSDrive], Win32Exception
+ FullyQualifiedErrorId : CouldNotMapNetworkDrive,Microsoft.PowerShell.Commands.NewPSDriveCommand
Закройте подключение Бастиона к vm-1.
Используя свой компьютер, попытайтесь просмотреть файловые ресурсы в учетной записи хранения, выполнив следующую команду.
$storage = @{
ShareName = "file-share"
Context = $storageContext
}
Get-AzStorageFile @storage
Отказано в доступе. Вы получите выходные данные, аналогичные следующему примеру.
Get-AzStorageFile : The remote server returned an error: (403) Forbidden. HTTP Status Code: 403 - HTTP Error Message: This request isn't authorized to perform this operation
Ваш компьютер не находится в подсети subnet-private виртуальной сети vnet-1.
SSH-подключитесь к виртуальной машине vm-public.
Выполните следующую команду, чтобы сохранить IP-адрес виртуальной машины в качестве переменной среды:
export IP_ADDRESS=$(az vm show --show-details --resource-group test-rg --name vm-public --query publicIps --output tsv)
ssh -o StrictHostKeyChecking=no azureuser@$IP_ADDRESS
Создайте каталог для точки подключения.
sudo mkdir /mnt/file-share
Попытайтесь подключить файловый ресурс Azure к каталогу, который вы создали. В этой статье предполагается, что вы развернули последнюю версию Ubuntu. Если вы используете более ранние версии Ubuntu, ознакомьтесь с дополнительными инструкциями по подключению общих папок в Linux . Прежде чем выполнить следующую команду, замените <storage-account-name>
именем учетной записи и <storage-account-key>
ключом, которые вы получили при создании учетной записи хранения.
sudo mount --types cifs //storage-account-name>.file.core.windows.net/file-share /mnt/file-share --options vers=3.0,username=<storage-account-name>,password=<storage-account-key>,dir_mode=0777,file_mode=0777,serverino
Доступ запрещен, и вы получаете ошибку mount error(13): Permission denied
, так как виртуальная машина vm-public развернута в общедоступной подсети subnet-public. В подсети-общедоступной не включена конечная точка службы для хранения Azure, и учетная запись хранения разрешает сетевой доступ только из подсети-частной, а не из подсети-общедоступной.
Завершите сеанс SSH на виртуальной машине vm-public.
Используя свой компьютер, попытайтесь просмотреть файловые ресурсы в учетной записи хранения, выполнив команду az storage share list. Замените <account-name>
и <account-key>
именем и ключом учетной записи хранения, полученными при создании учетной записи хранения.
az storage share list \
--account-name <account-name> \
--account-key <account-key>
Доступ запрещен, и вы получаете ошибку этот запрос не авторизован для выполнения этой операции, так как ваш компьютер не находится в подсети subnet-private виртуальной сети vnet-1.
Завершив использование созданных ресурсов, можно удалить группу ресурсов и все ее ресурсы.
Войдите на портал Azure; найдите в поиске и выберите Группы ресурсов.
На странице групп ресурсов выберите группу ресурсов test-rg.
На странице test-rg выберите "Удалить группу ресурсов".
Введите test-rg в поле Ввод имени группы ресурсов, чтобы подтвердить удаление, а затем нажмите кнопку "Удалить".
Вы можете удалить ненужную группу ресурсов и все содержащиеся в ней ресурсы с помощью командлета Remove-AzResourceGroup:
$cleanup = @{
Name = "test-rg"
}
Remove-AzResourceGroup @cleanup -Force
Очистка ресурсов
Вы можете удалить ненужную группу ресурсов и все содержащиеся в ней ресурсы, выполнив команду az group delete.
az group delete \
--name test-rg \
--yes \
--no-wait
Следующие шаги
В этом руководстве рассматриваются следующие темы:
Вы включили конечную точку службы для подсети виртуальной сети.
Вы узнали, что конечные точки службы можно включить для ресурсов, развернутых через несколько служб Azure.
Вы создали учетную запись службы хранилища Azure и ограничили сетевой доступ к учетной записи хранения ресурсами одной подсети в виртуальной сети.
См. дополнительные сведения о конечных точках службы и управляемых подсетях.
Если у вас есть несколько виртуальных сетей в вашей учетной записи, может потребоваться установить подключение между ними, чтобы ресурсы могли взаимодействовать друг с другом. Перейдите к следующему руководству для изучения подключения виртуальных сетей.