Delen via


Gegevensexfiltratie beheren naar Azure Storage-accounts met beleid voor service-eindpunten voor virtuele netwerken met behulp van de Azure CLI

Met beleid voor service-eindpunten voor virtuele netwerken kunt u toegangsbeheer toepassen op Azure Storage-accounts vanuit een virtueel netwerk via service-eindpunten. Dit is een sleutel voor het beveiligen van uw workloads, het beheren van welke opslagaccounts zijn toegestaan en waar gegevensexfiltratie is toegestaan. In dit artikel leert u het volgende:

  • Maak een virtueel netwerk en voeg een subnet toe.
  • Service-eindpunt inschakelen voor Azure Storage.
  • Maak twee Azure Storage-accounts en sta netwerktoegang toe vanuit het hierboven gemaakte subnet.
  • Maak een service-eindpuntbeleid om alleen toegang tot een van de opslagaccounts toe te staan.
  • Implementeer een virtuele machine (VM) in het subnet.
  • Bevestig de toegang tot het toegestane opslagaccount vanuit het subnet.
  • Controleer of de toegang wordt geweigerd tot het niet-toegestane opslagaccount vanuit het subnet.

Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.

Vereisten

  • Voor dit artikel is versie 2.0.28 of hoger van Azure CLI vereist. Als u Azure Cloud Shell gebruikt, is de nieuwste versie al geïnstalleerd.

Een virtueel netwerk maken

Voordat u een virtueel netwerk maakt, moet u een resourcegroep maken voor het virtuele netwerk en alle andere resources die in dit artikel zijn gemaakt. Maak een resourcegroep maken met az group create. In het volgende voorbeeld wordt een resourcegroep met de naam myResourceGroup gemaakt op de locatie VS - oost.

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

Maak een virtueel netwerk met één subnet met 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

Een service-eindpunt inschakelen

In dit voorbeeld wordt een service-eindpunt voor Microsoft.Storage gemaakt voor het subnet Privé:

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

Netwerktoegang voor een subnet beperken

Maak een netwerkbeveiligingsgroep met az network nsg create. In het volgende voorbeeld wordt een netwerkbeveiligingsgroep met de naam myNsgPrivate gemaakt.

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

Koppel de netwerkbeveiligingsgroep aan het privésubnet met az network vnet subnet update. In het volgende voorbeeld wordt de netwerkbeveiligingsgroep myNsgPrivate gekoppeld aan het privésubnet :

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

Maak beveiligingsregels met az network nsg rule create. De volgende regel staat uitgaande toegang toe tot de openbare IP-adressen die zijn toegewezen aan de Azure Storage-service:

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 "*"

Elke netwerkbeveiligingsgroep bevat verschillende standaardbeveiligingsregels. De regel die volgt overschrijft een standaardbeveiligingsregel waarmee uitgaande toegang tot alle openbare IP-adressen wordt toegestaan. De destination-address-prefix "Internet" optie weigert uitgaande toegang tot alle openbare IP-adressen. De vorige regel overschrijft deze regel vanwege de hogere prioriteit, waardoor toegang tot de openbare IP-adressen van Azure Storage mogelijk is.

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 "*"

Met de volgende regel kan SSH-verkeer binnenkomend naar het subnet vanaf elke locatie. De regel overschrijft een standaardbeveiligingsregel waardoor al het inkomende verkeer van internet wordt geweigerd. SSH is toegestaan voor het subnet, zodat de connectiviteit in een latere stap kan worden getest.

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"

Netwerktoegang tot Azure Storage-accounts beperken

In deze sectie vindt u stappen voor het beperken van de netwerktoegang voor een Azure Storage-account van het opgegeven subnet in een virtueel netwerk via service-eindpunt.

Een opslagaccount maken

Maak twee Azure-opslagaccounts met 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

Nadat de opslagaccounts zijn gemaakt, haalt u de verbindingsreeks voor de opslagaccounts op in een variabele met az storage account show-connection-string. De verbindingsreeks wordt gebruikt om in een latere stap een bestandsshare te maken.

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)

Bekijk de inhoud van de variabele en noteer de waarde voor AccountKey die in de uitvoer is geretourneerd, omdat deze in een latere stap wordt gebruikt.

echo $saConnectionString1

echo $saConnectionString2

Een bestandsshare maken in het opslagaccount

Maak een bestandsshare in het opslagaccount met az storage share create. In een latere stap wordt deze bestandsshare gekoppeld om de netwerktoegang te bevestigen.

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

Alle netwerktoegang tot het opslagaccount weigeren

Standaard accepteren opslagaccounts netwerkverbindingen van clients in ieder netwerk. Als u de toegang tot geselecteerde netwerken wilt beperken, wijzigt u de standaardactie in Weigeren met az storage account update. Nadat de netwerktoegang is geweigerd, is het opslagaccount niet via elk netwerk toegankelijk.

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

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

Netwerktoegang vanuit subnet van virtueel netwerk inschakelen

Netwerktoegang tot het opslagaccount toestaan vanuit het privésubnet met 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

Beleid toepassen om toegang tot een geldig opslagaccount toe te staan

Azure Service Endpoint-beleid is alleen beschikbaar voor Azure Storage. Daarom schakelen we service-eindpunten in voor Microsoft.Storage in dit subnet voor deze voorbeeldinstallatie.

Beleidsregels voor service-eindpunten worden toegepast op service-eindpunten. We beginnen met het maken van een service-eindpuntbeleid. Vervolgens maken we de beleidsdefinities onder dit beleid, zodat Azure Storage-accounts worden goedgekeurd voor dit subnet

Beleid voor service-eindpunten maken

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

Sla de resource-URI op voor het toegestane opslagaccount in een variabele. Voordat u de onderstaande opdracht uitvoert, vervangt u de id van uw abonnement door de werkelijke waarde van uw abonnements-id>.<

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

Een beleidsdefinitie maken en toevoegen voor het toestaan van het bovenstaande Azure Storage-account aan het service-eindpuntbeleid

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

En werk het subnet van het virtuele netwerk bij om hieraan het service-eindpuntbeleid te koppelen dat in de vorige stap is gemaakt

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

Toegangsbeperking valideren voor Azure Storage-accounts

De virtuele machine maken

Als u de netwerktoegang tot een opslagaccount wilt testen, implementeert u een VIRTUELE machine in het subnet.

Maak een VIRTUELE machine in het privésubnet met az vm create. Als SSH-sleutels niet al bestaan op de standaardlocatie van de sleutel, worden ze met deze opdracht gemaakt. Als u een specifieke set sleutels wilt gebruiken, gebruikt u de optie --ssh-key-value.

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

Het maken van de virtuele machine duurt een paar minuten. Noteer na het maken het publicIpAddress in de geretourneerde uitvoer. Dit adres wordt in een latere stap gebruikt voor toegang tot de virtuele machine vanaf internet.

Toegang tot opslagaccount bevestigen

SSH in de myVmPrivate-VM . Vervang <publicIpAddress> door het openbare IP-adres van uw myVmPrivate-VM .

ssh <publicIpAddress>

Maak een map voor een koppelpunt:

sudo mkdir /mnt/MyAzureFileShare1

Koppel de Azure-bestandsshare aan de map die u hebt gemaakt. Voordat u de onderstaande opdracht uitvoert, vervangt u de sleutel van het opslagaccount> door de waarde van AccountKey uit $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

U ontvangt de user@myVmPrivate:~$ prompt. De Azure-bestandsshare is gekoppeld aan /mnt/MyAzureFileShare.

Bevestigen dat toegang tot opslagaccount wordt geweigerd

Maak vanuit dezelfde VM myVmPrivate een map voor een koppelpunt:

sudo mkdir /mnt/MyAzureFileShare2

Probeer de Azure-bestandsshare van het opslagaccount niet toegestaanstorageacc te koppelen aan de map die u hebt gemaakt. In dit artikel wordt ervan uitgegaan dat u de nieuwste versie van Linux-distributie hebt geïmplementeerd. Als u eerdere versies van Linux-distributie gebruikt, raadpleegt u Koppeling op Linux voor aanvullende instructies over het koppelen van bestandsshares.

Voordat u de onderstaande opdracht uitvoert, vervangt u de sleutel van het opslagaccount> door de waarde van AccountKey uit $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

De toegang wordt geweigerd en u ontvangt een mount error(13): Permission denied foutmelding, omdat dit opslagaccount zich niet in de acceptatielijst bevindt van het service-eindpuntbeleid dat we hebben toegepast op het subnet.

Sluit de SSH-sessie af op de myVmPublic-VM .

Resources opschonen

Wanneer u deze niet meer nodig hebt, gebruikt u az group delete om de resourcegroep en alle resources die deze bevat te verwijderen.

az group delete --name myResourceGroup --yes

Volgende stappen

In dit artikel hebt u een service-eindpuntbeleid toegepast op een service-eindpunt van een virtueel Azure-netwerk in Azure Storage. U hebt Azure Storage-accounts gemaakt en beperkte netwerktoegang tot alleen bepaalde opslagaccounts (en dus anderen geweigerd) van een subnet van een virtueel netwerk. Zie het overzicht van beleidsregels voor service-eindpunten voor meer informatie over beleidsregels voor service-eindpunten.