Så här styr du inkommande trafik till en App Service-miljön

Viktigt!

Den här artikeln handlar om App Service-miljön v1. App Service-miljön v1 går i pension den 31 augusti 2024. Det finns en ny version av App Service-miljön som är enklare att använda och köra på kraftfullare infrastruktur. Om du vill veta mer om den nya versionen börjar du med Introduktion till App Service-miljön. Om du för närvarande använder App Service-miljön v1 följer du stegen i den här artikeln för att migrera till den nya versionen.

Från och med den 29 januari 2024 kan du inte längre skapa nya App Service-miljön v1-resurser med någon av de tillgängliga metoderna, inklusive ARM/Bicep-mallar, Azure Portal, Azure CLI eller REST API. Du måste migrera till App Service-miljön v3 före den 31 augusti 2024 för att förhindra resursborttagning och dataförlust.

Översikt

En App Service-miljön kan skapas i ett virtuellt Azure Resource Manager-nätverk eller i ett virtuellt nätverk för den klassiska distributionsmodellen. Ett nytt virtuellt nätverk och ett nytt undernät kan definieras när en App Service-miljön skapas. I stället kan en App Service-miljön skapas i ett befintligt virtuellt nätverk och ett befintligt undernät. Från och med juni 2016 kan ASE:er också distribueras till virtuella nätverk som använder offentliga adressintervall eller RFC1918 adressutrymmen (privata adresser). Mer information finns i Skapa en ASEv1 från mall.

Skapa alltid en App Service-miljön i ett undernät. Ett undernät tillhandahåller en nätverksgräns som kan användas för att låsa inkommande trafik bakom överordnade enheter och tjänster. Med den här konfigurationen kan endast specifika överordnade IP-adresser acceptera HTTP- och HTTPS-trafik.

Inkommande och utgående nätverkstrafik i ett undernät styrs med hjälp av en nätverkssäkerhetsgrupp. Om du vill styra inkommande trafik skapar du nätverkssäkerhetsregler i en nätverkssäkerhetsgrupp. Tilldela sedan nätverkssäkerhetsgruppen det undernät som innehåller App Service-miljön.

När du har tilldelat en nätverkssäkerhetsgrupp till ett undernät tillåts eller blockeras inkommande trafik till appar i App Service-miljön baserat på reglerna för att tillåta och neka som definieras i nätverkssäkerhetsgruppen.

Kommentar

Även om den här artikeln handlar om webbappar, så gäller den även för API-appar och mobilappar.

Inkommande nätverksportar som används i en App Service-miljö

Innan du låser inkommande nätverkstrafik med en nätverkssäkerhetsgrupp bör du känna till den uppsättning nödvändiga och valfria nätverksportar som används av en App Service-miljön. Oavsiktligt stänga av trafik till vissa portar kan resultera i förlust av funktioner i en App Service-miljön.

Följande lista innehåller portarna som används av en App Service-miljön. Alla portar är TCP, om inget annat anges tydligt:

  • 454: Nödvändig port som används av Azure-infrastrukturen för att hantera och underhålla App Service-miljön via TLS. Blockera inte trafik till den här porten. Den här porten är alltid bunden till den offentliga VIP:en för en ASE.
  • 455: Nödvändig port som används av Azure-infrastrukturen för hantering och underhåll av App Service-miljön via TLS. Blockera inte trafik till den här porten. Den här porten är alltid bunden till den offentliga VIP:en för en ASE.
  • 80: Standardport för inkommande HTTP-trafik till appar som körs i App Service-planer i en App Service-miljön. På en ILB-aktiverad ASE är den här porten bunden till ILB-adressen för ASE.
  • 443: Standardport för inkommande TLS-trafik till appar som körs i App Service-planer i en App Service-miljön. På en ILB-aktiverad ASE är den här porten bunden till ILB-adressen för ASE.
  • 21: Kontrollkanal för FTP. Den här porten kan blockeras på ett säkert sätt om FTP inte används. På en ILB-aktiverad ASE kan den här porten bindas till ILB-adressen för en ASE.
  • 990: Kontrollkanal för FTPS. Den här porten kan blockeras på ett säkert sätt om FTPS inte används. På en ILB-aktiverad ASE kan den här porten bindas till ILB-adressen för en ASE.
  • 10001-10020: Datakanaler för FTP. Precis som med kontrollkanalen kan dessa portar blockeras på ett säkert sätt om FTP inte används. På en ILB-aktiverad ASE kan den här porten bindas till ASE:s ILB-adress.
  • 4016: Används för fjärrfelsökning med Visual Studio 2012. Den här porten kan blockeras på ett säkert sätt om funktionen inte används. På en ILB-aktiverad ASE är den här porten bunden till ILB-adressen för ASE.
  • 4018: Används för fjärrfelsökning med Visual Studio 2013. Den här porten kan blockeras på ett säkert sätt om funktionen inte används. På en ILB-aktiverad ASE är den här porten bunden till ILB-adressen för ASE.
  • 4020: Används för fjärrfelsökning med Visual Studio 2015. Den här porten kan blockeras på ett säkert sätt om funktionen inte används. På en ILB-aktiverad ASE är den här porten bunden till ILB-adressen för ASE.
  • 4022: Används för fjärrfelsökning med Visual Studio 2017. Den här porten kan blockeras på ett säkert sätt om funktionen inte används. På en ILB-aktiverad ASE är den här porten bunden till ILB-adressen för ASE.
  • 4024 Används för fjärrfelsökning med Visual Studio 2019. Den här porten kan blockeras på ett säkert sätt om funktionen inte används. På en ILB-aktiverad ASE är den här porten bunden till ILB-adressen för ASE.
  • 4026: Används för fjärrfelsökning med Visual Studio 2022. Den här porten kan blockeras på ett säkert sätt om funktionen inte används. På en ILB-aktiverad ASE är den här porten bunden till ILB-adressen för ASE.

Krav för utgående anslutning och DNS

För att en App Service-miljön ska fungera korrekt krävs också utgående åtkomst till olika slutpunkter. En fullständig lista över de externa slutpunkter som används av en ASE finns i avsnittet "Nödvändigt nätverk Anslut ivity" i artikeln Nätverkskonfiguration för ExpressRoute.

App Service-miljön kräver en giltig DNS-infrastruktur som konfigurerats för det virtuella nätverket. Om DNS-konfigurationen ändras när en App Service-miljön har skapats kan utvecklare tvinga en App Service-miljön att hämta den nya DNS-konfigurationen. Om du utlöser en omstart av en rullande miljö med hjälp av omstartsikonen hämtar miljön den nya DNS-konfigurationen. (Den Omstartsikonen finns överst på bladet App Service-miljön hantering i Azure-portalen.)

Vi rekommenderar också att alla anpassade DNS-servrar på det virtuella nätverket konfigureras i förväg innan du skapar en App Service-miljön. Om dns-konfigurationen för ett virtuellt nätverk ändras när en App Service-miljön skapas misslyckas App Service-miljön skapandeprocessen. Om det finns en anpassad DNS-server som inte kan nås eller inte är tillgänglig i andra änden av en VPN-gateway misslyckas även App Service-miljön skapandeprocessen.

Skapa en nätverkssäkerhetsgrupp

Fullständig information om hur nätverkssäkerhetsgrupper fungerar finns i följande information. Azure Service Management-exemplet nedan berör höjdpunkterna i nätverkssäkerhetsgrupper. Exemplet konfigurerar och tillämpar en nätverkssäkerhetsgrupp på ett undernät som innehåller en App Service-miljön.

Obs! Nätverkssäkerhetsgrupper kan konfigureras grafiskt med hjälp av Azure-portalen eller via Azure PowerShell.

Nätverkssäkerhetsgrupper skapas först som en fristående entitet som är associerad med en prenumeration. Eftersom nätverkssäkerhetsgrupper skapas i en Azure-region skapar du nätverkssäkerhetsgruppen i samma region som App Service-miljön.

Följande kommando visar hur du skapar en nätverkssäkerhetsgrupp:

New-AzureNetworkSecurityGroup -Name "testNSGexample" -Location "South Central US" -Label "Example network security group for an app service environment"

När en nätverkssäkerhetsgrupp har skapats läggs en eller flera nätverkssäkerhetsregler till i den. Eftersom regeluppsättningen kan ändras över tid bör du ta bort det numreringsschema som används för regelprioriteringar. Den här metoden gör det enkelt att infoga ytterligare regler över tid.

I exemplet nedan ger en regel uttryckligen åtkomst till de hanteringsportar som krävs av Azure-infrastrukturen för att hantera och underhålla en App Service-miljön. All hanteringstrafik flödar över TLS och skyddas av klientcertifikat. Även om portarna öppnas är de otillgängliga för andra entiteter än Azure-hanteringsinfrastrukturen.

Get-AzureNetworkSecurityGroup -Name "testNSGexample" | Set-AzureNetworkSecurityRule -Name "ALLOW AzureMngmt" -Type Inbound -Priority 100 -Action Allow -SourceAddressPrefix 'INTERNET'  -SourcePortRange '*' -DestinationAddressPrefix '*' -DestinationPortRange '454-455' -Protocol TCP

När du låser åtkomsten till port 80 och 443 för att "dölja" en App Service-miljön bakom överordnade enheter eller tjänster ska du komma ihåg den överordnade IP-adressen. Om du till exempel använder en brandvägg för webbprogram (WAF) har WAF sin egen IP-adress eller sina egna adresser. WAF använder dem vid proxykörning av trafik till en nedströms App Service-miljön. Du måste använda den här IP-adressen i parametern SourceAddressPrefix i en nätverkssäkerhetsregel.

I exemplet nedan tillåts inkommande trafik från en specifik överordnad IP-adress uttryckligen. Adressen 1.2.3.4 används som platshållare för IP-adressen för en överordnad WAF. Ändra värdet så att det matchar den adress som används av din överordnade enhet eller tjänst.

Get-AzureNetworkSecurityGroup -Name "testNSGexample" | Set-AzureNetworkSecurityRule -Name "RESTRICT HTTP" -Type Inbound -Priority 200 -Action Allow -SourceAddressPrefix '1.2.3.4/32'  -SourcePortRange '*' -DestinationAddressPrefix '*' -DestinationPortRange '80' -Protocol TCP
Get-AzureNetworkSecurityGroup -Name "testNSGexample" | Set-AzureNetworkSecurityRule -Name "RESTRICT HTTPS" -Type Inbound -Priority 300 -Action Allow -SourceAddressPrefix '1.2.3.4/32'  -SourcePortRange '*' -DestinationAddressPrefix '*' -DestinationPortRange '443' -Protocol TCP

Om FTP-stöd önskas använder du följande regler som en mall för att bevilja åtkomst till FTP-kontrollporten och datakanalportarna. Eftersom FTP är ett tillståndskänsligt protokoll kanske du inte kan dirigera FTP-trafik via en traditionell HTTP/HTTPS-brandvägg eller proxyenhet. I det här fallet måste du ange SourceAddressPrefix till ett annat värde, till exempel IP-adressintervallet för utvecklare eller distributionsdatorer där FTP-klienter körs.

Get-AzureNetworkSecurityGroup -Name "testNSGexample" | Set-AzureNetworkSecurityRule -Name "RESTRICT FTPCtrl" -Type Inbound -Priority 400 -Action Allow -SourceAddressPrefix '1.2.3.4/32'  -SourcePortRange '*' -DestinationAddressPrefix '*' -DestinationPortRange '21' -Protocol TCP
Get-AzureNetworkSecurityGroup -Name "testNSGexample" | Set-AzureNetworkSecurityRule -Name "RESTRICT FTPDataRange" -Type Inbound -Priority 500 -Action Allow -SourceAddressPrefix '1.2.3.4/32'  -SourcePortRange '*' -DestinationAddressPrefix '*' -DestinationPortRange '10001-10020' -Protocol TCP

(Obs! Datakanalens portintervall kan ändras under förhandsgranskningsperioden.)

Om fjärrfelsökning med Visual Studio används visar följande regler hur du beviljar åtkomst. Det finns en separat regel för varje version av Visual Studio som stöds eftersom varje version använder en annan port för fjärrfelsökning. Precis som med FTP-åtkomst kanske fjärrfelsökningstrafiken inte flödar korrekt via en traditionell WAF- eller proxyenhet. SourceAddressPrefix kan i stället anges till IP-adressintervallet för utvecklardatorer som kör Visual Studio.

Get-AzureNetworkSecurityGroup -Name "testNSGexample" | Set-AzureNetworkSecurityRule -Name "RESTRICT RemoteDebuggingVS2012" -Type Inbound -Priority 600 -Action Allow -SourceAddressPrefix '1.2.3.4/32'  -SourcePortRange '*' -DestinationAddressPrefix '*' -DestinationPortRange '4016' -Protocol TCP
Get-AzureNetworkSecurityGroup -Name "testNSGexample" | Set-AzureNetworkSecurityRule -Name "RESTRICT RemoteDebuggingVS2013" -Type Inbound -Priority 700 -Action Allow -SourceAddressPrefix '1.2.3.4/32'  -SourcePortRange '*' -DestinationAddressPrefix '*' -DestinationPortRange '4018' -Protocol TCP
Get-AzureNetworkSecurityGroup -Name "testNSGexample" | Set-AzureNetworkSecurityRule -Name "RESTRICT RemoteDebuggingVS2015" -Type Inbound -Priority 800 -Action Allow -SourceAddressPrefix '1.2.3.4/32'  -SourcePortRange '*' -DestinationAddressPrefix '*' -DestinationPortRange '4020' -Protocol TCP

Tilldela en nätverkssäkerhetsgrupp till ett undernät

En nätverkssäkerhetsgrupp har en standardsäkerhetsregel som nekar åtkomst till all extern trafik. När du kombinerar den här regeln med nätverkssäkerhetsreglerna ovan kan endast trafik från källadressintervall som är associerade med en Tillåt-åtgärd skicka trafik till appar som körs i en App Service-miljön.

När en nätverkssäkerhetsgrupp har fyllts i med säkerhetsregler tilldelar du den till det undernät som innehåller App Service-miljön. Tilldelningskommandot refererar till två namn: namnet på det virtuella nätverk där App Service-miljön finns och namnet på det undernät där App Service-miljön skapades.

Exemplet nedan visar en nätverkssäkerhetsgrupp som tilldelas till ett undernät och ett virtuellt nätverk:

Get-AzureNetworkSecurityGroup -Name "testNSGexample" | Set-AzureNetworkSecurityGroupToSubnet -VirtualNetworkName 'testVNet' -SubnetName 'Subnet-test'

Tilldelningen är en tidskrävande åtgärd och det kan ta några minuter att slutföra. När tilldelningen av nätverkssäkerhetsgruppen har slutförts når endast inkommande trafik som matchar Tillåt-regler appar i App Service-miljön.

För fullständighet visar följande exempel hur du tar bort och kopplar bort nätverkssäkerhetsgruppen från undernätet:

Get-AzureNetworkSecurityGroup -Name "testNSGexample" | Remove-AzureNetworkSecurityGroupFromSubnet -VirtualNetworkName 'testVNet' -SubnetName 'Subnet-test'

Särskilda överväganden för explicit IP-SSL

Om en app har konfigurerats med en explicit IP-SSL-adress (gäller endast för ASE:er som har en offentlig VIP), i stället för att använda standard-IP-adressen för App Service-miljön, flödar både HTTP- och HTTPS-trafik till undernätet via andra portar än portarna 80 och 443.

Om du vill hitta det enskilda portparet som används av varje IP-SSL-adress går du till portalen och visar bladet App Service-miljön informations-UX. Välj Alla inställningars>IP-adresser. Bladet IP-adresser visar en tabell med alla uttryckligen konfigurerade IP-SSL-adresser för App Service-miljön. Bladet visar också det speciella portpar som används för att dirigera HTTP- och HTTPS-trafik som är associerad med varje IP-SSL-adress. Använd det här portparet för parametrarna DestinationPortRange när du konfigurerar regler i en nätverkssäkerhetsgrupp.

När en app i en ASE har konfigurerats för att använda IP-SSL ser eller behöver externa kunder inte bekymra sig om den särskilda portparmappningen. Trafik till apparna flödar normalt till den konfigurerade IP-SSL-adressen. Översättningen till det särskilda portparet sker automatiskt internt under routningstrafikens sista del till undernätet som innehåller ASE.

Komma igång

Information om hur du kommer igång med App Service-miljön finns i Introduktion till App Service-miljön.

Mer information finns i Ansluta säkert till serverdelsresurser från en App Service-miljön.

Kommentar

Om du vill komma igång med Azure App Service innan du registrerar dig för ett Azure-konto kan du gå till Prova App Service. Där kan du direkt skapa en tillfällig startwebbapp i App Service. Inga kreditkort krävs. Inga åtaganden.