Exercício – Restringir o acesso ao Armazenamento do Microsoft Azure com pontos finais de serviço

Concluído

Como arquiteto de soluções, está a planear mover ficheiros dos diagramas de engenharia confidenciais para o Armazenamento do Microsoft Azure. Os ficheiros têm de ser acessíveis apenas a partir dos computadores dentro da rede empresarial. Quer criar um ponto final de serviço de rede virtual para o Armazenamento do Microsoft Azure para proteger a conectividade com as suas contas de armazenamento.

Nesta unidade, irá criar um ponto final de serviço e utilizar regras de rede para restringir o acesso ao Armazenamento do Azure. Vai criar um ponto final de serviço de rede virtual para o Armazenamento do Microsoft Azure na sub-rede Bases de dados. Em seguida, irá verificar se a VM DataServer consegue aceder ao Armazenamento do Azure. Por fim, irá confirmar que a VM AppServer, que está numa sub-rede diferente, não consegue aceder ao 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 passem pelo ponto de extremidade do serviço. Você adicionará regras de saída para permitir o acesso ao serviço de armazenamento, mas negará todo o restante tráfego da Internet.

  1. Para criar uma regra de saída para 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 para 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."
    

Deverá ter as seguintes regras em ERP-SERVERS-NSG:

Nome da regra Direção Prioridade Objetivo
AllowSSHRule Interna 100 Permitir SSH de entrada
httpRule Interna 150 Negar de DataServer para AppServer na porta 80
Allow_Storage De Saída 185 Permitir o acesso ao Armazenamento do Azure
Deny_Internet De Saída 200 Negar o acesso à Internet a partir da VNet

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

Configurar a conta de armazenamento e a partilha de ficheiros

Nesta etapa, você criará uma nova conta de armazenamento e adicionará um compartilhamento de arquivos do Azure a essa conta. Esse compartilhamento de arquivos é onde 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 arquivos 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"
    

Ativar o ponto final de serviço

Agora você precisa configurar a conta de armazenamento para ser acessível somente a partir de 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 seguinte comando no Cloud Shell. Depois que o acesso à rede é negado, a conta de armazenamento não é acessível a partir de nenhuma rede.

    az storage account update \
        --resource-group $rg \
        --name $STORAGEACCT \
        --default-action Deny
    
  3. Para restringir o acesso à conta de armazenamento, execute o seguinte comando no Cloud Shell. Por predefinição, as contas de armazenamento estão abertas para aceitar todo o tráfego. Pretende que apenas o tráfego da sub-rede Bases de dados consiga aceder ao 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á a ambos os 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 à sua VM do 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. Introduza a palavra-passe que utilizou quando criou a VM.

  4. A resposta deve 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 à sua VM DataServer e tentar montar o compartilhamento de arquivos 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. Introduza a palavra-passe que utilizou quando criou a VM.

  7. A montagem deve ser bem-sucedida e a resposta deve incluir detalhes do ponto de montagem. Tal é permitido porque criou o ponto final de serviço para a conta de armazenamento na sub-rede Bases de dados.

Ao utilizar o ponto final de serviço de armazenamento na sub-rede Bases de dados, confirmou que o DataServer pode aceder ao armazenamento. Também confirmou que o AppServer não consegue aceder ao armazenamento. Isso ocorre porque esse servidor está em uma sub-rede diferente e não tem acesso ao ponto de extremidade do serviço de rede virtual.