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. | |
Gå till https://shell.azure.com eller Välj knappen Starta Cloud Shell för att öppna Cloud Shell i webbläsaren. | |
Välj knappen Cloud Shell på menyn längst upp till höger i Azure-portalen. |
Så här använder du Azure Cloud Shell:
Starta Cloud Shell.
Välj knappen Kopiera i ett kodblock (eller kommandoblock) för att kopiera koden eller kommandot.
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.
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.