Správa exfiltrace dat do účtů služby Azure Storage pomocí zásad koncového bodu služby pro virtuální síť pomocí Azure CLI

Zásady koncového bodu služby pro virtuální síť umožňují použít řízení přístupu u účtů Azure Storage z virtuální sítě přes koncové body služby. Toto je klíč pro zabezpečení úloh, správu povolených účtů úložiště a povolení exfiltrace dat. V tomto článku získáte informace o těchto tématech:

  • Vytvořte virtuální síť a přidejte podsíť.
  • Povolte koncový bod služby pro Azure Storage.
  • Vytvořte dva účty Azure Storage a povolte k němu přístup k síti z podsítě vytvořené výše.
  • Vytvořte zásadu koncového bodu služby, která povolí přístup jenom k jednomu z účtů úložiště.
  • Nasaďte virtuální počítač do podsítě.
  • Ověřte přístup k povolenému účtu úložiště z podsítě.
  • Ověřte, že přístup z podsítě je odepřený k účtu úložiště, který není povolený.

Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.

Požadavky

  • Tento článek vyžaduje verzi 2.0.28 nebo novější azure CLI. Pokud používáte Azure Cloud Shell, je už nainstalovaná nejnovější verze.

Vytvoření virtuální sítě

Před vytvořením virtuální sítě musíte vytvořit skupinu prostředků pro virtuální síť a všechny ostatní prostředky vytvořené v tomto článku. Vytvořte skupinu prostředků pomocí příkazu az group create. Následující příklad vytvoří skupinu prostředků myResourceGroup v umístění eastus.

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

Vytvořte virtuální síť s jednou podsítí pomocí příkazu 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

Povolení koncového bodu služby

V tomto příkladu se vytvoří koncový bod služby pro Microsoft.Storage pro privátní podsíť:

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

Omezení síťového přístupu pro podsíť

Vytvořte skupinu zabezpečení sítě pomocí příkazu az network nsg create. Následující příklad vytvoří skupinu zabezpečení sítě myNsgPrivate.

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

Přidružte skupinu zabezpečení sítě k privátní podsíti pomocí příkazu az network vnet subnet update. Následující příklad přidruží skupinu zabezpečení sítě myNsgPrivate k privátní podsíti:

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

Vytvořte pravidla zabezpečení pomocí příkazu az network nsg rule create. Následující pravidlo umožňuje odchozí přístup k veřejným IP adresům přiřazeným ke službě Azure Storage:

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

Každá skupina zabezpečení sítě obsahuje několik výchozích pravidel zabezpečení. Následující pravidlo přepíše výchozí pravidlo zabezpečení, které umožňuje odchozí přístup ke všem veřejným IP adresám. Tato destination-address-prefix "Internet" možnost odepře odchozí přístup ke všem veřejným IP adresám. Předchozí pravidlo toto pravidlo přepíše kvůli vyšší prioritě, což umožňuje přístup k veřejným IP adresám služby 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 "*"

Následující pravidlo umožňuje příchozí provoz SSH do podsítě odkudkoli. Toto pravidlo přepíše výchozí pravidlo zabezpečení, které zakazuje veškerý příchozí provoz z internetu. SSH je pro podsíť povolená, aby bylo možné připojení otestovat v pozdějším kroku.

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"

Omezení síťového přístupu k účtům Azure Storage

Tato část obsahuje kroky pro omezení síťového přístupu k účtu azure Storage z dané podsítě ve virtuální síti prostřednictvím koncového bodu služby.

Vytvoření účtu úložiště

Vytvořte dva účty úložiště Azure pomocí příkazu 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

Po vytvoření účtů úložiště načtěte připojovací řetězec pro účty úložiště do proměnné pomocí příkazu az storage account show-connection-string. Připojovací řetězec slouží k vytvoření sdílené složky v pozdějším kroku.

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)

Zobrazte obsah proměnné a poznamenejte si hodnotu AccountKey vrácenou ve výstupu, protože se používá v pozdějším kroku.

echo $saConnectionString1

echo $saConnectionString2

Vytvoření sdílené složky v účtu úložiště

Vytvořte sdílenou složku v účtu úložiště pomocí příkazu az storage share create. V pozdějším kroku se tato sdílená složka připojí k potvrzení síťového přístupu k ní.

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

Odepření veškerého síťového přístupu k účtu úložiště

Účty úložiště ve výchozím nastavení přijímají síťová připojení z klientů v jakékoli síti. Pokud chcete omezit přístup k vybraným sítím, změňte výchozí akci na Odepřít pomocí příkazu az storage account update. Jakmile je přístup k síti zakázán, účet úložiště není přístupný ze žádné sítě.

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

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

Povolení síťového přístupu z podsítě virtuální sítě

Povolte síťový přístup k účtu úložiště z privátní podsítě pomocí příkazu 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

Použití zásad pro povolení přístupu k platnému účtu úložiště

Zásady koncového bodu služby Azure jsou dostupné jenom pro Azure Storage. Proto v této ukázkové instalaci povolíme koncový bod služby pro Microsoft.Storage v této podsíti.

Zásady koncového bodu služby se použijí u koncových bodů služby. Začneme vytvořením zásady koncového bodu služby. Potom vytvoříme definice zásad v rámci této zásady pro účty Azure Storage, které budou schváleny pro tuto podsíť.

Vytvoření zásady koncového bodu služby

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

Uložte identifikátor URI prostředku pro povolený účet úložiště v proměnné. Před provedením následujícího příkazu nahraďte <id vašeho předplatného> skutečnou hodnotou ID vašeho předplatného.

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

Vytvoření a přidání definice zásady pro povolení výše uvedeného účtu Azure Storage do zásad koncového bodu služby

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

A aktualizujte podsíť virtuální sítě tak, aby se k ní přidružila zásada koncového bodu služby vytvořená v předchozím kroku.

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

Ověření omezení přístupu k účtům Azure Storage

Vytvořte virtuální počítač.

Pokud chcete otestovat síťový přístup k účtu úložiště, nasaďte virtuální počítač do podsítě.

Vytvořte virtuální počítač v privátní podsíti pomocí příkazu az vm create. Pokud ve výchozím umístění klíčů ještě neexistují klíče SSH, příkaz je vytvoří. Chcete-li použít konkrétní sadu klíčů, použijte možnost --ssh-key-value.

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

Vytvoření virtuálního počítače trvá několik minut. Po vytvoření si poznamenejte publicIpAddress ve vráceném výstupu. Tato adresa se používá pro přístup k virtuálnímu počítači z internetu v pozdějším kroku.

Ověření přístupu k účtu úložiště

Připojte se pomocí SSH k virtuálnímu počítači myVmPrivate . Nahraďte publicIpAddress> veřejnou IP adresou vašeho virtuálního počítače myVmPrivate.<

ssh <publicIpAddress>

Vytvořte složku pro přípojný bod:

sudo mkdir /mnt/MyAzureFileShare1

Připojte sdílenou složku Azure k vytvořenému adresáři. Před provedením následujícího příkazu nahraďte storage-account-key> hodnotou AccountKey z $saPřipojení 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

Zobrazí se user@myVmPrivate:~$ výzva. Sdílená složka Azure se úspěšně připojila k /mnt/MyAzureFileShare.

Ověření odepření přístupu k účtu úložiště

Ze stejného virtuálního počítače myVmPrivate vytvořte adresář pro přípojný bod:

sudo mkdir /mnt/MyAzureFileShare2

Pokus o připojení sdílené složky Azure z účtu úložiště notallowedstorageacc k vytvořenému adresáři. Tento článek předpokládá, že jste nasadili nejnovější verzi linuxové distribuce. Pokud používáte starší verze linuxové distribuce, další pokyny k připojení sdílených složek najdete v tématu Připojení k Linuxu .

Před provedením následujícího příkazu nahraďte storage-account-key> hodnotou AccountKey z $saPřipojení 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

Přístup byl odepřen a zobrazí se mount error(13): Permission denied chyba, protože tento účet úložiště není v seznamu povolených zásad koncového bodu služby, které jsme použili pro podsíť.

Ukončete relaci SSH k virtuálnímu počítači myVmPublic .

Vyčištění prostředků

Pokud už ji nepotřebujete, pomocí příkazu az group delete odeberte skupinu prostředků a všechny prostředky, které obsahuje.

az group delete --name myResourceGroup --yes

Další kroky

V tomto článku jste použili zásadu koncového bodu služby pro koncový bod služby virtuální sítě Azure do služby Azure Storage. Vytvořili jste účty Azure Storage a omezili jste síťový přístup jenom k určitým účtům úložiště (a tím i jiným) z podsítě virtuální sítě. Další informace o zásadách koncových bodů služby najdete v tématu Přehled zásad koncových bodů služby.