Dela via


Integration av Application Gateway

Den här artikeln beskriver hur du konfigurerar Application Gateway med App Service med hjälp av privata slutpunkter för att skydda trafiken. I artikeln beskrivs även överväganden kring användning av tjänstslutpunkter och integrering med interna och externa App Service-miljön. Slutligen beskriver artikeln hur du anger åtkomstbegränsningar på en SCM-webbplats (Source Control Manager).

Integrering med App Service

Du kan använda privata slutpunkter för att skydda trafiken mellan Application Gateway och din App Service-app. Du måste se till att Application Gateway kan använda DNS för att matcha apptjänstapparnas privata IP-adress. Du kan också använda den privata IP-adressen i serverdelspoolen och åsidosätta värdnamnet i HTTP-inställningarna.

Diagram som visar trafik som flödar till en programgateway via en privat slutpunkt till instanser av appar i App Service.

Application Gateway cachelagrar DNS-sökningsresultatet. Om du använder fullständigt kvalificerade domännamn (FQDN) och förlitar dig på DNS-sökning för att hämta den privata IP-adressen kan du behöva starta om programgatewayen om DNS-uppdateringen eller länken till en privat Dns-zon i Azure skedde efter att du konfigurerat serverdelspoolen.

Starta om programgatewayen genom att stoppa och starta den med hjälp av Azure CLI:

az network application-gateway stop --resource-group myRG --name myAppGw
az network application-gateway start --resource-group myRG --name myAppGw

Läs mer om hur du konfigurerar en App Service-app med en privat slutpunkt.

Överväganden för att använda tjänstslutpunkter

Som ett alternativ till privata slutpunkter kan du använda tjänstslutpunkter för att skydda trafiken från Application Gateway. Genom att använda tjänstslutpunkter kan du endast tillåta trafik från ett specifikt undernät i ett virtuellt Azure-nätverk och blockera allt annat. I följande scenario använder du den här funktionen för att säkerställa att en App Service-instans endast kan ta emot trafik från en specifik programgateway.

Diagram som visar internet som flödar till en programgateway i ett virtuellt Azure-nätverk och sedan flödar genom en brandväggsikon till instanser av appar i App Service.

Det finns två delar i den här konfigurationen, förutom att skapa App Service-appinstansen och programgatewayen. Den första delen är att aktivera tjänstslutpunkter i undernätet för det virtuella nätverk där programgatewayen distribueras. Tjänstslutpunkter ser till att all nätverkstrafik som lämnar undernätet mot App Service taggas med det specifika undernäts-ID:t.

Den andra delen är att ange en åtkomstbegränsning för den specifika webbappen för att säkerställa att endast trafik som är taggad med det här specifika undernäts-ID:t tillåts. Du kan konfigurera åtkomstbegränsningen med hjälp av olika verktyg, beroende på vad du föredrar.

Med Azure Portal följer du fyra steg för att skapa och konfigurera konfigurationen av App Service och Application Gateway. Om du har befintliga resurser kan du hoppa över de första stegen.

  1. Skapa en App Service-instans med hjälp av någon av snabbstarterna i App Service-dokumentationen. Ett exempel är .NET Core-snabbstarten.
  2. Skapa en programgateway med hjälp av portalens snabbstart, men hoppa över avsnittet om att lägga till serverdelsmål.
  3. Konfigurera App Service som en serverdel i Application Gateway, men hoppa över avsnittet om att begränsa åtkomsten.
  4. Skapa åtkomstbegränsningen med hjälp av tjänstslutpunkter.

Nu kan du komma åt App Service via Application Gateway. Om du försöker komma åt App Service direkt bör du få ett 403 HTTP-fel som säger att webbappen blockerar din åtkomst.

Skärmbild som visar texten i Fel 403 – Förbjudet.

Överväganden för en intern App Service-miljön

En intern App Service-miljön exponeras inte för Internet. Trafiken mellan instansen och en programgateway är redan isolerad till det virtuella nätverket. Information om hur du konfigurerar en intern App Service-miljön och integrerar den med en programgateway med hjälp av Azure Portal finns i instruktioner.

Om du vill se till att endast trafik från Application Gateway-undernätet når App Service-miljön kan du konfigurera en nätverkssäkerhetsgrupp (NSG) som påverkar alla webbappar i App Service-miljön. För NSG kan du ange IP-intervallet för undernätet och valfritt portarna (80/443).

Om du vill isolera trafik till en enskild webbapp måste du använda IP-baserade åtkomstbegränsningar eftersom tjänstslutpunkter inte fungerar med en App Service-miljön. IP-adressen ska vara den privata IP-adressen för programgatewayen.

Överväganden för en extern App Service-miljön

En extern App Service-miljön har en offentlig lastbalanserare som App Service-appar med flera klientorganisationer. Tjänstslutpunkter fungerar inte för en App Service-miljön. Med App Service-miljön kan du använda IP-baserade åtkomstbegränsningar med hjälp av programgatewayens offentliga IP-adress. Om du vill skapa en extern App Service-miljön med hjälp av Azure Portal kan du följa den här snabbstarten.

Du kan också lägga till privata slutpunkter i appar som finns på en extern App Service-miljön.

Överväganden för en Kudu/SCM-webbplats

SCM-webbplatsen, även kallad Kudu, är en administratörswebbplats som finns för varje webbapp. Det går inte att använda omvänd proxy för SCM-webbplatsen. Du vill förmodligen också låsa den till enskilda IP-adresser eller ett specifikt undernät.

Om du vill använda samma åtkomstbegränsningar som huvudwebbplatsen kan du ärva inställningarna med hjälp av följande kommando:

az webapp config access-restriction set --resource-group myRG --name myWebApp --use-same-restrictions-for-scm-site

Om du vill lägga till enskilda åtkomstbegränsningar för SCM-webbplatsen kan du använda --scm-site flaggan:

az webapp config access-restriction add --resource-group myRG --name myWebApp --scm-site --rule-name KudoAccess --priority 200 --ip-address 208.130.0.0/16

Överväganden för att använda standarddomänen

Att konfigurera Application Gateway för att åsidosätta värdnamnet och använda standarddomänen för App Service (vanligtvis azurewebsites.net) är det enklaste sättet att konfigurera integreringen. Det kräver inte att du konfigurerar en anpassad domän och ett certifikat i App Service.

I den här artikeln beskrivs allmänna överväganden för att åsidosätta det ursprungliga värdnamnet. I App Service finns det två scenarier där du måste vara uppmärksam på den här konfigurationen.

Autentisering

När du använder autentiseringsfunktionen i App Service (kallas även Easy Auth) omdirigeras appen vanligtvis till inloggningssidan. Eftersom App Service inte känner till det ursprungliga värdnamnet för begäran görs omdirigeringen på standarddomännamnet och resulterar vanligtvis i ett fel.

Om du vill kringgå standardomdirigeringen kan du konfigurera autentisering för att inspektera ett vidarebefordrat huvud och anpassa omdirigeringsdomänen till den ursprungliga domänen. Application Gateway använder en rubrik med namnet X-Original-Host. Genom att använda filbaserad konfiguration för att konfigurera autentisering kan du konfigurera App Service så att det anpassas till det ursprungliga värdnamnet. Lägg till den här konfigurationen i konfigurationsfilen:

{
    ...
    "httpSettings": {
        "forwardProxy": {
            "convention": "Custom",
            "customHostHeaderName": "X-Original-Host"
        }
    }
    ...
}

Sessionstillhörighet

I distributioner med flera instanser säkerställer sessionstillhörighet att klientbegäranden dirigeras till samma instans under sessionens livslängd. Sessionstillhörighet kan konfigureras för att anpassa cookiedomänen till det inkommande huvudet från omvänd proxy. Genom att konfigurera sessionstillhörighetsproxyn till true söker X-Original-Host sessionstillhörighet efter eller X-Forwarded-Host anpassar cookiedomänen till domänen som finns i den här rubriken. Som en rekommenderad metod när du aktiverar sessionstillhörighetsproxy bör du konfigurera åtkomstbegränsningarna på webbplatsen för att säkerställa att trafiken kommer från den omvända proxyn.

Du kan också konfigurera clientAffinityProxyEnabled med hjälp av följande kommando:

az resource update --resource-group myRG --name myWebApp --resource-type "Microsoft.Web/sites" --set properties.clientAffinityProxyEnabled=true

Nästa steg

Mer information om App Service-miljön finns i dokumentationen för App Service-miljön.

Om du vill skydda webbappen ytterligare kan du hitta information om Azure Web Application Firewall på Application Gateway i dokumentationen för Azure Web Application Firewall.

Information om hur du distribuerar en säker och elastisk webbplats med en anpassad domän i App Service med hjälp av antingen Azure Front Door eller Application Gateway finns i den här självstudien.