Einschränken des Netzwerkzugriffs auf PaaS-Ressourcen mit VNET-Dienstendpunkten mithilfe von PowerShell

VNET-Dienstendpunkte ermöglichen es Ihnen, den Netzwerkzugriff auf einige Azure-Dienstressourcen auf ein Subnetz eines virtuellen Netzwerks einzuschränken. Sie können auch den Internetzugriff auf die Ressourcen entfernen. Dienstendpunkte ermöglichen eine direkte Verbindung zwischen Ihrem virtuellen Netzwerk und unterstützten Azure-Diensten, sodass Sie mithilfe des privaten Adressraums Ihres virtuellen Netzwerks auf die Azure-Dienste zugreifen können. Datenverkehr, der über Dienstendpunkte für Azure-Ressourcen bestimmt ist, verbleibt immer im Microsoft Azure-Backbonenetzwerk. In diesem Artikel werden folgende Vorgehensweisen behandelt:

  • Erstellen eines virtuellen Netzwerks mit einem Subnetz
  • Hinzufügen eines Subnetzes und Aktivieren eines Dienstendpunkts
  • Erstellen einer Azure-Ressource und Zulassen des Netzwerkzugriffs darauf ausschließlich aus einem Subnetz
  • Bereitstellen eines virtuellen Computers für jedes Subnetz
  • Bestätigen des Zugriffs auf eine Ressource aus einem Subnetz
  • Bestätigen, dass der Zugriff auf eine Ressource aus einem Subnetz und dem Internet verweigert wird

Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

Azure Cloud Shell

Azure hostet Azure Cloud Shell, eine interaktive Shell-Umgebung, die Sie über Ihren Browser nutzen können. Sie können entweder Bash oder PowerShell mit Cloud Shell verwenden, um mit Azure-Diensten zu arbeiten. Sie können die vorinstallierten Befehle von Cloud Shell verwenden, um den Code in diesem Artikel auszuführen, ohne etwas in Ihrer lokalen Umgebung installieren zu müssen.

Starten von Azure Cloud Shell:

Option Beispiel/Link
Wählen Sie rechts oben in einem Code- oder Befehlsblock die Option Ausprobieren aus. Durch die Auswahl von Ausprobieren wird der Code oder Befehl nicht automatisch in Cloud Shell kopiert. Screenshot that shows an example of Try It for Azure Cloud Shell.
Rufen Sie https://shell.azure.com auf, oder klicken Sie auf die Schaltfläche Cloud Shell starten, um Cloud Shell im Browser zu öffnen. Button to launch Azure Cloud Shell.
Wählen Sie im Azure-Portal rechts oben im Menü die Schaltfläche Cloud Shell aus. Screenshot that shows the Cloud Shell button in the Azure portal

So verwenden Sie Azure Cloud Shell:

  1. Starten Sie Cloud Shell.

  2. Wählen Sie die Schaltfläche Kopieren für einen Codeblock (oder Befehlsblock) aus, um den Code oder Befehl zu kopieren.

  3. Fügen Sie den Code oder Befehl mit STRG+UMSCHALT+V unter Windows und Linux oder CMD+UMSCHALT+V unter macOS in die Cloud Shell-Sitzung ein.

  4. Drücken Sie die EINGABETASTE, um den Code oder Befehl auszuführen.

Wenn Sie PowerShell lokal installieren und verwenden möchten, müssen Sie für diesen Artikel mindestens Version 1.0.0 des Azure PowerShell-Moduls verwenden. Führen Sie Get-Module -ListAvailable Az aus, um die installierte Version zu ermitteln. Wenn Sie ein Upgrade ausführen müssen, finden Sie unter Installieren des Azure PowerShell-Moduls Informationen dazu. Wenn Sie PowerShell lokal ausführen, müssen Sie auch Connect-AzAccount ausführen, um eine Verbindung mit Azure herzustellen.

Erstellen eines virtuellen Netzwerks

Vor der Erstellung eines virtuellen Netzwerks müssen Sie eine Ressourcengruppe für das virtuelle Netzwerk und alle anderen in diesem Artikel erstellten Ressourcen erstellen. Erstellen Sie mit New-AzResourceGroup eine Ressourcengruppe. Im folgenden Beispiel wird die Ressourcengruppe myResourceGroup erstellt:

New-AzResourceGroup -ResourceGroupName myResourceGroup -Location EastUS

Erstellen Sie mit New-AzVirtualNetwork ein virtuelles Netzwerk. Im folgenden Beispiel wird ein virtuelles Netzwerk namens myVirtualNetwork mit dem Adresspräfix 10.0.0.0/16 erstellt.

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

Erstellen Sie mit New-AzVirtualNetworkSubnetConfig eine Subnetzkonfiguration. Im folgenden Beispiel wird eine Subnetzkonfiguration für das Subnetz Public erstellt:

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

Erstellen Sie das Subnetz im virtuellen Netzwerk, indem Sie die Subnetzkonfiguration mit Set-AzVirtualNetwork in das virtuelle Netzwerk schreiben:

$virtualNetwork | Set-AzVirtualNetwork

Aktivieren eines Dienstendpunkts

Sie können Dienstendpunkte nur für Dienste aktivieren, die Dienstendpunkte unterstützen. Dienstendpunktfähige Dienste, die an einem Azure-Standort verfügbar sind, können Sie mit Get-AzVirtualNetworkAvailableEndpointService anzeigen. Im folgenden Beispiel wird eine Liste der dienstendpunktfähigen Dienste zurückgegeben, die in der Region eastus verfügbar sind. Die Liste der zurückgegebenen Dienste wird im Lauf der Zeit länger, da immer mehr Azure-Dienste für Dienstendpunkte aktiviert werden.

Get-AzVirtualNetworkAvailableEndpointService -Location eastus | Select Name

Erstellen Sie ein weiteres Subnetz im virtuellen Netzwerk. In diesem Beispiel wird das Subnetz Private mit einem Dienstendpunkt für Microsoft.Storage erstellt:

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

$virtualNetwork | Set-AzVirtualNetwork

Einschränken des Netzwerkzugriffs für ein Subnetz

Erstellen Sie mit New-AzNetworkSecurityRuleConfig Netzwerksicherheitsgruppen-Sicherheitsregeln. Die folgende Regel erlaubt den ausgehenden Zugriff auf die öffentlichen IP-Adressen, die dem Azure Storage-Dienst zugewiesen sind:

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

Die folgende Regel verweigert den Zugriff auf alle öffentlichen IP-Adressen. Die vorherige Regel überschreibt diese Regel. Dies ist auf die höhere Priorität zurückzuführen, die den Zugriff auf die öffentlichen IP-Adressen von Azure Storage zulässt.

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

Die folgende Regel erlaubt eingehenden RDP-Datenverkehr (Remote Desktop Protocol) in das Subnetz von überall aus. Remotedesktopverbindungen sind im Subnetz zulässig, sodass Sie den Netzwerkzugriff auf eine Ressource in einem späteren Schritt bestätigen können.

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

Erstellen Sie mit New-AzNetworkSecurityGroup eine Netzwerksicherheitsgruppe. Im folgenden Beispiel wird eine Netzwerksicherheitsgruppe namens myNsgPrivate erstellt.

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

Ordnen Sie die Netzwerksicherheitsgruppe mit Set-AzVirtualNetworkSubnetConfig dem Subnetz Private hinzu, und schreiben Sie dann die Subnetzkonfiguration in das virtuelle Netzwerk. Im folgenden Beispiel wird die Netzwerksicherheitsgruppe myNsgPrivate dem Subnetz Private hinzugefügt:

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

$virtualNetwork | Set-AzVirtualNetwork

Einschränken des Netzwerkzugriffs auf eine Ressource

Die Schritte, die erforderlich sind, um den Netzwerkzugriff auf Ressourcen einzuschränken, die durch Azure-Dienste erstellt und für Dienstendpunkte aktiviert wurden, sind je nach Dienst unterschiedlich. Informationen zu den Schritten für einzelne Dienste finden Sie in der Dokumentation des jeweiligen Diensts. Der Rest dieses Artikels enthält als Beispiel Schritte zum Einschränken des Netzwerkzugriffs für ein Azure Storage-Konto.

Speicherkonto erstellen

Erstellen Sie mit New-AzStorageAccount ein Azure Storage-Konto. Ersetzen Sie <replace-with-your-unique-storage-account-name> durch einen Namen, der an allen Azure-Standorten eindeutig, zwischen 3 und 24 Zeichen lang ist und nur aus Ziffern und Kleinbuchstaben besteht.

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

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

Rufen Sie nach dem Erstellen des Speicherkontos mit Get-AzStorageAccountKey den Schlüssel für das Speicherkonto in eine Variable ab:

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

Mit dem Schlüssel wird in einem späteren Schritt eine Dateifreigabe erstellt. Geben Sie $storageAcctKey ein, und notieren Sie den Wert. Diesen müssen Sie in einem späteren Schritt auch manuell eingeben, wenn Sie die Dateifreigabe einem Laufwerk in einem virtuellen Computer zuordnen.

Erstellen einer Dateifreigabe im Speicherkonto

Erstellen Sie mit New-AzStorageContext einen Kontext für das Speicherkonto und den Speicherschlüssel. Der Kontext kapselt den Speicherkontonamen und den Kontoschlüssel:

$storageContext = New-AzStorageContext $storageAcctName $storageAcctKey

Erstellen Sie mit New-AzStorageShare eine Dateifreigabe:

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

Verweigern des gesamten Netzwerkzugriffs auf ein Speicherkonto

Standardmäßig akzeptieren Speicherkonten Netzwerkverbindungen von Clients in allen Netzwerken. Um den Zugriff auf ausgewählte Netzwerke einzuschränken, ändern Sie die Standardaktion mit Update-AzStorageAccountNetworkRuleSet in Deny (Verweigern). Nachdem der Netzwerkzugriff verweigert wurde, kann auf das Speicherkonto aus keinem Netzwerk mehr zugegriffen werden.

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

Aktivieren des Netzwerkzugriffs aus einem Subnetz

Rufen Sie mit Get-AzVirtualNetwork das erstellte virtuelle Netzwerk und dann mit Get-AzVirtualNetworkSubnetConfig das Subnetzobjekt „Private“ in eine Variable ab:

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

Erlauben Sie den Netzwerkzugriff auf das Speicherkonto aus dem Subnetz Private mit Add-AzStorageAccountNetworkRule.

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

Erstellen von virtuellen Computern

Zum Testen des Netzwerkzugriffs auf ein Speicherkonto stellen Sie einen virtuellen Computer für jedes Subnetz bereit.

Erstellen des ersten virtuellen Computers

Erstellen Sie mit New-AzVM einen virtuellen Computer im Subnetz Öffentlich. Wenn Sie den folgenden Befehl ausführen, werden Sie aufgefordert, Anmeldeinformationen einzugeben. Die eingegebenen Werte werden als Benutzername und Kennwort für den virtuellen Computer konfiguriert. Mit der Option -AsJob wird der virtuelle Computer im Hintergrund erstellt, sodass Sie mit dem nächsten Schritt fortfahren können.

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

Die zurückgegebene Ausgabe ähnelt der folgenden Beispielausgabe:

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

Erstellen des zweiten virtuellen Computers

Erstellen Sie einen virtuellen Computer im Subnetz Private:

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

Das Erstellen des virtuellen Computers für Azure dauert einige Minuten. Fahren Sie erst mit dem nächsten Schritt fort, nachdem der virtuelle Computer in Azure erstellt und eine Ausgabe in PowerShell zurückgegeben wurde.

Bestätigen des Zugriffs auf das Speicherkonto

Geben Sie mit Get-AzPublicIpAddress die öffentliche IP-Adresse eines virtuellen Computers zurück. Das folgende Beispiel gibt die öffentliche IP-Adresse der myVmPrivate-VM zurück:

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

Ersetzen Sie im folgenden Befehl <publicIpAddress> durch die vom vorherigen Befehl zurückgegebene öffentliche IP-Adresse, und geben Sie dann den folgenden Befehl ein:

mstsc /v:<publicIpAddress>

Eine RDP-Datei (Remotedesktopprotokoll) wird erstellt und auf Ihren Computer heruntergeladen. Öffnen Sie die heruntergeladene RDP-Datei. Wenn Sie dazu aufgefordert werden, wählen Sie Verbinden aus. Geben Sie den Benutzernamen und das Kennwort ein, die Sie beim Erstellen des virtuellen Computers festgelegt haben. Unter Umständen müssen Sie auf Weitere Optionen und anschließend auf Anderes Konto verwenden klicken, um die Anmeldeinformationen anzugeben, die Sie beim Erstellen des virtuellen Computers eingegeben haben. Klicken Sie auf OK. Während des Anmeldevorgangs wird unter Umständen eine Zertifikatwarnung angezeigt. Wenn eine Warnung angezeigt wird, klicken Sie auf Ja bzw. Weiter, um mit dem Herstellen der Verbindung fortzufahren.

Ordnen Sie auf dem virtuellen Computer myVmPrivate mithilfe von PowerShell die Azure-Dateifreigabe dem Laufwerk Z zu. Ersetzen Sie vor dem Ausführen der nachfolgenden Befehle die Werte <storage-account-key> und <storage-account-name> durch Werte, die Sie unter Erstellen eines Speicherkontos angegeben oder abgerufen haben.

$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 gibt eine Ausgabe ähnlich der folgenden Beispielausgabe zurück:

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

Die Azure-Dateifreigabe wurde dem Laufwerk Z erfolgreich zugeordnet.

Bestätigen Sie, dass der virtuelle Computer über keine ausgehende Verbindung mit einer beliebigen anderen öffentlichen IP-Adresse verfügt:

ping bing.com

Sie erhalten keine Antworten, da die dem Subnetz Private zugeordnete Netzwerksicherheitsgruppe keinen ausgehenden Zugriff auf andere öffentliche IP-Adressen als auf die dem Azure Storage-Dienst zugewiesenen Adressen erlaubt.

Schließen Sie die Remotedesktopsitzung mit der VM myVmPrivate.

Bestätigen, dass der Zugriff auf das Speicherkonto verweigert wird

Rufen Sie die öffentliche IP-Adresse des virtuellen Computers myVmPublic ab:

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

Ersetzen Sie im folgenden Befehl <publicIpAddress> durch die vom vorherigen Befehl zurückgegebene öffentliche IP-Adresse, und geben Sie dann den folgenden Befehl ein:

mstsc /v:<publicIpAddress>

Versuchen Sie, auf dem virtuellen Computer myVmPublic die Azure-Dateifreigabe dem Laufwerk Z zuzuordnen. Ersetzen Sie vor dem Ausführen der nachfolgenden Befehle die Werte <storage-account-key> und <storage-account-name> durch Werte, die Sie unter Erstellen eines Speicherkontos angegeben oder abgerufen haben.

$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

Der Zugriff auf die Freigabe wird verweigert, und die Fehlermeldung New-PSDrive : Access is denied wird angezeigt. Der Zugriff wird verweigert, da der virtuelle Computer myVmPublic im Subnetz Public bereitgestellt wird. Für das Subnetz Public ist kein Dienstendpunkt für Azure Storage aktiviert, und das Speicherkonto erlaubt nur den Netzwerkzugriff aus dem Subnetz Private, nicht aus dem Subnetz Public.

Schließen Sie die Remotedesktopsitzung für den virtuellen Computer myVmPublic.

Versuchen Sie von Ihrem Computer aus, die Dateifreigaben im Speicherkonto mit dem folgenden Befehl anzuzeigen:

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

Der Zugriff wird verweigert, und Sie erhalten den Fehler: Get-AzStorageFile: The remote server returned an error: (403) Verboten. HTTP-Statuscode: 403 – HTTP-Fehlermeldung: Diese Anforderung ist nicht berechtigt, diesen Vorgang auszuführen, da sich Ihr Computer nicht im Subnetz Private des virtuellen Netzwerks MyVirtualNetwork befindet.

Bereinigen von Ressourcen

Wenn Sie die Ressourcengruppe und alle darin enthaltenen Ressourcen nicht mehr benötigen, können Sie sie mit dem Befehl Remove-AzResourceGroup entfernen:

Remove-AzResourceGroup -Name myResourceGroup -Force

Nächste Schritte

In diesem Artikel haben Sie einen Dienstendpunkt für ein Subnetz eines virtuellen Netzwerks aktiviert. Sie haben erfahren, dass Dienstendpunkte für Ressourcen aktiviert werden können, die mit mehreren Azure-Diensten bereitgestellt werden. Sie haben ein Azure Storage-Konto erstellt und den Netzwerkzugriff auf das Speicherkonto ausschließlich auf Ressourcen im Subnetz eines virtuellen Netzwerks eingeschränkt. Weitere Informationen zu Dienstendpunkten finden Sie unter Dienstendpunkte im virtuellen Netzwerk und Hinzufügen, Ändern oder Löschen von Subnetzen virtueller Netzwerke.

Wenn Sie mehrere virtuelle Netzwerke in Ihrem Konto verwenden, können Sie zwei virtuelle Netzwerke miteinander verbinden, damit die Ressourcen in jedem virtuellen Netzwerk miteinander kommunizieren können. Informationen zur Vorgehensweise finden Sie unter Herstellen von Verbindungen zwischen virtuellen Netzwerken.