Share via


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

  • 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.