Share via


Gerenciar a exfiltração de dados para contas de Armazenamento do Azure com políticas de ponto de extremidade do serviço de rede virtual usando a CLI do Azure

As políticas de ponto de extremidade do serviço de rede virtual permitem que você aplique controle de acesso em contas de Armazenamento do Azure de dentro de uma rede virtual sobre pontos de extremidade de serviço. Essa é uma chave para proteger suas cargas de trabalho, gerenciar quais contas de armazenamento são permitidas e onde a exfiltração de dados é permitida. Neste artigo, vai aprender a:

  • Crie uma rede virtual e adicione uma sub-rede.
  • Habilite o ponto de extremidade de serviço para o Armazenamento do Azure.
  • Crie duas contas de Armazenamento do Azure e permita o acesso de rede a elas a partir da sub-rede criada acima.
  • Crie uma política de ponto de extremidade de serviço para permitir o acesso apenas a uma das contas de armazenamento.
  • Implante uma máquina virtual (VM) na sub-rede.
  • Confirme o acesso à conta de armazenamento permitida a partir da sub-rede.
  • Confirme se o acesso é negado à conta de armazenamento não permitida da sub-rede.

Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.

Pré-requisitos

  • Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, consulte Guia de início rápido para Bash no Azure Cloud Shell.

  • Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.

    • Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Entrar com a CLI do Azure.

    • Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.

    • Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.

  • Este artigo requer a versão 2.0.28 ou posterior da CLI do Azure. Se estiver usando o Azure Cloud Shell, a versão mais recente já está instalada.

Criar uma rede virtual

Antes de criar uma rede virtual, você precisa criar um grupo de recursos para a rede virtual e todos os outros recursos criados neste artigo. Crie um grupo de recursos com az group create. O exemplo seguinte cria um grupo de recursos com o nome myResourceGroup na localização eastus.

az group create \
  --name myResourceGroup \
  --location eastus

Crie uma rede virtual com uma sub-rede com az network vnet create.

az network vnet create \
  --name myVirtualNetwork \
  --resource-group myResourceGroup \
  --address-prefix 10.0.0.0/16 \
  --subnet-name Private \
  --subnet-prefix 10.0.0.0/24

Ativar um ponto final de serviço

Neste exemplo, um ponto de extremidade de serviço para Microsoft.Storage é criado para a sub-rede Private:

az network vnet subnet create \
  --vnet-name myVirtualNetwork \
  --resource-group myResourceGroup \
  --name Private \
  --address-prefix 10.0.0.0/24 \
  --service-endpoints Microsoft.Storage

Restringir o acesso de rede a uma sub-rede

Crie um grupo de segurança de rede com az network nsg create. O exemplo a seguir cria um grupo de segurança de rede chamado myNsgPrivate.

az network nsg create \
  --resource-group myResourceGroup \
  --name myNsgPrivate

Associe o grupo de segurança de rede à sub-rede privada com a atualização da sub-rede az network vnet. O exemplo a seguir associa o grupo de segurança de rede myNsgPrivate à sub-rede privada :

az network vnet subnet update \
  --vnet-name myVirtualNetwork \
  --name Private \
  --resource-group myResourceGroup \
  --network-security-group myNsgPrivate

Crie regras de segurança com az network nsg rule create. A regra a seguir permite acesso de saída aos endereços IP públicos atribuídos ao serviço de Armazenamento do Azure:

az network nsg rule create \
  --resource-group myResourceGroup \
  --nsg-name myNsgPrivate \
  --name Allow-Storage-All \
  --access Allow \
  --protocol "*" \
  --direction Outbound \
  --priority 100 \
  --source-address-prefix "VirtualNetwork" \
  --source-port-range "*" \
  --destination-address-prefix "Storage" \
  --destination-port-range "*"

Cada grupo de segurança de rede contém várias regras de segurança padrão. A regra a seguir substitui uma regra de segurança padrão que permite acesso de saída a todos os endereços IP públicos. A destination-address-prefix "Internet" opção nega acesso de saída a todos os endereços IP públicos. A regra anterior substitui essa regra, devido à sua prioridade mais alta, que permite o acesso aos endereços IP públicos do Armazenamento do Azure.

az network nsg rule create \
  --resource-group myResourceGroup \
  --nsg-name myNsgPrivate \
  --name Deny-Internet-All \
  --access Deny \
  --protocol "*" \
  --direction Outbound \
  --priority 110 \
  --source-address-prefix "VirtualNetwork" \
  --source-port-range "*" \
  --destination-address-prefix "Internet" \
  --destination-port-range "*"

A regra a seguir permite a entrada de tráfego SSH na sub-rede de qualquer lugar. A regra substitui uma regra de segurança predefinida que nega todo o tráfego de entrada a partir da Internet. SSH é permitido para a sub-rede para que a conectividade possa ser testada em uma etapa posterior.

az network nsg rule create \
  --resource-group myResourceGroup \
  --nsg-name myNsgPrivate \
  --name Allow-SSH-All \
  --access Allow \
  --protocol Tcp \
  --direction Inbound \
  --priority 120 \
  --source-address-prefix "*" \
  --source-port-range "*" \
  --destination-address-prefix "VirtualNetwork" \
  --destination-port-range "22"

Restringir o acesso à rede às contas de Armazenamento do Azure

Esta seção lista as etapas para restringir o acesso à rede para uma conta de Armazenamento do Azure a partir de uma sub-rede determinada em uma rede virtual por meio do ponto de extremidade de serviço.

Criar uma conta de armazenamento

Crie duas contas de armazenamento do Azure com az storage account create.

storageAcctName1="allowedstorageacc"

az storage account create \
  --name $storageAcctName1 \
  --resource-group myResourceGroup \
  --sku Standard_LRS \
  --kind StorageV2

storageAcctName2="notallowedstorageacc"

az storage account create \
  --name $storageAcctName2 \
  --resource-group myResourceGroup \
  --sku Standard_LRS \
  --kind StorageV2

Depois que as contas de armazenamento forem criadas, recupere a cadeia de conexão para as contas de armazenamento em uma variável com az storage account show-connection-string. A cadeia de conexão é usada para criar um compartilhamento de arquivos em uma etapa posterior.

saConnectionString1=$(az storage account show-connection-string \
  --name $storageAcctName1 \
  --resource-group myResourceGroup \
  --query 'connectionString' \
  --out tsv)

saConnectionString2=$(az storage account show-connection-string \
  --name $storageAcctName2 \
  --resource-group myResourceGroup \
  --query 'connectionString' \
  --out tsv)

Exiba o conteúdo da variável e anote o valor de AccountKey retornado na saída, porque ele é usado em uma etapa posterior.

echo $saConnectionString1

echo $saConnectionString2

Criar uma partilha de ficheiros na conta de Armazenamento

Crie um compartilhamento de arquivos na conta de armazenamento com az storage share create. Em uma etapa posterior, esse compartilhamento de arquivos é montado para confirmar o acesso da rede a ele.

az storage share create \
  --name my-file-share \
  --quota 2048 \
  --connection-string $saConnectionString1 > /dev/null

az storage share create \
  --name my-file-share \
  --quota 2048 \
  --connection-string $saConnectionString2 > /dev/null

Negar todo o acesso de rede à conta de armazenamento

Por predefinição, as contas de Armazenamento aceitam ligações de rede de clientes em qualquer rede. Para limitar o acesso às redes selecionadas, altere a ação padrão para Negar com a atualização da conta de armazenamento az. Assim que o acesso de rede for negado, a conta de armazenamento não será acessível a partir de nenhuma rede.

az storage account update \
  --name $storageAcctName1 \
  --resource-group myResourceGroup \
  --default-action Deny

az storage account update \
  --name $storageAcctName2 \
  --resource-group myResourceGroup \
  --default-action Deny

Habilitar o acesso à rede a partir da sub-rede de rede virtual

Permita o acesso de rede à conta de armazenamento a partir da sub-rede privada com az storage account network-rule add.

az storage account network-rule add \
  --resource-group myResourceGroup \
  --account-name $storageAcctName1 \
  --vnet-name myVirtualNetwork \
  --subnet Private

az storage account network-rule add \
  --resource-group myResourceGroup \
  --account-name $storageAcctName2 \
  --vnet-name myVirtualNetwork \
  --subnet Private

Aplicar política para permitir o acesso a uma conta de armazenamento válida

As políticas do Ponto de Extremidade do Serviço do Azure só estão disponíveis para o Armazenamento do Azure. Portanto, habilitaremos o Service Endpoint for Microsoft.Storage nesta sub-rede para este exemplo de configuração.

As políticas de ponto de extremidade de serviço são aplicadas sobre pontos de extremidade de serviço. Começaremos criando uma política de ponto final de serviço. Em seguida, criaremos as definições de política sob esta política para que as contas de Armazenamento do Azure sejam aprovadas para essa sub-rede

Criar uma política de ponto de extremidade de serviço

az network service-endpoint policy create \
  --resource-group myResourceGroup \
  --name mysepolicy \
  --location eastus

Salve o URI do recurso para a conta de armazenamento permitida em uma variável. Antes de executar o comando abaixo, substitua <your-subscription-id> pelo valor real do seu ID de assinatura.

$serviceResourceId="/subscriptions/<your-subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.Storage/storageAccounts/allowedstorageacc"

Criar & adicionar uma definição de política para permitir a conta de Armazenamento do Azure acima à política de ponto de extremidade do serviço

az network service-endpoint policy-definition create \
  --resource-group myResourceGroup \
  --policy-name mysepolicy \
  --name mypolicydefinition \
  --service "Microsoft.Storage" \
  --service-resources $serviceResourceId

E atualize a sub-rede de rede virtual para associar a ela a política de ponto de extremidade de serviço criada na etapa anterior

az network vnet subnet update \
  --vnet-name myVirtualNetwork \
  --resource-group myResourceGroup \
  --name Private \
  --service-endpoints Microsoft.Storage \
  --service-endpoint-policy mysepolicy

Validar a restrição de acesso às contas de Armazenamento do Azure

Criar a máquina virtual

Para testar o acesso de rede a uma conta de armazenamento, implante uma VM na sub-rede.

Crie uma VM na sub-rede privada com az vm create. Se as chaves SSH ainda não existirem numa localização de chaves predefinida, o comando cria-as. Para utilizar um conjunto específico de chaves, utilize a opção --ssh-key-value.

az vm create \
  --resource-group myResourceGroup \
  --name myVmPrivate \
  --image <SKU linux image> \
  --vnet-name myVirtualNetwork \
  --subnet Private \
  --generate-ssh-keys

A criação da VM demora alguns minutos. Após a criação, anote o publicIpAddress na saída retornada. Esse endereço é usado para acessar a VM da Internet em uma etapa posterior.

Confirmar o acesso à conta de Armazenamento

SSH na VM myVmPrivate . Substitua publicIpAddress> pelo endereço IP público da sua VM myVmPrivate.<

ssh <publicIpAddress>

Crie uma pasta para um ponto de montagem:

sudo mkdir /mnt/MyAzureFileShare1

Monte o compartilhamento de arquivos do Azure no diretório que você criou. Antes de executar o comando abaixo, substitua storage-account-key> pelo valor de AccountKey de $saConnectionString 1.<

sudo mount --types cifs //allowedstorageacc.file.core.windows.net/my-file-share /mnt/MyAzureFileShare1 --options vers=3.0,username=allowedstorageacc,password=<storage-account-key>,dir_mode=0777,file_mode=0777,serverino

Você recebe a user@myVmPrivate:~$ solicitação. O compartilhamento de arquivos do Azure montado com êxito em /mnt/MyAzureFileShare.

Confirmar que o acesso à conta de Armazenamento é negado

A partir da mesma VM myVmPrivate, crie um diretório para um ponto de montagem:

sudo mkdir /mnt/MyAzureFileShare2

Tente montar o compartilhamento de arquivos do Azure da conta de armazenamento notallowedstorageacc para o diretório que você criou. Este artigo pressupõe que você implantou a versão mais recente da distribuição Linux. Se você estiver usando versões anteriores da distribuição Linux, consulte Montar no Linux para obter instruções adicionais sobre como montar compartilhamentos de arquivos.

Antes de executar o comando abaixo, substitua storage-account-key> pelo valor de AccountKey de $saConnectionString 2.<

sudo mount --types cifs //notallowedstorageacc.file.core.windows.net/my-file-share /mnt/MyAzureFileShare2 --options vers=3.0,username=notallowedstorageacc,password=<storage-account-key>,dir_mode=0777,file_mode=0777,serverino

O acesso é negado e você recebe um mount error(13): Permission denied erro, porque essa conta de armazenamento não está na lista de permissões da política de ponto de extremidade de serviço que aplicamos à sub-rede.

Saia da sessão SSH para a VM myVmPublic .

Clean up resources (Limpar recursos)

Quando não for mais necessário, use az group delete para remover o grupo de recursos e todos os recursos que ele contém.

az group delete --name myResourceGroup --yes

Próximos passos

Neste artigo, você aplicou uma política de ponto de extremidade de serviço sobre um ponto de extremidade de serviço de rede virtual do Azure ao Armazenamento do Azure. Você criou contas de Armazenamento do Azure e limitou o acesso à rede a apenas determinadas contas de armazenamento (e, portanto, negou outras) de uma sub-rede de rede virtual. Para saber mais sobre as políticas de ponto de extremidade de serviço, consulte Visão geral das políticas de pontos de extremidade de serviço.