Share via


Gestire l'esfiltrazione dei dati per Archiviazione di Azure account con i criteri dell'endpoint servizio di rete virtuale tramite l'interfaccia della riga di comando di Azure

I criteri degli endpoint servizio di rete virtuale consentono di applicare il controllo di accesso agli account Archiviazione di Azure dall'interno di una rete virtuale sugli endpoint di servizio. Si tratta di una chiave per la protezione dei carichi di lavoro, la gestione degli account di archiviazione consentiti e la posizione in cui è consentita l'esfiltrazione dei dati. In questo articolo vengono illustrate le operazioni seguenti:

  • Creare una rete virtuale e aggiungere una subnet.
  • Abilitare l'endpoint di servizio per Archiviazione di Azure.
  • Creare due account Archiviazione di Azure e consentire l'accesso alla rete dalla subnet creata in precedenza.
  • Creare un criterio dell'endpoint di servizio per consentire l'accesso solo a uno degli account di archiviazione.
  • Distribuire una macchina virtuale (VM) nella subnet.
  • Confermare l'accesso all'account di archiviazione consentito dalla subnet.
  • Verificare che l'accesso venga negato all'account di archiviazione non consentito dalla subnet.

Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.

Prerequisiti

  • Questo articolo richiede l'interfaccia della riga di comando di Azure versione 2.0.28 o successiva. Se si usa Azure Cloud Shell, la versione più recente è già installata.

Creare una rete virtuale

Prima di creare una rete virtuale, è necessario creare un gruppo di risorse per la rete virtuale e tutte le altre risorse create in questo articolo. Come prima cosa creare un gruppo di risorse con az group create. L'esempio seguente crea un gruppo di risorse denominato myResourceGroup nella località stati uniti orientali.

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

Creare una rete virtuale con una subnet con 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

Abilitare un endpoint di servizio

In questo esempio viene creato un endpoint di servizio per Microsoft.Archiviazione per la subnet Privata:

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

Limitare l'accesso di rete per una subnet

Creare un gruppo di sicurezza di rete con il comando az network nsg create. L'esempio seguente crea un gruppo di sicurezza di rete denominato myNsgPrivate.

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

Associare la subnet del gruppo di sicurezza di rete alla subnet privata con az network vnet subnet update. L'esempio seguente associa il gruppo di sicurezza di rete myNsgPrivate alla subnet privata:

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

Creare le regole di sicurezza con az network nsg rule create. La regola che segue consente l'accesso in uscita agli indirizzi IP pubblici assegnati al servizio Archiviazione di 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 "*"

Ogni gruppo di sicurezza di rete contiene diverse regole di sicurezza predefinite. La regola seguente esegue l'override di una regola di sicurezza predefinita che consente l'accesso in uscita a tutti gli indirizzi IP pubblici. L'opzione destination-address-prefix "Internet" nega l'accesso in uscita a tutti gli indirizzi IP pubblici. La regola precedente esegue l'override di questa regola, a causa della priorità più alta, che consente l'accesso agli indirizzi IP pubblici di Archiviazione di 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 "*"

La regola seguente consente il traffico SSH in ingresso verso la subnet da qualsiasi posizione. La regola esegue l'override di una regola di sicurezza predefinita che rifiuta tutto il traffico in ingresso da Internet. SSH è autorizzato alla subnet in modo che la connettività possa essere testata in un passaggio successivo.

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"

Limitare l'accesso alla rete agli account Archiviazione di Azure

Questa sezione elenca i passaggi per limitare l'accesso alla rete per un account Archiviazione di Azure dalla subnet specificata in una rete virtuale tramite l'endpoint di servizio.

Creare un account di archiviazione

Creare due account di archiviazione di Azure con 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

Dopo aver creato gli account di archiviazione, recuperare il stringa di connessione per gli account di archiviazione in una variabile con az storage account show-connection-string. La stringa di connessione viene usata per creare una condivisione file in un passaggio successivo.

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)

Visualizzare i contenuti della variabile e prendere nota del valore di AccountKey restituito nell'output, perché verrà usato in un passaggio successivo.

echo $saConnectionString1

echo $saConnectionString2

Creare una condivisione file nell'account di archiviazione

Creare una condivisione file nell'account di archiviazione con az storage share create. In un passaggio successivo questa condivisione file verrà montata per verificare l'accesso di rete.

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

Negare l'accesso alla rete all'account di archiviazione

Per impostazione predefinita, gli account di archiviazione accettano connessioni di rete dai client in qualsiasi rete. Per limitare l'accesso alle reti selezionate, modificare l'azione predefinita impostandola su Deny con az storage account update. Dopo che l'accesso di rete è stato rifiutato, l'account di archiviazione non è accessibile da nessuna rete.

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

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

Abilitare l'accesso alla rete dalla subnet di rete virtuale

Consentire l'accesso di rete all'account di archiviazione dalla subnet privata con 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

Applicare i criteri per consentire l'accesso all'account di archiviazione valido

I criteri degli endpoint di servizio di Azure sono disponibili solo per Archiviazione di Azure. Si abiliterà quindi l'endpoint di servizio per Microsoft.Archiviazione in questa subnet per questa configurazione di esempio.

I criteri degli endpoint di servizio vengono applicati agli endpoint di servizio. Si inizierà creando un criterio dell'endpoint di servizio. Verranno quindi create le definizioni dei criteri in base a questo criterio per l'approvazione degli account Archiviazione di Azure per questa subnet

Creare un criterio di endpoint di servizio

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

Salvare l'URI della risorsa per l'account di archiviazione consentito in una variabile. Prima di eseguire il comando seguente, sostituire <your-subscription-id> con il valore effettivo dell'ID sottoscrizione.

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

Creare e aggiungere una definizione di criteri per consentire l'account Archiviazione di Azure precedente ai criteri dell'endpoint di servizio

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

Aggiornare la subnet della rete virtuale per associarla ai criteri dell'endpoint di servizio creati nel passaggio precedente

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

Convalidare la restrizione di accesso agli account Archiviazione di Azure

Creare la macchina virtuale

Per testare l'accesso alla rete a un account di archiviazione, distribuire una macchina virtuale nella subnet.

Creare una macchina virtuale nella subnet privata con az vm create. Il comando crea le chiavi SSH, se non esistono già in una posizione predefinita. Per usare un set specifico di chiavi, utilizzare l'opzione --ssh-key-value.

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

La creazione della VM richiede alcuni minuti. Dopo la creazione, prendere nota di publicIpAddress nell'output restituito. Questo indirizzo viene usato per accedere alla VM da Internet in un passaggio successivo.

Verificare che venga consentito l'accesso a un account di archiviazione

Eseguire SSH nella VM myVmPrivate. Sostituire <publicIpAddress> con l'indirizzo IP pubblico della macchina virtuale myVmPrivate .

ssh <publicIpAddress>

Creare una cartella per un punto di montaggio:

sudo mkdir /mnt/MyAzureFileShare1

Montare la condivisione file di Azure nella directory creata. Prima di eseguire il comando seguente, sostituire storage-account-key> con il valore AccountKey da $saConnessione ionString1.<

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

Viene visualizzato il prompt user@myVmPrivate:~$. La condivisione file di Azure è stata montata correttamente in /mnt/MyAzureFileShare.

Verificare che venga rifiutato l'accesso a un account di archiviazione

Dalla stessa macchina virtuale myVmPrivate creare una directory per un punto di montaggio:

sudo mkdir /mnt/MyAzureFileShare2

Provare a montare la condivisione file di Azure dall'account di archiviazione notallowedstorageacc alla directory creata. Questo articolo presuppone che sia stata distribuita la versione più recente della distribuzione linux. Se si usano versioni precedenti della distribuzione Linux, vedere Montare in Linux per istruzioni aggiuntive sul montaggio di condivisioni file.

Prima di eseguire il comando seguente, sostituire storage-account-key> con il valore AccountKey da $saConnessione ionString2.<

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

L'accesso viene negato e viene visualizzato un mount error(13): Permission denied errore, perché questo account di archiviazione non è incluso nell'elenco degli elementi consentiti dei criteri dell'endpoint di servizio applicati alla subnet.

Uscire dalla sessione SSH alla macchina virtuale myVmPublic.

Pulire le risorse

Quando il gruppo di risorse e tutte le risorse in esso contenute non sono più necessari, usare az group delete per rimuoverli.

az group delete --name myResourceGroup --yes

Passaggi successivi

In questo articolo è stato applicato un criterio di endpoint servizio su un endpoint servizio di rete virtuale di Azure per Archiviazione di Azure. Sono stati creati Archiviazione di Azure account e l'accesso di rete limitato solo a determinati account di archiviazione (e quindi negato ad altri) da una subnet di rete virtuale. Per altre informazioni sui criteri degli endpoint di servizio, vedere Panoramica dei criteri degli endpoint di servizio.