Omezení síťového přístupu k prostředkům PaaS pomocí koncových bodů služby virtuální sítě pomocí PowerShellu

Koncové body služby pro virtuální síť umožňují omezení síťového přístupu k prostředkům některých služeb Azure na podsíť virtuální sítě. Můžete také odebrat internetový přístup k prostředkům. Koncové body služeb poskytují přímé připojení z vaší virtuální sítě k podporovaným službám Azure a umožňují pro přístup ke službám Azure použít privátní adresní prostor virtuální sítě. Provoz směřující do prostředků Azure prostřednictvím koncových bodů služby zůstává vždy v páteřní síti Microsoft Azure. V tomto článku získáte informace o těchto tématech:

  • Vytvoření virtuální sítě s jednou podsítí
  • Přidání podsítě a povolení koncového bodu služby
  • Vytvoření prostředku Azure a povolení síťového přístupu k tomuto prostředku pouze z podsítě
  • Nasazení virtuálního počítače do každé podsítě
  • Ověření přístupu k prostředku z podsítě
  • Ověření odepření přístupu k prostředku z podsítě a internetu

Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.

Azure Cloud Shell

Azure hostí interaktivní prostředí Azure Cloud Shell, které můžete používat v prohlížeči. Pro práci se službami Azure můžete v prostředí Cloud Shell použít buď Bash, nebo PowerShell. Předinstalované příkazy Cloud Shellu můžete použít ke spuštění kódu v tomto článku, aniž byste museli instalovat cokoli do místního prostředí.

Spuštění služby Azure Cloud Shell:

Možnost Příklad nebo odkaz
Vyberte Vyzkoušet v pravém horním rohu bloku kódu nebo příkazu. Výběrem možnosti Vyzkoušet se kód ani příkaz automaticky nekopíruje do Cloud Shellu. Screenshot that shows an example of Try It for Azure Cloud Shell.
Přejděte na adresu https://shell.azure.com nebo výběrem tlačítka Spustit Cloud Shell otevřete Cloud Shell v prohlížeči. Button to launch Azure Cloud Shell.
Zvolte tlačítko Cloud Shell v pruhu nabídky v pravém horním rohu webu Azure Portal. Screenshot that shows the Cloud Shell button in the Azure portal

Použití Azure Cloud Shellu:

  1. Spusťte Cloud Shell.

  2. Výběrem tlačítka Kopírovat v bloku kódu (nebo bloku příkazů) zkopírujte kód nebo příkaz.

  3. Vložte kód nebo příkaz do relace Cloud Shellu tak, že ve Windows a Linuxu vyberete ctrl+Shift+V nebo vyberete Cmd+Shift+V v macOS.

  4. Stisknutím klávesy Enter spusťte kód nebo příkaz.

Pokud se rozhodnete nainstalovat a používat PowerShell místně, tento článek vyžaduje modul Azure PowerShell verze 1.0.0 nebo novější. Nainstalovanou verzi zjistíte spuštěním příkazu Get-Module -ListAvailable Az. Pokud potřebujete upgrade, přečtěte si téma Instalace modulu Azure PowerShell. Pokud používáte PowerShell místně, je také potřeba spustit příkaz Connect-AzAccount pro vytvoření připojení k Azure.

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í rutiny New-AzResourceGroup. Následující příklad vytvoří skupinu prostředků myResourceGroup:

New-AzResourceGroup -ResourceGroupName myResourceGroup -Location EastUS

Vytvořte virtuální síť pomocí rutiny New-AzVirtualNetwork. Následující příklad vytvoří virtuální síť s názvem myVirtualNetwork s předponou adresy 10.0.0.0/16.

$virtualNetwork = New-AzVirtualNetwork `
  -ResourceGroupName myResourceGroup `
  -Location EastUS `
  -Name myVirtualNetwork `
  -AddressPrefix 10.0.0.0/16

Vytvořte konfiguraci podsítě pomocí rutiny New-AzVirtualNetworkSubnetConfig. Následující příklad vytvoří konfiguraci podsítě pro podsíť s názvem Public:

$subnetConfigPublic = Add-AzVirtualNetworkSubnetConfig `
  -Name Public `
  -AddressPrefix 10.0.0.0/24 `
  -VirtualNetwork $virtualNetwork

Vytvořte podsíť ve virtuální síti zápisem konfigurace podsítě do virtuální sítě pomocí rutiny Set-AzVirtualNetwork:

$virtualNetwork | Set-AzVirtualNetwork

Povolení koncového bodu služby

Koncové body služby můžete povolit jenom pro služby, které podporují koncové body služby. Zobrazte služby s povoleným koncovým bodem služby dostupné v umístění Azure pomocí rutiny Get-AzVirtualNetworkAvailableEndpointService. Následující příklad vrátí seznam služeb s povolenými koncovými body služby, které jsou k dispozici v oblasti eastus . Seznam vrácených služeb se časem zvětšuje, jakmile se více služeb Azure stane povoleným koncovým bodem služby.

Get-AzVirtualNetworkAvailableEndpointService -Location eastus | Select Name

Ve virtuální síti vytvořte další podsíť. V tomto příkladu se vytvoří podsíť s názvem Private s koncovým bodem služby pro Microsoft.Storage:

$subnetConfigPrivate = Add-AzVirtualNetworkSubnetConfig `
  -Name Private `
  -AddressPrefix 10.0.1.0/24 `
  -VirtualNetwork $virtualNetwork `
  -ServiceEndpoint Microsoft.Storage

$virtualNetwork | Set-AzVirtualNetwork

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

Vytvořte pravidla zabezpečení skupiny zabezpečení sítě pomocí rutiny New-AzNetworkSecurityRuleConfig. 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:

$rule1 = New-AzNetworkSecurityRuleConfig `
  -Name Allow-Storage-All `
  -Access Allow `
  -DestinationAddressPrefix Storage `
  -DestinationPortRange * `
  -Direction Outbound `
  -Priority 100 `
  -Protocol * `
  -SourceAddressPrefix VirtualNetwork `
  -SourcePortRange *

Následující pravidlo odmítne 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.

$rule2 = New-AzNetworkSecurityRuleConfig `
  -Name Deny-Internet-All `
  -Access Deny `
  -DestinationAddressPrefix Internet `
  -DestinationPortRange * `
  -Direction Outbound `
  -Priority 110 `
  -Protocol * `
  -SourceAddressPrefix VirtualNetwork `
  -SourcePortRange *

Následující pravidlo umožňuje příchozí provoz protokolu RDP (Remote Desktop Protocol) do podsítě odkudkoli. Připojení ke vzdálené ploše jsou k podsíti povolená, abyste mohli ověřit síťový přístup k prostředku v pozdějším kroku.

$rule3 = New-AzNetworkSecurityRuleConfig `
  -Name Allow-RDP-All `
  -Access Allow `
  -DestinationAddressPrefix VirtualNetwork `
  -DestinationPortRange 3389 `
  -Direction Inbound `
  -Priority 120 `
  -Protocol * `
  -SourceAddressPrefix * `
  -SourcePortRange *

Vytvořte skupinu zabezpečení sítě pomocí rutiny New-AzNetworkSecurityGroup. Následující příklad vytvoří skupinu zabezpečení sítě myNsgPrivate.

$nsg = New-AzNetworkSecurityGroup `
  -ResourceGroupName myResourceGroup `
  -Location EastUS `
  -Name myNsgPrivate `
  -SecurityRules $rule1,$rule2,$rule3

Přidružte skupinu zabezpečení sítě k privátní podsíti set-AzVirtualNetworkSubnetConfig a pak zapište konfiguraci podsítě do virtuální sítě. Následující příklad přidruží skupinu zabezpečení sítě myNsgPrivate k privátní podsíti:

Set-AzVirtualNetworkSubnetConfig `
  -VirtualNetwork $VirtualNetwork `
  -Name Private `
  -AddressPrefix 10.0.1.0/24 `
  -ServiceEndpoint Microsoft.Storage `
  -NetworkSecurityGroup $nsg

$virtualNetwork | Set-AzVirtualNetwork

Omezení síťového přístupu k prostředku

Kroky potřebné k omezení síťového přístupu k prostředkům vytvořeným prostřednictvím služeb Azure povolených v koncových bodech se u jednotlivých služeb liší. Konkrétní kroky pro jednotlivé služby najdete v dokumentaci příslušné služby. Zbývající část tohoto článku obsahuje postup omezení síťového přístupu pro účet Azure Storage, například.

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

Vytvořte účet úložiště Azure pomocí rutiny New-AzStorageAccount. Nahraďte <replace-with-your-unique-storage-account-name> názvem, který je jedinečný ve všech umístěních Azure, o délce 3 až 24 znaků, a to pouze čísly a malá písmena.

$storageAcctName = '<replace-with-your-unique-storage-account-name>'

New-AzStorageAccount `
  -Location EastUS `
  -Name $storageAcctName `
  -ResourceGroupName myResourceGroup `
  -SkuName Standard_LRS `
  -Kind StorageV2

Po vytvoření účtu úložiště načtěte klíč pro účet úložiště do proměnné pomocí rutiny Get-AzStorageAccountKey:

$storageAcctKey = (Get-AzStorageAccountKey `
  -ResourceGroupName myResourceGroup `
  -AccountName $storageAcctName).Value[0]

Klíč slouží k vytvoření sdílené složky v pozdějším kroku. Zadejte $storageAcctKey hodnotu a poznamenejte si ji, protože ji budete muset zadat také ručně v pozdějším kroku, když namapujete sdílenou složku na jednotku ve virtuálním počítači.

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

Vytvořte kontext pro účet úložiště a klíč pomocí New-AzStorageContext. Kontext zapouzdřuje název účtu úložiště a klíč účtu:

$storageContext = New-AzStorageContext $storageAcctName $storageAcctKey

Vytvořte sdílenou složku pomocí New-AzStorageShare:

$share = New-AzStorageShare my-file-share -Context $storageContext

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í Update-AzStorageAccountNetworkRuleSet. Jakmile je přístup k síti zakázán, účet úložiště není přístupný ze žádné sítě.

Update-AzStorageAccountNetworkRuleSet  `
  -ResourceGroupName "myresourcegroup" `
  -Name $storageAcctName `
  -DefaultAction Deny

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

Načtěte vytvořenou virtuální síť pomocí rutiny Get-AzVirtualNetwork a pak načtěte objekt privátní podsítě do proměnné pomocí rutiny Get-AzVirtualNetworkSubnetConfig:

$privateSubnet = Get-AzVirtualNetwork `
  -ResourceGroupName "myResourceGroup" `
  -Name "myVirtualNetwork" `
  | Get-AzVirtualNetworkSubnetConfig `
  -Name "Private"

Povolte síťový přístup k účtu úložiště z privátní podsítě pomocí rutiny Add-AzStorageAccountNetworkRule.

Add-AzStorageAccountNetworkRule `
  -ResourceGroupName "myresourcegroup" `
  -Name $storageAcctName `
  -VirtualNetworkResourceId $privateSubnet.Id

Vytvoření virtuálních počítačů

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

Vytvoření prvního virtuálního počítače

Vytvořte virtuální počítač ve veřejné podsíti pomocí rutiny New-AzVM. Při spuštění následujícího příkazu se zobrazí výzva k zadání přihlašovacích údajů. Hodnoty, které zadáte, se nakonfigurují jako uživatelské jméno a heslo pro virtuální počítač. Pomocí možnosti -AsJob se virtuální počítač vytvoří na pozadí, takže můžete pokračovat k dalšímu kroku.

New-AzVm `
    -ResourceGroupName "myResourceGroup" `
    -Location "East US" `
    -VirtualNetworkName "myVirtualNetwork" `
    -SubnetName "Public" `
    -Name "myVmPublic" `
    -AsJob

Vrátí se výstup podobný následujícímu příkladu výstupu:

Id     Name            PSJobTypeName   State         HasMoreData     Location             Command                  
--     ----            -------------   -----         -----------     --------             -------                  
1      Long Running... AzureLongRun... Running       True            localhost            New-AzVM     

Vytvoření druhého virtuálního počítače

Vytvořte virtuální počítač v privátní podsíti:

New-AzVm `
    -ResourceGroupName "myResourceGroup" `
    -Location "East US" `
    -VirtualNetworkName "myVirtualNetwork" `
    -SubnetName "Private" `
    -Name "myVmPrivate"

Vytvoření virtuálního počítače azure trvá několik minut. Nepokračujte k dalšímu kroku, dokud Azure nedokončí vytvoření virtuálního počítače a nevrátí výstup do PowerShellu.

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

Pomocí rutiny Get-AzPublicIpAddress vraťte veřejnou IP adresu virtuálního počítače. Následující příklad vrátí veřejnou IP adresu virtuálního počítače myVmPrivate :

Get-AzPublicIpAddress `
  -Name myVmPrivate `
  -ResourceGroupName myResourceGroup `
  | Select IpAddress

V následujícím příkazu nahraďte <publicIpAddress> veřejnou IP adresou vrácenou předchozím příkazem a pak ho zadejte:

mstsc /v:<publicIpAddress>

Vytvoří se soubor protokolu RDP (.rdp) a stáhne se na váš počítač. Otevřete stažený soubor .rdp. Pokud se zobrazí výzva, vyberte Připojit. Zadejte uživatelské jméno a heslo, které jste zadali při vytváření virtuálního počítače. Možná bude nutné vybrat Další možnosti a pak Použít jiný účet a zadat přihlašovací údaje, které jste zadali při vytváření virtuálního počítače. Vyberte OK. Během procesu přihlášení se může zobrazit upozornění certifikátu. Pokud se toto upozornění zobrazí, vyberte Ano nebo Pokračovat a pokračujte v připojování.

Na virtuálním počítači myVmPrivate pomocí PowerShellu namapujte sdílenou složku Azure na jednotku Z. Před spuštěním následujících příkazů nahraďte <storage-account-key> hodnoty zadanými nebo načtenými v části Vytvoření účtu úložiště a <storage-account-name> nahraďte je hodnotami.

$acctKey = ConvertTo-SecureString -String "<storage-account-key>" -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential -ArgumentList "Azure\<storage-account-name>", $acctKey
New-PSDrive -Name Z -PSProvider FileSystem -Root "\\<storage-account-name>.file.core.windows.net\my-file-share" -Credential $credential

PowerShell vrátí podobný výstup jako v následujícím příkladu:

Name           Used (GB)     Free (GB) Provider      Root
----           ---------     --------- --------      ----
Z                                      FileSystem    \\vnt.file.core.windows.net\my-f...

Sdílená složka Azure se úspěšně namapovala na jednotku Z.

Ověřte, že virtuální počítač nemá žádné odchozí připojení k žádným jiným veřejným IP adresům:

ping bing.com

Neobdržíte žádné odpovědi, protože skupina zabezpečení sítě přidružená k podsíti Private nepovoluje odchozí přístup k jiným veřejným IP adresám, než jsou adresy přiřazené službě Azure Storage.

Ukončete relaci vzdálené plochy k virtuálnímu počítači myVmPrivate.

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

Získejte veřejnou IP adresu virtuálního počítače myVmPublic :

Get-AzPublicIpAddress `
  -Name myVmPublic `
  -ResourceGroupName myResourceGroup `
  | Select IpAddress

V následujícím příkazu nahraďte <publicIpAddress> veřejnou IP adresou vrácenou předchozím příkazem a pak ho zadejte:

mstsc /v:<publicIpAddress>

Na virtuálním počítači myVmPublic se pokuste namapovat sdílenou složku Azure na jednotku Z. Před spuštěním následujících příkazů nahraďte <storage-account-key> hodnoty zadanými nebo načtenými v části Vytvoření účtu úložiště a <storage-account-name> nahraďte je hodnotami.

$acctKey = ConvertTo-SecureString -String "<storage-account-key>" -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential -ArgumentList "Azure\<storage-account-name>", $acctKey
New-PSDrive -Name Z -PSProvider FileSystem -Root "\\<storage-account-name>.file.core.windows.net\my-file-share" -Credential $credential

Přístup ke sdílené složce je odepřen a zobrazí se New-PSDrive : Access is denied chyba. Přístup byl odepřen, protože virtuální počítač myVmPublic je nasazený v podsíti Public. Podsíť Public nemá povolený koncový bod služby pro Azure Storage a účet úložiště umožňuje síťový přístup pouze z podsítě Private, a ne z podsítě Public.

Ukončete relaci vzdálené plochy k virtuálnímu počítači myVmPublic.

Z počítače se pokuste zobrazit sdílené složky v účtu úložiště pomocí následujícího příkazu:

Get-AzStorageFile `
  -ShareName my-file-share `
  -Context $storageContext

Přístup byl odepřen a zobrazí se soubor Get-AzStorageFile: Vzdálený server vrátil chybu: (403) Zakázáno. Stavový kód HTTP: 403 – Chybová zpráva HTTP: Tento požadavek nemá oprávnění k provedení této chyby operace , protože váš počítač není v privátní podsíti virtuální sítě MyVirtualNetwork .

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

Pokud už ji nepotřebujete, můžete k odebrání skupiny prostředků a všech prostředků, které obsahuje, použít Remove-AzResourceGroup :

Remove-AzResourceGroup -Name myResourceGroup -Force

Další kroky

V tomto článku jste povolili koncový bod služby pro podsíť virtuální sítě. Dozvěděli jste se, že koncové body služeb je možné povolit pro prostředky nasazené pomocí několika služeb Azure. Vytvořili jste účet služby Azure Storage a omezili jste síťový přístup k účtu úložiště pouze na prostředky v rámci podsítě virtuální sítě. Další informace o koncových bodech služeb najdete v tématech Přehled koncových bodů služeb a Správa podsítí.

Pokud ve svém účtu máte více virtuálních sítí, možná budete chtít propojit dvě virtuální sítě, aby mezi sebou mohly komunikovat prostředky v obou virtuálních sítích. Postup najdete v tématu Připojení virtuálních sítích.