Netwerktoegang tot PaaS-resources beperken met service-eindpunten voor virtuele netwerken met behulp van PowerShell

Met service-eindpunten voor virtuele netwerken kunt u de netwerktoegang tot sommige Azure-servicebronnen beperken tot een subnet van een virtueel netwerk. U kunt ook internettoegang tot de resources verwijderen. Service-eindpunten zorgen voor een rechtstreekse verbinding van uw virtuele netwerk met ondersteunde Azure-services, zodat u de privéadresruimte van uw virtuele netwerk kunt gebruiken voor toegang tot de Azure-services. Verkeer dat bestemd is voor Azure-resources via de service-eindpunten blijft altijd op het Microsoft Azure-backbone-netwerk. In dit artikel leert u het volgende:

  • Een virtueel netwerk maken met één subnet
  • Een subnet toevoegen en een service-eindpunt inschakelen
  • Een Azure-resource maken en alleen toegang ertoe toestaan vanaf een subnet
  • Een virtuele machine (VM) implementeren op elk subnet
  • Toegang tot een resource vanaf een subnet bevestigen
  • Bevestigen dat toegang wordt geweigerd aan een resource vanaf een subnet en internet

Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

Azure Cloud Shell

Azure host Azure Cloud Shell, een interactieve shell-omgeving die u via uw browser kunt gebruiken. U kunt Bash of PowerShell gebruiken met Cloud Shell om met Azure-services te werken. U kunt de vooraf geïnstalleerde Cloud Shell-opdrachten gebruiken om de code in dit artikel uit te voeren zonder dat u iets hoeft te installeren in uw lokale omgeving.

Om Azure Cloud Shell op te starten:

Optie Voorbeeld/koppeling
Selecteer Uitproberen in de rechterbovenhoek van een code- of opdrachtblok. Als u Try It selecteert, wordt de code of opdracht niet automatisch gekopieerd naar Cloud Shell. Screenshot that shows an example of Try It for Azure Cloud Shell.
Ga naar https://shell.azure.com, of selecteer de knop Cloud Shell starten om Cloud Shell in uw browser te openen. Button to launch Azure Cloud Shell.
Klik op de knop Cloud Shell in het menu in de balk rechtsboven in de Azure-portal. Screenshot that shows the Cloud Shell button in the Azure portal

Azure Cloud Shell gebruiken:

  1. Start Cloud Shell.

  2. Selecteer de knop Kopiëren op een codeblok (of opdrachtblok) om de code of opdracht te kopiëren.

  3. Plak de code of opdracht in de Cloud Shell-sessie door Ctrl+Shift+V in Windows en Linux te selecteren of door Cmd+Shift+V te selecteren in macOS.

  4. Selecteer Enter om de code of opdracht uit te voeren.

Als u PowerShell lokaal wilt installeren en gebruiken, is voor dit artikel versie 1.0.0 of hoger van de Azure PowerShell-module vereist. Voer Get-Module -ListAvailable Az uit om te kijken welke versie is geïnstalleerd. Als u PowerShell wilt upgraden, raadpleegt u De Azure PowerShell-module installeren. Als u PowerShell lokaal uitvoert, moet u ook Connect-AzAccount uitvoeren om verbinding te kunnen maken met Azure.

Een virtueel netwerk maken

Voordat u een virtueel netwerk maakt, moet u een resourcegroep maken voor het virtuele netwerk en alle andere resources die in dit artikel zijn gemaakt. Maak een resourcegroep met behulp van de opdracht New-AzResourceGroup. In het volgende voorbeeld wordt een resourcegroep met de naam myResourceGroup gemaakt:

New-AzResourceGroup -ResourceGroupName myResourceGroup -Location EastUS

Maak een virtueel netwerk met New-AzVirtualNetwork. In het volgende voorbeeld wordt een virtueel netwerk gemaakt met de naam myVirtualNetwork met het adresvoorvoegsel 10.0.0.0/16.

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

Maak een subnetconfiguratie met New-AzVirtualNetworkSubnetConfig. In het volgende voorbeeld wordt een subnetconfiguratie gemaakt voor een subnet met de naam Openbaar:

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

Maak het subnet in het virtuele netwerk door de subnetconfiguratie naar het virtuele netwerk te schrijven met Set-AzVirtualNetwork:

$virtualNetwork | Set-AzVirtualNetwork

Een service-eindpunt inschakelen

U kunt service-eindpunten alleen inschakelen voor services die service-eindpunten ondersteunen. Bekijk service-eindpuntservices die beschikbaar zijn op een Azure-locatie met Get-AzVirtualNetworkAvailableEndpointService. In het volgende voorbeeld wordt een lijst met services met service-eindpunten geretourneerd die beschikbaar zijn in de regio Eastus . De lijst met geretourneerde services neemt na verloop van tijd toe naarmate er meer Azure-services worden ingeschakeld.

Get-AzVirtualNetworkAvailableEndpointService -Location eastus | Select Name

Maak een extra subnet in het virtuele netwerk. In dit voorbeeld wordt een subnet met de naam Privé gemaakt met een service-eindpunt voor Microsoft.Storage:

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

$virtualNetwork | Set-AzVirtualNetwork

Netwerktoegang voor een subnet beperken

Maak beveiligingsregels voor netwerkbeveiligingsgroepen met New-AzNetworkSecurityRuleConfig. De volgende regel staat uitgaande toegang toe tot de openbare IP-adressen die zijn toegewezen aan de Azure Storage-service:

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

Met de volgende regel wordt de toegang tot alle openbare IP-adressen geweigerd. De vorige regel overschrijft deze regel vanwege de hogere prioriteit, waardoor toegang tot de openbare IP-adressen van Azure Storage mogelijk is.

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

Met de volgende regel kan RDP-verkeer (Remote Desktop Protocol) binnenkomend naar het subnet vanaf elke locatie. Externe bureaubladverbindingen zijn toegestaan voor het subnet, zodat u in een latere stap de netwerktoegang tot een resource kunt bevestigen.

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

Maak een netwerkbeveiligingsgroep met New-AzNetworkSecurityGroup. In het volgende voorbeeld wordt een netwerkbeveiligingsgroep met de naam myNsgPrivate gemaakt.

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

Koppel de netwerkbeveiligingsgroep aan het privésubnet met Set-AzVirtualNetworkSubnetConfig en schrijf vervolgens de subnetconfiguratie naar het virtuele netwerk. In het volgende voorbeeld wordt de netwerkbeveiligingsgroep myNsgPrivate gekoppeld aan het privésubnet :

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

$virtualNetwork | Set-AzVirtualNetwork

Netwerktoegang tot een resource beperken

De stappen die nodig zijn om netwerktoegang te beperken tot resources die zijn gemaakt met Azure-services waarvoor service-eindpunten zijn ingeschakeld, verschillen per service. Zie de documentatie voor afzonderlijke services voor specifieke stappen voor elke service. De rest van dit artikel bevat stappen voor het beperken van de netwerktoegang voor een Azure Storage-account, bijvoorbeeld.

Een opslagaccount maken

Maak een Azure-opslagaccount met New-AzStorageAccount. Vervang <replace-with-your-unique-storage-account-name> door een naam die uniek is voor alle Azure-locaties, tussen 3 en 24 tekens lang, met alleen cijfers en kleine letters.

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

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

Nadat het opslagaccount is gemaakt, haalt u de sleutel voor het opslagaccount op in een variabele met Get-AzStorageAccountKey:

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

De sleutel wordt gebruikt om een bestandsshare te maken in een latere stap. Voer $storageAcctKey de waarde in en noteer deze, want u moet deze ook handmatig invoeren in een latere stap wanneer u de bestandsshare toe wijst aan een station in een VIRTUELE machine.

Een bestandsshare maken in het opslagaccount

Maak een context voor uw opslagaccount en sleutel met New-AzStorageContext. De context bevat de naam van het opslagaccount en de accountsleutel:

$storageContext = New-AzStorageContext $storageAcctName $storageAcctKey

Maak een bestandsshare met New-AzStorageShare:

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

Alle netwerktoegang tot een opslagaccount weigeren

Standaard accepteren opslagaccounts netwerkverbindingen van clients in ieder netwerk. Als u de toegang tot geselecteerde netwerken wilt beperken, wijzigt u de standaardactie in Weigeren met Update-AzStorageAccountNetworkRuleSet. Nadat de netwerktoegang is geweigerd, is het opslagaccount niet via elk netwerk toegankelijk.

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

Netwerktoegang vanuit een subnet inschakelen

Haal het gemaakte virtuele netwerk op met Get-AzVirtualNetwork en haal vervolgens het privésubnetobject op in een variabele met Get-AzVirtualNetworkSubnetConfig:

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

Netwerktoegang tot het opslagaccount toestaan vanuit het privésubnet met Add-AzStorageAccountNetworkRule.

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

Virtuele machines maken

Implementeer een VM in elk subnet om de netwerktoegang tot een opslagaccount te testen.

De eerste virtuele machine maken

Maak een virtuele machine in het openbare subnet met New-AzVM. Wanneer de volgende opdracht wordt uitgevoerd, wordt u gevraagd referenties op te geven. De waarden die u invoert, worden geconfigureerd als de gebruikersnaam en het wachtwoord voor de virtuele machine. Met de optie -AsJob wordt de virtuele machine op de achtergrond gemaakt, zodat u kunt doorgaan met de volgende stap.

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

Uitvoer die vergelijkbaar is met de volgende voorbeelduitvoer wordt geretourneerd:

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

De tweede virtuele machine maken

Maak een virtuele machine in het privésubnet :

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

Het duurt enkele minuten voordat Azure de virtuele machine heeft gemaakt. Ga niet verder met de volgende stap totdat Azure klaar is met het maken van de VIRTUELE machine en retourneert uitvoer naar PowerShell.

Toegang tot opslagaccount bevestigen

Gebruik Get-AzPublicIpAddress om het openbare IP-adres van een virtuele machine op te halen. In het volgende voorbeeld wordt het openbare IP-adres van de myVmPrivate-VM geretourneerd:

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

Vervang <publicIpAddress> in de volgende opdracht door het openbare IP-adres dat met de vorige opdracht is geretourneerd en voer vervolgens de volgende opdracht in:

mstsc /v:<publicIpAddress>

Er wordt een Remote Desktop Protocol-bestand (.rdp) gemaakt en gedownload naar uw computer. Open het gedownloade RDP-bestand. Selecteer Verbinding maken wanneer hierom wordt gevraagd. Voer de gebruikersnaam en het wachtwoord in die u hebt opgegeven bij het maken van de virtuele machine. Mogelijk moet u Meer opties en vervolgens Een ander account gebruiken selecteren om de aanmeldingsgegevens op te geven die u hebt ingevoerd tijdens het maken van de VM. Selecteer OK. Er wordt mogelijk een certificaatwaarschuwing weergegeven tijdens het aanmelden. Als u de waarschuwing ontvangt, selecteert u Ja of Doorgaan om door te gaan met de verbinding.

Wijs op de VM myVmPrivate de Azure-bestandsshare toe aan station Z met behulp van PowerShell. Voordat u de volgende opdrachten uitvoert, vervangt <storage-account-key> u de <storage-account-name> waarden die u hebt opgegeven of opgehaald in Een opslagaccount maken.

$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 retourneert uitvoer die er ongeveer zo uitziet als in dit voorbeeld:

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

De Azure-bestandsshare is toegewezen aan station Z.

Controleer of de VIRTUELE machine geen uitgaande connectiviteit heeft met andere openbare IP-adressen:

ping bing.com

U krijgt geen antwoorden, omdat de netwerkbeveiligingsgroep die is gekoppeld aan het Privé-subnet geen uitgaande toegang toestaat aan andere openbare IP-adressen dan de adressen die zijn toegewezen aan de Azure Storage-service.

Sluit de externe bureaubladsessie naar de VM myVmPrivate.

Bevestigen dat toegang tot opslagaccount wordt geweigerd

Haal het openbare IP-adres van de myVmPublic-VM op:

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

Vervang <publicIpAddress> in de volgende opdracht door het openbare IP-adres dat met de vorige opdracht is geretourneerd en voer vervolgens de volgende opdracht in:

mstsc /v:<publicIpAddress>

Probeer op de vm myVmPublic de Azure-bestandsshare toe te wijzen aan station Z. Voordat u de volgende opdrachten uitvoert, vervangt <storage-account-key> u de <storage-account-name> waarden die u hebt opgegeven of opgehaald in Een opslagaccount maken.

$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

De toegang tot de share wordt geweigerd en u ontvangt een New-PSDrive : Access is denied foutmelding. De toegang wordt geweigerd omdat de VM myVmPublic is geïmplementeerd in het Openbare subnet. Het Openbare subnet heeft geen service-eindpunt ingeschakeld voor Azure Storage en het opslagaccount staat alleen netwerktoegang toe van het Privé-subnet, en niet van het Openbaresubnet.

Sluit de externe bureaubladsessie naar de VM myVmPublic.

Probeer vanaf uw computer de bestandsshares in het opslagaccount weer te geven met de volgende opdracht:

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

De toegang wordt geweigerd en u ontvangt een Get-AzStorageFile: de externe server heeft een fout geretourneerd: (403) Verboden. HTTP-statuscode: 403 - HTTP-foutbericht: deze aanvraag is niet gemachtigd om deze bewerkingsfout uit te voeren, omdat uw computer zich niet in het privésubnet van het virtuele MyVirtualNetwork-netwerk bevindt.

Resources opschonen

U kunt de opdracht Remove-AzResourceGroup gebruiken om de resourcegroep en alle resources die deze bevat te verwijderen, wanneer u deze niet meer nodig hebt:

Remove-AzResourceGroup -Name myResourceGroup -Force

Volgende stappen

In dit artikel hebt u een service-eindpunt ingeschakeld voor een subnet van een virtueel netwerk. U hebt geleerd dat service-eindpunten kunnen worden ingeschakeld voor met meerdere Azure-services geïmplementeerde resources. U hebt een Azure Storage-account gemaakt en netwerktoegang tot het opslagaccount beperkt tot alleen resources binnen een subnet van een virtueel netwerk. Zie voor meer informatie over service-eindpunten Overzicht voor service-eindpunten en Subnetten beheren.

Als u meerdere virtuele netwerken in uw account hebt, kunt u twee virtuele netwerken met elkaar verbinden zodat de resources in beide virtuele netwerken met elkaar kunnen communiceren. Zie Verbinding maken virtuele netwerken voor meer informatie.