Begränsa nätverksåtkomsten till PaaS-resurser med tjänstslutpunkter för virtuella nätverk med hjälp av PowerShell

Med tjänstslutpunkter för virtuellt nätverk kan du begränsa nätverksåtkomsten till vissa Azure-tjänsters resurser till ett undernät för virtuella datorer. Du kan också ta bort resursernas internetåtkomst. Tjänstslutpunkterna möjliggör direktanslutning från ditt virtuella nätverk till Azure-tjänster som stöds, så att du kan använda det privata adressutrymmet i det virtuella nätverket för åtkomst till Azure-tjänsterna. Trafik till Azure-resurser genom tjänstslutpunkterna finns alltid kvar i Microsoft Azure-stamnätverket. I den här artikeln kan du se hur du:

  • Skapa ett virtuellt nätverk med ett undernät
  • Lägga till ett undernät och aktivera en tjänstslutpunkt
  • Skapa en Azure-resurs och tillåt nätverksåtkomst till den från enbart ett undernät
  • Distribuera en virtuell dator (VM) till varje undernät
  • Bekräfta åtkomst till en resurs från ett undernät
  • Bekräfta att åtkomst nekas för en resurs från ett undernät och internet

Om du inte har någon Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.

Azure Cloud Shell

Azure är värd för Azure Cloud Shell, en interaktiv gränssnittsmiljö som du kan använda via webbläsaren. Du kan använda antingen Bash eller PowerShell med Cloud Shell för att arbeta med Azure-tjänster. Du kan använda förinstallerade Cloud Shell-kommandon för att köra koden i den här artikeln, utan att behöva installera något i din lokala miljö.

Så här startar du Azure Cloud Shell:

Alternativ Exempel/länk
Välj Prova i det övre högra hörnet i en kod eller ett kommandoblock. Om du väljer Prova kopieras inte koden eller kommandot automatiskt till Cloud Shell. Screenshot that shows an example of Try It for Azure Cloud Shell.
Gå till https://shell.azure.com eller Välj knappen Starta Cloud Shell för att öppna Cloud Shell i webbläsaren. Button to launch Azure Cloud Shell.
Välj knappen Cloud Shell på menyn längst upp till höger i Azure-portalen. Screenshot that shows the Cloud Shell button in the Azure portal

Så här använder du Azure Cloud Shell:

  1. Starta Cloud Shell.

  2. Välj knappen Kopiera i ett kodblock (eller kommandoblock) för att kopiera koden eller kommandot.

  3. Klistra in koden eller kommandot i Cloud Shell-sessionen genom att välja Ctrl+Skift+V i Windows och Linux, eller genom att välja Cmd+Shift+V på macOS.

  4. Välj Retur för att köra koden eller kommandot.

Om du väljer att installera och använda PowerShell lokalt kräver den här artikeln Azure PowerShell-modulen version 1.0.0 eller senare. Kör Get-Module -ListAvailable Az för att hitta den installerade versionen. Om du behöver uppgradera kan du läsa Install Azure PowerShell module (Installera Azure PowerShell-modul). Om du kör PowerShell lokalt måste du också köra Connect-AzAccount för att skapa en anslutning till Azure.

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 New-AzResourceGroup. I följande exempel skapas en resursgrupp med namnet myResourceGroup:

New-AzResourceGroup -ResourceGroupName myResourceGroup -Location EastUS

Skapa ett virtuellt nätverk med hjälp av New-AzVirtualNetwork. I följande exempel skapas ett virtuellt nätverk med namnet myVirtualNetwork med adressprefixet 10.0.0.0/16.

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

Skapa en undernätskonfiguration med New-AzVirtualNetworkSubnetConfig. I följande exempel skapas en undernätskonfiguration för ett undernät med namnet Public:

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

Skapa undernätet i det virtuella nätverket genom att skriva undernätskonfigurationen till det virtuella nätverket med Set-AzVirtualNetwork:

$virtualNetwork | Set-AzVirtualNetwork

Aktivera en tjänstslutpunkt

Du kan endast aktivera tjänstslutpunkter för tjänster som stöder tjänstslutpunkter. Visa tjänstslutpunktsaktiverade tjänster som är tillgängliga på en Azure-plats med Get-AzVirtualNetworkAvailableEndpointService. I följande exempel returneras en lista över tjänstslutpunktsaktiverade tjänster som är tillgängliga i regionen eastus . Listan över tjänster som returneras växer med tiden när fler Azure-tjänster blir tjänstslutpunkter aktiverade.

Get-AzVirtualNetworkAvailableEndpointService -Location eastus | Select Name

Skapa ytterligare ett undernät i det virtuella nätverket. I det här exemplet skapas ett undernät med namnet Privat med en tjänstslutpunkt för Microsoft.Storage:

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

$virtualNetwork | Set-AzVirtualNetwork

Begränsa nätverksåtkomst för ett undernät

Skapa säkerhetsregler för nätverkssäkerhetsgrupper med New-AzNetworkSecurityRuleConfig. Följande regel tillåter utgående åtkomst till de offentliga IP-adresser som tilldelats Azure Storage-tjänsten:

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

Följande regel nekar å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.

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

Följande regel tillåter fjärrskrivbordsprotokolltrafik (RDP) inkommande till undernätet var som helst. Fjärrskrivbordsanslutningar tillåts till undernätet, så att du kan bekräfta nätverksåtkomsten till en resurs i ett senare steg.

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

Skapa en nätverkssäkerhetsgrupp med New-AzNetworkSecurityGroup. I följande exempel skapas en nätverkssäkerhetsgrupp med namnet myNsgPrivate.

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

Associera nätverkssäkerhetsgruppen till det privata undernätet med Set-AzVirtualNetworkSubnetConfig och skriv sedan undernätskonfigurationen till det virtuella nätverket. I följande exempel associeras nätverkssäkerhetsgruppen myNsgPrivate med det privata undernätet:

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

$virtualNetwork | Set-AzVirtualNetwork

Begränsa nätverksåtkomst till en resurs

De steg som behövs för att begränsa nätverksåtkomsten till resurser som har skapats via Azure-tjänster som är aktiverade för tjänstslutpunkter varierar från tjänst till tjänst. Läs dokumentationen för enskilda tjänster för specifika åtgärder för varje tjänst. Resten av den här artikeln innehåller steg för att begränsa nätverksåtkomsten för ett Azure Storage-konto, till exempel.

Skapa ett lagringskonto

Skapa ett Azure Storage-konto med New-AzStorageAccount. Ersätt <replace-with-your-unique-storage-account-name> med ett namn som är unikt på alla Azure-platser, mellan 3 och 24 tecken långt, med endast siffror och gemener.

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

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

När lagringskontot har skapats hämtar du nyckeln för lagringskontot till en variabel med Get-AzStorageAccountKey:

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

Nyckeln används för att skapa en filresurs i ett senare steg. Ange $storageAcctKey och notera värdet eftersom du också måste ange det manuellt i ett senare steg när du mappar filresursen till en enhet i en virtuell dator.

Skapa en filresurs i lagringskontot

Skapa en kontext för ditt lagringskonto och din nyckel med New-AzStorageContext. Kontexten kapslar in lagringskontots namn och kontonyckel:

$storageContext = New-AzStorageContext $storageAcctName $storageAcctKey

Skapa en filresurs med New-AzStorageShare:

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

Neka all nätverksåtkomst till ett lagringskonto

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 Update-AzStorageAccountNetworkRuleSet. När nätverksåtkomsten nekas är lagringskontot inte tillgängligt från något nätverk.

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

Aktivera nätverksåtkomst från ett undernät

Hämta det skapade virtuella nätverket med Get-AzVirtualNetwork och hämta sedan det privata undernätsobjektet till en variabel med Get-AzVirtualNetworkSubnetConfig:

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

Tillåt nätverksåtkomst till lagringskontot från det privata undernätet med Add-AzStorageAccountNetworkRule.

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

Skapa virtuella datorer

Om du vill testa nätverksåtkomsten till ett lagringskonto distribuerar du en virtuell dator till varje undernät.

Skapa din första virtuella dator

Skapa en virtuell dator i det offentliga undernätet med New-AzVM. När du kör kommandot nedan uppmanas du att ange autentiseringsuppgifter. De värden som du anger konfigureras som användarnamn och lösenord för den virtuella datorn. Alternativet -AsJob skapar den virtuella datorn i bakgrunden, så att du kan fortsätta till nästa steg.

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

Utdata som liknar följande exempelutdata returneras:

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

Skapa den andra virtuella datorn

Skapa en virtuell dator i det privata undernätet:

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

Det tar några minuter för Azure att skapa den virtuella datorn. Fortsätt inte till nästa steg förrän Azure har skapat den virtuella datorn och returnerar utdata till PowerShell.

Bekräfta åtkomst till lagringskontot

Använd Get-AzPublicIpAddress för att returnera den offentliga IP-adressen för en virtuell dator. I följande exempel returneras den offentliga IP-adressen för den virtuella datorn myVmPrivate :

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

Ersätt <publicIpAddress> i följande kommando med den offentliga IP-adressen som returnerades från föregående kommando och ange sedan följande kommando:

mstsc /v:<publicIpAddress>

En RDP-fil (Remote Desktop Protocol) skapas och laddas ned till datorn. Öppna den nedladdade rdp-filen. Välj Anslut om du uppmanas att göra det. Ange användarnamnet och lösenordet du angav när du skapade den virtuella datorn. Du kan behöva välja Fler alternativ och sedan Använd ett annat konto för att ange autentiseringsuppgifterna du angav när du skapade den virtuella datorn. Välj OK. Du kan få en certifikatvarning under inloggningen. Om du ser varningen väljer du Ja eller Fortsätt för att fortsätta med anslutningen.

På den virtuella datorn myVmPrivate mappar du Azure-fildelningen till enhet Z med PowerShell. Innan du kör kommandona som följer ersätter <storage-account-key> du och <storage-account-name> med värden från du angav eller hämtade i Skapa ett lagringskonto.

$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 returnerar utdata som liknar följande exempelutdata:

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

Azure-fildelningen har mappats till enhet Z.

Bekräfta att den virtuella datorn inte har någon utgående anslutning till andra offentliga IP-adresser:

ping bing.com

Du får inga svar eftersom nätverkssäkerhetsgruppen som är kopplad till det privata undernätet inte tillåter utgående åtkomst till offentliga IP-adresser förutom de adresser som är kopplade till Azure Storage-tjänsten.

Stäng fjärrskrivbordssessionen för den virtuella datorn myVmPrivate.

Bekräfta att åtkomst till lagringskontot nekas

Hämta den offentliga IP-adressen för den virtuella datorn myVmPublic :

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

Ersätt <publicIpAddress> i följande kommando med den offentliga IP-adressen som returnerades från föregående kommando och ange sedan följande kommando:

mstsc /v:<publicIpAddress>

På den virtuella datorn myVmPublic försöker du mappa Azure-filresursen för att köra Z. Innan du kör kommandona som följer ersätter <storage-account-key> du och <storage-account-name> med värden från du angav eller hämtade i Skapa ett lagringskonto.

$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

Åtkomst till resursen nekas och du får ett New-PSDrive : Access is denied felmeddelande. Åtkomst nekas eftersom den virtuella datorn myVmPublic distribueras i det offentliga undernätet. Det offentliga undernätet har ingen tjänstslutpunkt aktiverad för Azure Storage, och lagringskontot tillåter endast nätverksåtkomst från det privata undernätet, inte det offentliga.

Stäng fjärrskrivbordssessionen för den virtuella datorn myVmPublic.

Från datorn försöker du visa filresurserna i lagringskontot med följande kommando:

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

Åtkomst nekas och du får en Get-AzStorageFile : Fjärrservern returnerade ett fel: (403) Förbjudet. HTTP-statuskod: 403 – HTTP-felmeddelande: Den här begäran har inte behörighet att utföra det här åtgärdsfelet eftersom datorn inte finns i det privata undernätet i det virtuella nätverket MyVirtualNetwork .

Rensa resurser

När den inte längre behövs kan du använda Remove-AzResourceGroup för att ta bort resursgruppen och alla resurser som den innehåller:

Remove-AzResourceGroup -Name myResourceGroup -Force

Nästa steg

I den här artikeln har du aktiverat en tjänstslutpunkt för ett virtuellt nätverksundernät. Du har lärt dig att tjänstslutpunkter kan aktiveras för resurser som distribueras med flera Azure-tjänster. Du har skapat ett Azure Storage-konto och begränsat nätverksåtkomst för lagringskontot till enbart resurser inom ett undernät för ett virtuellt nätverk. Om du vill veta mer om tjänstslutpunkter går du till Översikt över tjänstslutpunkter och Hantera undernät.

Om du har flera virtuella nätverk i ditt konto kanske du vill ansluta två virtuella nätverk så att resurserna i vart och ett kan kommunicera med varandra. Mer information finns i Anslut virtuella nätverk.