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
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie quickstart voor Bash in Azure Cloud Shell voor meer informatie.
Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren. Als u in Windows of macOS werkt, kunt u Azure CLI uitvoeren in een Docker-container. Zie De Azure CLI uitvoeren in een Docker-container voor meer informatie.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht az login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Raadpleeg Aanmelden bij Azure CLI voor aanvullende aanmeldingsopties.
Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.
- 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.