Hantera dataexfiltrering till Azure Storage-konton med tjänstslutpunktsprinciper för virtuella nätverk med hjälp av Azure CLI
Med tjänstslutpunktsprinciper för virtuellt nätverk kan du tillämpa åtkomstkontroll på Azure Storage-konton inifrån ett virtuellt nätverk via tjänstslutpunkter. Det här är en nyckel för att skydda dina arbetsbelastningar, hantera vilka lagringskonton som tillåts och var dataexfiltrering tillåts. I den här artikeln kan du se hur du:
- Skapa ett virtuellt nätverk och lägg till ett undernät.
- Aktivera tjänstslutpunkt för Azure Storage.
- Skapa två Azure Storage-konton och tillåt nätverksåtkomst till det från det undernät som skapades ovan.
- Skapa en tjänstslutpunktsprincip för att endast tillåta åtkomst till ett av lagringskontona.
- Distribuera en virtuell dator (VM) till undernätet.
- Bekräfta åtkomsten till det tillåtna lagringskontot från undernätet.
- Bekräfta att åtkomst nekas till det icke-tillåtna lagringskontot från undernätet.
Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.
Förutsättningar
Använd Bash-miljön i Azure Cloud Shell. Mer information finns i Snabbstart för Bash i Azure Cloud Shell.
Om du föredrar att köra CLI-referenskommandon lokalt installerar du Azure CLI. Om du kör i Windows eller macOS kan du köra Azure CLI i en Docker-container. Mer information finns i Så här kör du Azure CLI i en Docker-container.
Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. Slutför autentiseringsprocessen genom att följa stegen som visas i terminalen. Andra inloggningsalternativ finns i Logga in med Azure CLI.
När du uppmanas att installera Azure CLI-tillägget vid första användningen. Mer information om tillägg finns i Använda tillägg med Azure CLI.
Kör az version om du vill hitta versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
- Den här artikeln kräver version 2.0.28 eller senare av Azure CLI. Om du använder Azure Cloud Shell är den senaste versionen redan installerad.
Skapa ett virtuellt nätverk
Innan du skapar ett virtuellt nätverk måste du skapa en resursgrupp för det virtuella nätverket och alla andra resurser som skapas i den här artikeln. Skapa en resursgrupp med az group create. I följande exempel skapas en resursgrupp med namnet myResourceGroup i regionen eastus.
az group create \
--name myResourceGroup \
--location eastus
Skapa ett virtuellt nätverk med ett undernät med 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
Aktivera en tjänstslutpunkt
I det här exemplet skapas en tjänstslutpunkt för Microsoft.Storage för undernätet Privat:
az network vnet subnet create \
--vnet-name myVirtualNetwork \
--resource-group myResourceGroup \
--name Private \
--address-prefix 10.0.0.0/24 \
--service-endpoints Microsoft.Storage
Begränsa nätverksåtkomst för ett undernät
Skapa en nätverkssäkerhetsgrupp med az network nsg create. I följande exempel skapas en nätverkssäkerhetsgrupp med namnet myNsgPrivate.
az network nsg create \
--resource-group myResourceGroup \
--name myNsgPrivate
Associera nätverkssäkerhetsgruppen med det privata undernätet med az network vnet subnet update. I följande exempel associeras nätverkssäkerhetsgruppen myNsgPrivate med det privata undernätet:
az network vnet subnet update \
--vnet-name myVirtualNetwork \
--name Private \
--resource-group myResourceGroup \
--network-security-group myNsgPrivate
Skapa säkerhetsregler med az network nsg rule create. Regeln som följer tillåter utgående åtkomst till de offentliga IP-adresser som tilldelats Till Azure Storage-tjänsten:
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 "*"
Varje nätverkssäkerhetsgrupp innehåller flera standardsäkerhetsregler. Regeln som följer åsidosätter en standardsäkerhetsregel som tillåter utgående åtkomst till alla offentliga IP-adresser. Alternativet destination-address-prefix "Internet"
nekar utgående åtkomst till alla offentliga IP-adresser. Den tidigare regeln åsidosätter den här regeln på grund av dess högre prioritet, vilket ger åtkomst till de offentliga IP-adresserna för Azure Storage.
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 "*"
Följande regel tillåter inkommande SSH-trafik till undernätet var som helst. Regeln åsidosätter en standardsäkerhetsregel som nekar all inkommande trafik från internet. SSH tillåts till undernätet så att anslutningen kan testas i ett senare steg.
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"
Begränsa nätverksåtkomsten till Azure Storage-konton
I det här avsnittet beskrivs steg för att begränsa nätverksåtkomsten för ett Azure Storage-konto från det angivna undernätet i ett virtuellt nätverk via tjänstslutpunkten.
Skapa ett lagringskonto
Skapa två Azure Storage-konton med 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
När lagringskontona har skapats hämtar du anslutningssträng för lagringskontona till en variabel med az storage account show-connection-string. Anslutningssträng används för att skapa en filresurs i ett senare steg.
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)
Visa innehållet i variabeln och notera värdet för AccountKey som returneras i utdata, eftersom det används i ett senare steg.
echo $saConnectionString1
echo $saConnectionString2
Skapa en filresurs i lagringskontot
Skapa en filresurs i lagringskontot med az storage share create. I ett senare steg monteras den här filresursen för att bekräfta nätverksåtkomsten till den.
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
Neka all nätverksåtkomst till lagringskontot
Som standard godkänner lagringskonton nätverksanslutningar från klienter i alla nätverk. Om du vill begränsa åtkomsten till valda nätverk ändrar du standardåtgärden till Neka med az storage account update. När nätverksåtkomsten nekas är lagringskontot inte tillgängligt från något nätverk.
az storage account update \
--name $storageAcctName1 \
--resource-group myResourceGroup \
--default-action Deny
az storage account update \
--name $storageAcctName2 \
--resource-group myResourceGroup \
--default-action Deny
Aktivera nätverksåtkomst från undernät för virtuellt nätverk
Tillåt nätverksåtkomst till lagringskontot från det privata undernätet med 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
Tillämpa principen för att tillåta åtkomst till ett giltigt lagringskonto
Azure-tjänstslutpunktsprinciper är endast tillgängliga för Azure Storage. Därför aktiverar vi tjänstslutpunkten för Microsoft.Storage i det här undernätet för den här exempelkonfigurationen.
Tjänstslutpunktsprinciper tillämpas över tjänstslutpunkter. Vi börjar med att skapa en tjänstslutpunktsprincip. Sedan skapar vi principdefinitionerna under den här principen för att Azure Storage-konton ska godkännas för det här undernätet
Skapa en tjänstslutpunktsprincip
az network service-endpoint policy create \
--resource-group myResourceGroup \
--name mysepolicy \
--location eastus
Spara resurs-URI:n för det tillåtna lagringskontot i en variabel. Innan du kör kommandot nedan ersätter <du ditt prenumerations-ID> med det faktiska värdet för ditt prenumerations-ID.
$serviceResourceId="/subscriptions/<your-subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.Storage/storageAccounts/allowedstorageacc"
Skapa och lägg till en principdefinition för att tillåta ovanstående Azure Storage-konto till tjänstslutpunktsprincipen
az network service-endpoint policy-definition create \
--resource-group myResourceGroup \
--policy-name mysepolicy \
--name mypolicydefinition \
--service "Microsoft.Storage" \
--service-resources $serviceResourceId
Och uppdatera det virtuella nätverksundernätet så att det associeras med den tjänstslutpunktsprincip som skapades i föregående steg
az network vnet subnet update \
--vnet-name myVirtualNetwork \
--resource-group myResourceGroup \
--name Private \
--service-endpoints Microsoft.Storage \
--service-endpoint-policy mysepolicy
Verifiera åtkomstbegränsning för Azure Storage-konton
Skapa den virtuella datorn
Om du vill testa nätverksåtkomsten till ett lagringskonto distribuerar du en virtuell dator till undernätet.
Skapa en virtuell dator i det privata undernätet med az vm create. Om det inte redan finns SSH-nycklar på en standardnyckelplats skapar kommandot dem. Om du vill använda en specifik uppsättning nycklar använder du alternativet --ssh-key-value
.
az vm create \
--resource-group myResourceGroup \
--name myVmPrivate \
--image <SKU linux image> \
--vnet-name myVirtualNetwork \
--subnet Private \
--generate-ssh-keys
Det tar några minuter att skapa den virtuella datorn. När du har skapat bör du anteckna publicIpAddress i de utdata som returneras. Den här adressen används för att komma åt den virtuella datorn från Internet i ett senare steg.
Bekräfta åtkomst till lagringskontot
SSH till den virtuella datorn myVmPrivate . Ersätt <publicIpAddress> med den offentliga IP-adressen för den virtuella datorn myVmPrivate .
ssh <publicIpAddress>
Skapa en mapp för en monteringspunkt:
sudo mkdir /mnt/MyAzureFileShare1
Montera Azure-filresursen i den katalog som du skapade. Innan du kör kommandot nedan ersätter du storage-account-key> med värdet AccountKey från $saAnslut 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
Du får kommandotolken user@myVmPrivate:~$
. Azure-filresursen har monterats på /mnt/MyAzureFileShare.
Bekräfta att åtkomst till lagringskontot nekas
Från samma virtuella dator myVmPrivate skapar du en katalog för en monteringspunkt:
sudo mkdir /mnt/MyAzureFileShare2
Försök att montera Azure-filresursen från lagringskontot notallowedstorageacc till katalogen du skapade. Den här artikeln förutsätter att du har distribuerat den senaste versionen av Linux-distributionen. Om du använder tidigare versioner av Linux-distribution kan du läsa Mer information om hur du monterar filresurser finns i Montera på Linux .
Innan du kör kommandot nedan ersätter du storage-account-key> med värdet AccountKey från $saAnslut 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
Åtkomst nekas och du får ett mount error(13): Permission denied
fel eftersom det här lagringskontot inte finns med i listan över tillåtna tjänstslutpunkter som vi tillämpade på undernätet.
Avsluta SSH-sessionen till den virtuella datorn myVmPublic .
Rensa resurser
När den inte längre behövs använder du az group delete för att ta bort resursgruppen och alla resurser som den innehåller.
az group delete --name myResourceGroup --yes
Nästa steg
I den här artikeln använder du en tjänstslutpunktsprincip över en tjänstslutpunkt för virtuella Azure-nätverk på Azure Storage. Du har skapat Azure Storage-konton och begränsad nätverksåtkomst till endast vissa lagringskonton (och därmed nekat andra) från ett virtuellt nätverksundernät. Mer information om tjänstslutpunktsprinciper finns i Översikt över tjänstslutpunktersprinciper.