Упражнение. Ограничение доступа к службе хранилища Azure с помощью конечных точек службы

Завершено

Как архитектор решений, вы планируете переместить конфиденциальные файлы инженерных схем в службу хранилища Azure. Файлы должны быть доступны только с компьютеров в корпоративной сети. Вы хотите создать конечную точку службы для виртуальной сети для службы хранилища Azure с целью защитить подключения к учетным записям хранения.

В этом модуле вам предстоит создать конечную точку службы и использовать правила сети для ограничения доступа к службе хранилища Azure. Вы создадите конечную точку службы для виртуальной сети для службы хранилища Azure в подсети Databases. Затем вы убедитесь, что ваша виртуальная машина DataServer может получить доступ к службе хранилища Azure. Наконец, вам предстоит убедиться, что виртуальная машина AppServer, которая находится в другой подсети, не может получить доступ к хранилищу.

Diagram of exercise scenario service endpoint and rules.

Добавьте правила в группу безопасности сети

Здесь вы убедитесь, что обмен данными с служба хранилища Azure передается через конечную точку службы. Вы добавите правила исходящего трафика, чтобы разрешить доступ к службе служба хранилища, но запретить весь другой интернет-трафик.

  1. Выполните следующую команду в 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"
    
  2. Выполните приведенную ниже команду в 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. В этой общей папке хранятся схемы проектирования.

  1. Выполните приведенную ниже команду в Cloud Shell, чтобы создать учетную запись хранения для инженерных документов.

    STORAGEACCT=$(az storage account create \
                    --resource-group $rg \
                    --name engineeringdocs$RANDOM \
                    --sku Standard_LRS \
                    --query "name" | tr -d '"')
    
  2. Чтобы сохранить первичный ключ учетной записи хранения в переменной, выполните следующую команду в Cloud Shell:

    STORAGEKEY=$(az storage account keys list \
                    --resource-group $rg \
                    --account-name $STORAGEACCT \
                    --query "[0].value" | tr -d '"')
    
  3. Выполните приведенную ниже команду в Cloud Shell для создания общей папки Azure с именем erp-data-share.

    az storage share create \
        --account-name $STORAGEACCT \
        --account-key $STORAGEKEY \
        --name "erp-data-share"
    

Включите конечную точку службы

Теперь необходимо настроить учетную запись хранения, чтобы она была доступна только с серверов баз данных, назначив конечную точку хранилища подсети баз данных . Затем потребуется добавить правило безопасности для учетной записи хранения.

  1. Выполните приведенную ниже команду в Cloud Shell, чтобы назначить конечную точку Microsoft.Storage для подсети.

    az network vnet subnet update \
        --vnet-name ERP-servers \
        --resource-group $rg \
        --name Databases \
        --service-endpoints Microsoft.Storage
    
  2. Чтобы запретить доступ, измените действие Deny по умолчанию, выполнив следующую команду в Cloud Shell. После того как доступ к сети запрещен, учетная запись хранения недоступна из любой сети.

    az storage account update \
        --resource-group $rg \
        --name $STORAGEACCT \
        --default-action Deny
    
  3. Выполните приведенную ниже команду в Cloud Shell, чтобы ограничить доступ к учетной записи хранения. По умолчанию учетные записи хранения открыты для любого трафика. Вам нужно разрешить доступ к хранилищу только для трафика из подсети баз данных.

    az storage account network-rule add \
        --resource-group $rg \
        --account-name $STORAGEACCT \
        --vnet-name ERP-servers \
        --subnet Databases
    

Проверка доступа к ресурсам хранилища

На этом шаге вы подключитесь к обоим серверам и убедитесь, что только DataServer имеет доступ к общей папке Azure в учетной записи хранения.

  1. Выполните приведенную ниже команду в 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)"
    
  2. Чтобы подключиться к виртуальной машине 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"
    
  3. Введите пароль, который использовался при создании виртуальной машины.

  4. Ответ должен содержать сообщение mount error. Это подключение запрещено, так как в подсети приложений нет конечной точки службы для учетной записи хранения.

  5. Чтобы подключиться к виртуальной машине 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"
    
  6. Введите пароль, который использовался при создании виртуальной машины.

  7. Подключение должно завершиться успешно, и ответ должен содержать сведения о точке подключения. Это допустимо, так как вы создали конечную точку службы для учетной записи хранения в подсети Databases.

Теперь с помощью конечной точки службы хранилища в подсети Databases вы убедились в том, что DataServer имеет доступ к службе хранилища. Вы также убедились в том, что у AppServer нет доступа к службе хранилища. Это связано с тем, что этот сервер находится в другой подсети и не имеет доступа к конечной точке службы виртуальной сети.