Exercício – Restringir o acesso ao Armazenamento do Azure usando pontos de extremidade de serviço

Concluído

Como o arquiteto de soluções, você pretende mover arquivos confidenciais de diagrama de engenharia para o Armazenamento do Azure. Os arquivos só precisam ser acessíveis em computadores da rede corporativa. Você deseja criar um ponto de extremidade de serviço de rede virtual para o Armazenamento do Azure a fim de proteger a conectividade com suas contas de armazenamento.

Nesta unidade, você criará um ponto de extremidade de serviço e usará regras de rede para restringir o acesso ao Armazenamento do Azure. Você criará um ponto de extremidade de serviço de rede virtual para o Armazenamento do Azure na sub-rede Bancos de Dados. Em seguida, você verificará se a VM DataServer pode acessar o Armazenamento do Azure. Por fim, você verificará se a VM AppServer, que está em outra sub-rede, não pode acessar o armazenamento.

Diagram of exercise scenario service endpoint and rules.

Adicionar regras ao Grupo de Segurança de Rede

Aqui, você garantirá que as comunicações com o Armazenamento do Azure passe pelo ponto de extremidade de serviço. Adicionará as regras de saída para permitir o acesso ao serviço de Armazenamento, mas negará todos os tráfegos da internet.

  1. Para criar uma regra de saída a fim de permitir o acesso ao Armazenamento, execute o seguinte comando no 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. Para criar uma regra de saída a fim de negar todo o acesso à Internet, execute o seguinte comando no 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."
    

Agora você deverá ter as seguintes regras em ERP-SERVERS-NSG:

Nome da regra Direção Prioridade Finalidade
AllowSSHRule Entrada 100 Permitir SSH de entrada
httpRule Entrada 150 Negar acesso do DataServer ao AppServer na porta 80
Allow_Storage Saída 190 Permitir acesso ao Armazenamento do Azure
Deny_Internet Saída 200 Negar acesso à Internet na VNET

Neste ponto, AppServer e DataServer têm acesso ao serviço de Armazenamento do Azure.

Configurar uma conta de armazenamento e um compartilhamento de arquivo

Nesta etapa, você criará uma conta de armazenamento e, em seguida, adicionará um compartilhamento de arquivo do Azure a ela. Esse compartilhamento de arquivo é o local em que você armazenará seus diagramas de engenharia.

  1. Para criar uma conta de armazenamento para documentos de engenharia, execute o seguinte comando no Cloud Shell:

    STORAGEACCT=$(az storage account create \
                    --resource-group $rg \
                    --name engineeringdocs$RANDOM \
                    --sku Standard_LRS \
                    --query "name" | tr -d '"')
    
  2. Para armazenar a chave primária da sua conta de armazenamento em uma variável, execute o seguinte comando no Cloud Shell:

    STORAGEKEY=$(az storage account keys list \
                    --resource-group $rg \
                    --account-name $STORAGEACCT \
                    --query "[0].value" | tr -d '"')
    
  3. Para criar um compartilhamento de arquivo do Azure chamado erp-data-share, execute o seguinte comando no Cloud Shell:

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

Habilitar o ponto de extremidade de serviço

Agora você precisa configurar a conta de armazenamento para que ela esteja acessível somente nos servidores de banco de dados, atribuindo o ponto de extremidade de armazenamento à sub-rede Bancos de Dados. Em seguida, você precisa adicionar uma regra de segurança à conta de armazenamento.

  1. Para atribuir o ponto de extremidade Microsoft.Storage à sub-rede, execute o seguinte comando no Cloud Shell:

    az network vnet subnet update \
        --vnet-name ERP-servers \
        --resource-group $rg \
        --name Databases \
        --service-endpoints Microsoft.Storage
    
  2. Para negar todo o acesso, altere a ação padrão para Deny executando o comando a seguir no Cloud Shell. Depois que o acesso à rede for negado, a conta de armazenamento não poderá ser acessada em nenhuma rede.

    az storage account update \
        --resource-group $rg \
        --name $STORAGEACCT \
        --default-action Deny
    
  3. Para restringir o acesso à conta de armazenamento, execute o comando a seguir no Cloud Shell. Por padrão, as contas de armazenamento são abertas para aceitar todo o tráfego. Você deseja que apenas o tráfego da sub-rede Bancos de Dados possa acessar o armazenamento.

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

Testar o acesso aos recursos de armazenamento

Nesta etapa, você se conectará aos dois servidores e verificará se apenas o DataServer tem acesso ao compartilhamento de arquivos do Azure na conta de armazenamento.

  1. Para salvar os endereços IP públicos de AppServer e DataServer em variáveis, execute o seguinte comando no Cloud Shell:

    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. Para se conectar à VM AppServer e tentar montar o compartilhamento de arquivos do Azure, execute o seguinte comando no 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. Insira a senha que você usou quando criou a VM.

  4. A resposta deverá incluir uma mensagem mount error. Essa conexão não é permitida porque não há nenhum ponto de extremidade de serviço para a conta de armazenamento na sub-rede Aplicativos.

  5. Para se conectar à VM DataServer e tentar montar o compartilhamento de arquivo do Azure, execute o seguinte comando no 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. Insira a senha que você usou quando criou a VM.

  7. A montagem deve ser bem-sucedida e a resposta deverá incluir detalhes do ponto de montagem. Isso é permitido, pois você criou o ponto de extremidade de serviço para a conta de armazenamento na sub-rede Bancos de Dados.

Usando o ponto de extremidade de serviço de armazenamento na sub-rede Databases, você já verificou que DataServer pode acessar o armazenamento. Você também verificou que AppServer não é capaz de acessar o armazenamento. Isso ocorre porque esse servidor está em outra sub-rede e não tem acesso ao ponto de extremidade de serviço de rede virtual.