Упражнение. Ограничение доступа к службе хранилища Azure с помощью конечных точек службы
Как архитектор решений, вы планируете переместить конфиденциальные файлы инженерных схем в службу хранилища Azure. Файлы должны быть доступны только с компьютеров в корпоративной сети. Вы хотите создать конечную точку службы для виртуальной сети для службы хранилища Azure с целью защитить подключения к учетным записям хранения.
В этом модуле вам предстоит создать конечную точку службы и использовать правила сети для ограничения доступа к службе хранилища Azure. Вы создадите конечную точку службы для виртуальной сети для службы хранилища Azure в подсети Databases. Затем вы убедитесь, что ваша виртуальная машина DataServer может получить доступ к службе хранилища Azure. Наконец, вам предстоит убедиться, что виртуальная машина AppServer, которая находится в другой подсети, не может получить доступ к хранилищу.
Добавьте правила в группу безопасности сети
Здесь вы убедитесь, что обмен данными с служба хранилища Azure передается через конечную точку службы. Вы добавите правила исходящего трафика, чтобы разрешить доступ к службе служба хранилища, но запретить весь другой интернет-трафик.
Выполните следующую команду в Cloud Shell, чтобы создать правило для исходящего трафика, разрешающее доступ к хранилищу.
az network nsg rule create \ --resource-group $rg \ --nsg-name ERP-SERVERS-NSG \ --name Allow_Storage \ --priority 190 \ --direction Outbound \ --source-address-prefixes "VirtualNetwork" \ --source-port-ranges '*' \ --destination-address-prefixes "Storage" \ --destination-port-ranges '*' \ --access Allow \ --protocol '*' \ --description "Allow access to Azure Storage"
Выполните приведенную ниже команду в Cloud Shell, чтобы создать правило для исходящего трафика, запрещающее доступ к Интернету.
az network nsg rule create \ --resource-group $rg \ --nsg-name ERP-SERVERS-NSG \ --name Deny_Internet \ --priority 200 \ --direction Outbound \ --source-address-prefixes "VirtualNetwork" \ --source-port-ranges '*' \ --destination-address-prefixes "Internet" \ --destination-port-ranges '*' \ --access Deny \ --protocol '*' \ --description "Deny access to Internet."
В группе безопасности сети ERP-SERVERS-NSG должны появиться следующие правила:
Имя правила | Направление | Приоритет | Цель |
---|---|---|---|
AllowSSHRule | Входящий трафик | 100 | Разрешение входящего трафика SSH |
httpRule | Входящий трафик | 150 | Запретить трафик из DataServer в AppServer через 80 порт |
Allow_Storage | Исходящие | 190 | Разрешить доступ к службе хранилища Azure |
Deny_Internet | Исходящие | 200 | Запретить доступ к Интернету из виртуальной сети |
На этом этапе и AppServer, и DataServer имеют доступ к службе хранилища Azure.
Настройка учетной записи хранения и общей папки
На этом шаге вам нужно создать учетную запись хранения и добавить в нее общую папку Azure. В этой общей папке хранятся схемы проектирования.
Выполните приведенную ниже команду в Cloud Shell, чтобы создать учетную запись хранения для инженерных документов.
STORAGEACCT=$(az storage account create \ --resource-group $rg \ --name engineeringdocs$RANDOM \ --sku Standard_LRS \ --query "name" | tr -d '"')
Чтобы сохранить первичный ключ учетной записи хранения в переменной, выполните следующую команду в Cloud Shell:
STORAGEKEY=$(az storage account keys list \ --resource-group $rg \ --account-name $STORAGEACCT \ --query "[0].value" | tr -d '"')
Выполните приведенную ниже команду в Cloud Shell для создания общей папки Azure с именем erp-data-share.
az storage share create \ --account-name $STORAGEACCT \ --account-key $STORAGEKEY \ --name "erp-data-share"
Включите конечную точку службы
Теперь необходимо настроить учетную запись хранения, чтобы она была доступна только с серверов баз данных, назначив конечную точку хранилища подсети баз данных . Затем потребуется добавить правило безопасности для учетной записи хранения.
Выполните приведенную ниже команду в Cloud Shell, чтобы назначить конечную точку Microsoft.Storage для подсети.
az network vnet subnet update \ --vnet-name ERP-servers \ --resource-group $rg \ --name Databases \ --service-endpoints Microsoft.Storage
Чтобы запретить доступ, измените действие
Deny
по умолчанию, выполнив следующую команду в Cloud Shell. После того как доступ к сети запрещен, учетная запись хранения недоступна из любой сети.az storage account update \ --resource-group $rg \ --name $STORAGEACCT \ --default-action Deny
Выполните приведенную ниже команду в Cloud Shell, чтобы ограничить доступ к учетной записи хранения. По умолчанию учетные записи хранения открыты для любого трафика. Вам нужно разрешить доступ к хранилищу только для трафика из подсети баз данных.
az storage account network-rule add \ --resource-group $rg \ --account-name $STORAGEACCT \ --vnet-name ERP-servers \ --subnet Databases
Проверка доступа к ресурсам хранилища
На этом шаге вы подключитесь к обоим серверам и убедитесь, что только DataServer имеет доступ к общей папке Azure в учетной записи хранения.
Выполните приведенную ниже команду в Cloud Shell, чтобы сохранить общедоступные IP-адреса AppServer и DataServer в переменных.
APPSERVERIP="$(az vm list-ip-addresses \ --resource-group $rg \ --name AppServer \ --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \ --output tsv)" DATASERVERIP="$(az vm list-ip-addresses \ --resource-group $rg \ --name DataServer \ --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \ --output tsv)"
Чтобы подключиться к виртуальной машине AppServer и попытаться подключить общую папку Azure, выполните следующую команду в Cloud Shell:
ssh -t azureuser@$APPSERVERIP \ "mkdir azureshare; \ sudo mount -t cifs //$STORAGEACCT.file.core.windows.net/erp-data-share azureshare \ -o vers=3.0,username=$STORAGEACCT,password=$STORAGEKEY,dir_mode=0777,file_mode=0777,sec=ntlmssp; findmnt \ -t cifs; exit; bash"
Введите пароль, который использовался при создании виртуальной машины.
Ответ должен содержать сообщение
mount error
. Это подключение запрещено, так как в подсети приложений нет конечной точки службы для учетной записи хранения.Чтобы подключиться к виртуальной машине DataServer и попытаться подключить общую папку Azure, выполните следующую команду в Cloud Shell:
ssh -t azureuser@$DATASERVERIP \ "mkdir azureshare; \ sudo mount -t cifs //$STORAGEACCT.file.core.windows.net/erp-data-share azureshare \ -o vers=3.0,username=$STORAGEACCT,password=$STORAGEKEY,dir_mode=0777,file_mode=0777,sec=ntlmssp;findmnt \ -t cifs; exit; bash"
Введите пароль, который использовался при создании виртуальной машины.
Подключение должно завершиться успешно, и ответ должен содержать сведения о точке подключения. Это допустимо, так как вы создали конечную точку службы для учетной записи хранения в подсети Databases.
Теперь с помощью конечной точки службы хранилища в подсети Databases вы убедились в том, что DataServer имеет доступ к службе хранилища. Вы также убедились в том, что у AppServer нет доступа к службе хранилища. Это связано с тем, что этот сервер находится в другой подсети и не имеет доступа к конечной точке службы виртуальной сети.