Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье вы проведете вас как настроить стандартную конечную точку сервиса с помощью Azure PowerShell. Вы создаёте публичный IP-адрес как сетевой идентификатор, связываете его с сервисными конечными точками в подсети, настраиваете периметр сетевой безопасности и проверяете связность.
Important
Стандартная сервисная конечная точка сейчас находится в публичном предварительном просмотре. Предварительная версия предоставляется без соглашения об уровне обслуживания и не рекомендуется для использования в рабочей среде. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Для получения дополнительной информации см. Дополнительные условия использования для предварительных версий Microsoft Azure.
Необходимые условия
Учетная запись Azure с активной подпиской. Если у вас нет учетной записи, создайте бесплатную учетную запись.
Роль участника сети или выше в подписке. В частности, вам нужно разрешение
Microsoft.Network/publicIPAddresses/joinServiceEndpointNetworkIdentifier/action. Для получения дополнительной информации см. требования к ролевому управлению доступом для периметра сетевой безопасности.Функция AllowServiceEndpointNetworkIdentifier должна быть зарегистрирована в вашей подписке. Используйте следующие команды для регистрации функции:
$featureParams = @{ FeatureName = "AllowServiceEndpointNetworkIdentifier" ProviderNamespace = "Microsoft.Network" } Register-AzProviderFeature @featureParamsПроверьте состояние регистрации:
$featureParams = @{ FeatureName = "AllowServiceEndpointNetworkIdentifier" ProviderNamespace = "Microsoft.Network" } Get-AzProviderFeature @featureParams | Select-Object -Property RegistrationStateДождитесь, пока штат покажет «Зарегистрирован», затем обновите регистрацию провайдера ресурсов:
Register-AzResourceProvider -ProviderNamespace "Microsoft.Network"Локальная установка Azure PowerShell или Azure Cloud Shell. Дополнительные сведения см. в статье Установка Azure PowerShell.
Вход в Azure
Подключитесь к своей учетной записи Azure.
Connect-AzAccount
Создайте группу ресурсов
Создайте группу ресурсов с помощью New-AzResourceGroup.
$rgParams = @{
Name = 'test-rg'
Location = 'EastUS2'
}
New-AzResourceGroup @rgParams
Создание виртуальной сети
Создайте виртуальную сеть и подсеть с помощью New-AzVirtualNetwork и New-AzVirtualNetworkSubnetConfig.
$subnetParams = @{
Name = 'subnet-1'
AddressPrefix = '10.0.0.0/24'
}
$subnet = New-AzVirtualNetworkSubnetConfig @subnetParams
$vnetParams = @{
ResourceGroupName = 'test-rg'
Location = 'EastUS2'
Name = 'vnet-1'
AddressPrefix = '10.0.0.0/16'
Subnet = $subnet
}
New-AzVirtualNetwork @vnetParams
Создание шлюза NAT.
Создайте шлюз NAT и свяжите его с подсетью 1 для обеспечения исходящего интернет-соединения для виртуальной машины.
Используйте New-AzPublicIpAddress для создания общедоступного IP-адреса для этого шлюза NAT.
$natPipParams = @{ ResourceGroupName = 'test-rg' Name = 'public-ip-nat' Location = 'EastUS2' AllocationMethod = 'Static' Sku = 'Standard' } $natPip = New-AzPublicIpAddress @natPipParamsСоздайте шлюз NAT с помощью New-AzNatGateway.
$natParams = @{ ResourceGroupName = 'test-rg' Name = 'nat-gateway' Location = 'EastUS2' IdleTimeoutInMinutes = 4 Sku = 'Standard' PublicIpAddress = $natPip } $natGateway = New-AzNatGateway @natParamsАссоциируйте шлюз NAT с подсетью 1 , обновив конфигурацию подсети.
$vnet = Get-AzVirtualNetwork -ResourceGroupName 'test-rg' -Name 'vnet-1' $subnetUpdateParams = @{ Name = 'subnet-1' VirtualNetwork = $vnet AddressPrefix = '10.0.0.0/24' NatGateway = $natGateway } Set-AzVirtualNetworkSubnetConfig @subnetUpdateParams $vnet | Set-AzVirtualNetwork
Развертывание Бастиона Azure
Бастион Azure использует браузер для подключения к виртуальным машинам в виртуальной сети через безопасную оболочку (SSH) или протокол удаленного рабочего стола (RDP) с помощью частных IP-адресов. Виртуальные машины не нуждаются в общедоступных IP-адресах, клиентском программном обеспечении или специальной конфигурации. Дополнительные сведения о Бастионе Azure см. в статье Бастион Azure.
Замечание
Почасовая оплата начисляется с момента развертывания Bastion независимо от объема исходящего трафика. Дополнительные сведения см. в разделе Pricing и SKUs. Если вы развертываете Бастион в рамках руководства или теста, рекомендуется удалить этот ресурс после завершения работы с ним.
Добавьте
AzureBastionSubnetв виртуальную сеть.$vnet = Get-AzVirtualNetwork -ResourceGroupName 'test-rg' -Name 'vnet-1' $subnetParams = @{ Name = 'AzureBastionSubnet' VirtualNetwork = $vnet AddressPrefix = '10.0.1.0/26' } Add-AzVirtualNetworkSubnetConfig @subnetParams $vnet | Set-AzVirtualNetworkСоздайте публичный IP-адрес для хоста Bastion с помощью команды New-AzPublicIpAddress.
$bastionPipParams = @{ ResourceGroupName = 'test-rg' Name = 'public-ip-bastion' Location = 'EastUS2' AllocationMethod = 'Static' Sku = 'Standard' } $bastionPip = New-AzPublicIpAddress @bastionPipParamsСоздайте хост Бастион Azure с помощью New-AzBastion.
$bastionParams = @{ ResourceGroupName = 'test-rg' Name = 'bastion' PublicIpAddress = $bastionPip VirtualNetworkId = (Get-AzVirtualNetwork -ResourceGroupName 'test-rg' -Name 'vnet-1').Id Sku = 'Basic' } New-AzBastion @bastionParams
Создание виртуальной машины
Создайте виртуальную машину с именем vm-1 в виртуальной сети. Виртуальная машина используется для проверки подключения после настройки.
Создание виртуальной машины с помощью New-AzVM. Сгенерируйте локально пару ключей SSH с помощью ssh-keygen и добавьте открытый ключ в конфигурацию виртуальной машины.
## Get credentials for virtual machine ##
$cred = Get-Credential
## Generate an SSH key pair locally ##
$sshKeyPath = Join-Path $HOME '.ssh/id_rsa_vm-1'
ssh-keygen -t rsa -b 4096 -f $sshKeyPath -N '""' -q
$sshPublicKey = Get-Content "$sshKeyPath.pub"
## Create network interface for virtual machine ##
$nic = @{
Name = "nic-1"
ResourceGroupName = 'test-rg'
Location = 'eastus2'
Subnet = $vnet.Subnets[0]
}
$nicVM = New-AzNetworkInterface @nic
## Create a virtual machine configuration ##
$vmsz = @{
VMName = 'vm-1'
VMSize = 'Standard_DS1_v2'
}
$vmos = @{
ComputerName = 'vm-1'
Credential = $cred
DisablePasswordAuthentication = $true
}
$vmimage = @{
PublisherName = 'Canonical'
Offer = '0001-com-ubuntu-server-jammy'
Skus = '22_04-lts-gen2'
Version = 'latest'
}
$vmConfig = New-AzVMConfig @vmsz |
Set-AzVMOperatingSystem @vmos -Linux |
Set-AzVMSourceImage @vmimage |
Add-AzVMNetworkInterface -Id $nicVM.Id
$vmConfig = Add-AzVMSshPublicKey -VM $vmConfig -KeyData $sshPublicKey -Path '/home/azureuser/.ssh/authorized_keys'
## Create the virtual machine ##
$vm = @{
ResourceGroupName = 'test-rg'
Location = 'eastus2'
VM = $vmConfig
}
New-AzVM @vm
Прежде чем перейти к следующему разделу, дождитесь завершения создания виртуальной машины.
Замечание
Виртуальные машины в виртуальной сети с узлом Бастиона Azure не требуют общедоступных IP-адресов. Бастион предоставляет общедоступный IP-адрес, а виртуальные машины используют частные IP-адреса для обмена данными в сети. Вы можете удалить общедоступные IP-адреса из любых виртуальных машин в виртуальных сетях, размещенных в Бастионе. Дополнительные сведения см. в разделе "Отсообщение общедоступного IP-адреса" с виртуальной машины Azure.
Замечание
Azure предоставляет IP-адрес исходящего доступа по умолчанию для виртуальных машин, которым не назначен общий IP-адрес или которые находятся в серверном пуле внутреннего базового балансировщика нагрузки Azure. Механизм IP-адреса исходящего трафика по умолчанию предоставляет исходящий IP-адрес, который нельзя настроить.
IP-адрес исходящего доступа по умолчанию отключен при возникновении одного из следующих событий:
- Общедоступный IP-адрес назначается виртуальной машине.
- Виртуальная машина размещается в серверном пуле стандартной подсистемы балансировки нагрузки с правилами исходящего трафика или без нее.
- Ресурс Azure NAT Gateway присвоен подсети виртуальной машины.
Виртуальные машины, созданные с помощью масштабируемых наборов виртуальных машин в гибком режиме оркестрации, не имеют исходящего доступа по умолчанию.
Для получения дополнительной информации о исходящих подключениях в Azure смотрите раздел Стандартный исходящий доступ в Azure и Использование преобразования сетевых адресов источника (SNAT) для исходящих подключений.
Установка инструментов на виртуальную машину
Установить cifs-utils и Azure CLI на виртуальную машину, запустив shell-скрипт с Invoke-AzVMRunCommand.
Сохраните следующий скрипт в локальный файл с названием install-tools.sh:
#!/bin/bash
sudo apt-get update
sudo apt-get install -y cifs-utils
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
Затем запустите скрипт на виртуальной машине:
$runParams = @{
ResourceGroupName = 'test-rg'
VMName = 'vm-1'
CommandId = 'RunShellScript'
ScriptPath = './install-tools.sh'
}
Invoke-AzVMRunCommand @runParams
Создание учетной записи хранения
Создайте учетную запись хранения Azure с файловым ресурсом, который будет использоваться в качестве ресурса PaaS для тестирования подключения через конечную точку сервиса.
Создайте учетную запись хранения с помощью New-AzStorageAccount. Замените
<storage-account-name>на глобально уникальное имя.$storageParams = @{ ResourceGroupName = 'test-rg' Name = '<storage-account-name>' Location = 'EastUS2' SkuName = 'Standard_LRS' Kind = 'StorageV2' } $storageAccount = New-AzStorageAccount @storageParamsСоздайте общий файловый ресурс с помощью New-AzRmStorageShare.
$shareParams = @{ ResourceGroupName = 'test-rg' StorageAccountName = '<storage-account-name>' Name = 'fileshare-1' } New-AzRmStorageShare @shareParams
Создание публичного IP-префикса
Создайте публичный IP-префикс и публичный IP-адрес для использования в качестве сетевого идентификатора.
Создайте публичный IP-префикс с New-AzPublicIpPrefix.
$prefixParams = @{ ResourceGroupName = 'test-rg' Name = 'public-ip-prefix' Location = 'EastUS2' PrefixLength = 31 Sku = 'Standard' } $ipPrefix = New-AzPublicIpPrefix @prefixParamsСоздайте публичный IP-адрес с префиксом New-AzPublicIpAddress.
$pipParams = @{ ResourceGroupName = 'test-rg' Name = 'public-ip-1' Location = 'EastUS2' AllocationMethod = 'Static' Sku = 'Standard' PublicIpPrefix = $ipPrefix } $publicIp = New-AzPublicIpAddress @pipParams
Настройка сервисных конечных точек с сетевым идентификатором
Этот шаг является ключевой конфигурацией для стандартной точки сервиса. Вы связываете публичный IP-адрес как сетевой идентификатор с сервисными конечными точками в подсети.
Идентификатор сети — это публичный IP-адрес, который вы присваиваете своей конечной точке сервиса. Публичный IP не используется для принятия решений по маршрутизации сети. Когда вы создаёте публичный IP-адрес внутри вашей подписки, он автоматически назначается из выделенного IP-пула вашего сервиса. Сервисы внутри сетевого периметра используют этот публичный IP-адрес для распознавания трафика конечных точек сервиса и настройки соответствующих правил доступа.
Обновите конфигурацию подсети, чтобы добавить конечную точку службы, используя публичный IP-адрес в качестве идентификатора сети, с помощью командлета Set-AzVirtualNetworkSubnetConfig.
$vnet = Get-AzVirtualNetwork -ResourceGroupName 'test-rg' -Name 'vnet-1'
$networkIdentifier = New-Object Microsoft.Azure.Commands.Network.Models.PSResourceId -Property @{
Id = $publicIp.Id
}
$subnetUpdateParams = @{
Name = 'subnet-1'
VirtualNetwork = $vnet
AddressPrefix = '10.0.0.0/24'
ServiceEndpoint = @('Microsoft.Storage')
NetworkIdentifier = $networkIdentifier
}
Set-AzVirtualNetworkSubnetConfig @subnetUpdateParams
$vnet | Set-AzVirtualNetwork
Замечание
Один и тот же публичный IP-адрес может быть назначен всем подсетям региона в рамках подписки. Идентификатор сети поддерживается во всех подписках во время публичного предварительного просмотра.
Создание периметра безопасности сети
Создайте сетевой периметр безопасности и свяжите с ним ваши PaaS-ресурсы.
Создайте сетевой периметр безопасности с помощью New-AzNetworkSecurityPerimeter.
$nspParams = @{ ResourceGroupName = 'test-rg' Name = 'nsp-1' Location = 'EastUS2' } New-AzNetworkSecurityPerimeter @nspParamsСоздайте профиль в периметре сетевой безопасности с помощью New-AzNetworkSecurityPerimeterProfile.
$profileParams = @{ ResourceGroupName = 'test-rg' SecurityPerimeterName = 'nsp-1' Name = 'profile-1' } New-AzNetworkSecurityPerimeterProfile @profileParamsСвяжите свою учётную запись хранения с периметром сетевой безопасности с помощью New-AzNetworkSecurityPerimeterAssociation. Замените
<subscription-id>и<storage-account-name>собственными значениями.$assocParams = @{ ResourceGroupName = 'test-rg' SecurityPerimeterName = 'nsp-1' AssociationName = 'assoc-storage' AccessMode = 'Learning' ProfileId = "/subscriptions/<subscription-id>/resourceGroups/test-rg/providers/Microsoft.Network/networkSecurityPerimeters/nsp-1/profiles/profile-1" PrivateLinkResourceId = "/subscriptions/<subscription-id>/resourceGroups/test-rg/providers/Microsoft.Storage/storageAccounts/<storage-account-name>" } New-AzNetworkSecurityPerimeterAssociation @assocParams
Создайте правило входного доступа по периметру сети безопасности
Добавьте правило входящего доступа на основе IP-адреса в периметре сетевой безопасности для авторизации трафика с вашего сетевого идентификатора. Это правило сопоставляет общедоступный IP-адрес, чтобы разрешить подключение с конечных точек вашей службы.
Создайте правило входящего доступа с помощью New-AzNetworkSecurityPerimeterAccessRule. Замените <public-ip-prefix-range> на диапазон адресов вашего публичного IP-префикса.
$ruleParams = @{
ResourceGroupName = 'test-rg'
SecurityPerimeterName = 'nsp-1'
ProfileName = 'profile-1'
Name = 'allow-se-standard'
Direction = 'Inbound'
AddressPrefix = '<public-ip-prefix-range>'
}
New-AzNetworkSecurityPerimeterAccessRule @ruleParams
Замечание
Чтобы найти диапазон адресов вашего публичного IP-префикса, запустите (Get-AzPublicIpPrefix -ResourceGroupName 'test-rg' -Name 'public-ip-prefix').IpPrefix.
Проверка подключения
Подключитесь к виртуальной машине с помощью Бастион Azure и проверьте подключение к аккаунту хранилища, чтобы убедиться, что трафик авторизован правилом входного доступа по периметру сети.
Подключитесь к виртуальной машине
На портале Azure найдите и выберите Виртуальные машины.
Выберите vm-1.
Выберите Подключить, затем выберите Подключить через Bastion.
На странице Бастиона введите следующую информацию:
Setting Value Тип проверки подлинности Выберите закрытый ключ SSH из локального файла. Имя пользователя Введите azureuser. Локальный файл Выберите файл vm-1-key.pem , который вы скачали при создании виртуальной машины. Нажмите Подключиться.
Тестирование подключения к учетной записи хранения
В сеансе SSH на vm-1 выполните вход в Azure CLI:
az loginПодключите общий файловый ресурс Azure, чтобы проверить подключение к учётной записи хранения через конечную точку службы. Замените
<storage-account-name>именем учетной записи хранения:sudo mkdir -p /mnt/fileshare-1 STORAGE_KEY=$(az storage account keys list \ --resource-group test-rg \ --account-name <storage-account-name> \ --query "[0].value" -o tsv) sudo mount -t cifs //<storage-account-name>.file.core.windows.net/fileshare-1 /mnt/fileshare-1 \ -o username=<storage-account-name>,password=$STORAGE_KEY,serverino,nosharesock,actimeo=30,mfsymlinksПроверьте, что файловый обмен успешно монтируется:
df -h /mnt/fileshare-1Чтобы убедиться, что правило входящего доступа работает, проверьте логи диагностики периметра сетевой безопасности. Для получения дополнительной информации о логах диагностики по периметру безопасности сети см . раздел Диагностический лог для периметра сетевой безопасности.
Очистите ресурсы
Когда вам больше не нужны ресурсы, созданные в этой статье, удалите группу ресурсов:
Remove-AzResourceGroup -Name 'test-rg' -Force