Integracja usługi Application Gateway

Trzy odmiany usługi aplikacja systemu Azure wymagają nieco innej konfiguracji integracji z usługą aplikacja systemu Azure Gateway. Odmiany obejmują zwykłe środowisko App Service (znane również jako wielodostępne), wewnętrzny moduł równoważenia obciążenia (ILB) App Service Environment oraz zewnętrzne środowisko App Service Environment.

W tym artykule opisano sposób konfigurowania usługi Application Gateway z usługą App Service (wielodostępną) przy użyciu punktów końcowych usługi w celu zabezpieczenia ruchu. W tym artykule omówiono również zagadnienia związane z używaniem prywatnych punktów końcowych i integracją z wewnętrznym modułem równoważenia obciążenia i zewnętrznymi środowiskami App Service Environment. Na koniec w artykule opisano sposób ustawiania ograniczeń dostępu w witrynie Menedżera kontroli kodu źródłowego (SCM).

Integracja z usługą App Service (wielodostępna)

Usługa App Service (wielodostępna) ma publiczny punkt końcowy dostępny z Internetu. Korzystając z punktów końcowych usługi, można zezwolić na ruch tylko z określonej podsieci w sieci wirtualnej platformy Azure i zablokować wszystkie inne elementy. W poniższym scenariuszu użyjesz tej funkcji, aby upewnić się, że wystąpienie usługi App Service może odbierać ruch tylko z określonej bramy aplikacji.

Diagram that shows the internet flowing to an application gateway in an Azure virtual network and then flowing through a firewall icon to instances of apps in App Service.

Istnieją dwie części tej konfiguracji, oprócz tworzenia wystąpienia usługi App Service i bramy aplikacji. Pierwsza część polega na włączeniu punktów końcowych usługi w podsieci sieci wirtualnej, w której wdrożono bramę aplikacji. Punkty końcowe usługi zapewniają, że cały ruch sieciowy opuszczający podsieć w kierunku usługi App Service jest oznaczony określonym identyfikatorem podsieci.

Drugą częścią jest ustawienie ograniczenia dostępu dla określonej aplikacji internetowej, aby upewnić się, że dozwolony jest tylko ruch oznaczony tym konkretnym identyfikatorem podsieci. Ograniczenie dostępu można skonfigurować przy użyciu różnych narzędzi, w zależności od preferencji.

Konfigurowanie usług przy użyciu witryny Azure Portal

W witrynie Azure Portal wykonasz cztery kroki, aby utworzyć i skonfigurować konfigurację usług App Service i Application Gateway. Jeśli masz istniejące zasoby, możesz pominąć pierwsze kroki.

  1. Utwórz wystąpienie usługi App Service przy użyciu jednego z przewodników Szybki start w dokumentacji usługi App Service. Przykładem jest przewodnik Szybki start platformy .NET Core.
  2. Utwórz bramę aplikacji przy użyciu przewodnika Szybki start portalu, ale pomiń sekcję dotyczącą dodawania obiektów docelowych zaplecza.
  3. Skonfiguruj usługę App Service jako zaplecze w usłudze Application Gateway, ale pomiń sekcję dotyczącą ograniczania dostępu.
  4. Utwórz ograniczenie dostępu przy użyciu punktów końcowych usługi.

Teraz możesz uzyskać dostęp do usługi App Service za pośrednictwem usługi Application Gateway. Jeśli spróbujesz uzyskać bezpośredni dostęp do usługi App Service, powinien zostać wyświetlony błąd HTTP 403 z informacją, że aplikacja internetowa zablokowała dostęp.

Screenshot shows the text of Error 403 - Forbidden.

Konfigurowanie usług przy użyciu szablonu usługi Azure Resource Manager

Szablon wdrażania usługi Azure Resource Manager tworzy kompletny scenariusz. Scenariusz składa się z wystąpienia usługi App Service, które jest zablokowane z punktami końcowymi usługi i ograniczeniem dostępu do odbierania ruchu tylko z usługi Application Gateway. Szablon zawiera wiele inteligentnych wartości domyślnych i unikatowych postfiksów dodanych do nazw zasobów, aby zachować prostotę. Aby je zastąpić, musisz sklonować repozytorium lub pobrać szablon i edytować go.

Aby zastosować szablon, możesz użyć przycisku Wdróż na platformie Azure w opisie szablonu. Możesz też użyć odpowiedniego kodu programu PowerShell lub interfejsu wiersza polecenia platformy Azure.

Konfigurowanie usług przy użyciu interfejsu wiersza polecenia platformy Azure

Przykład interfejsu wiersza polecenia platformy Azure tworzy wystąpienie usługi App Service, które jest zablokowane za pomocą punktów końcowych usługi i ograniczenie dostępu do odbierania ruchu tylko z usługi Application Gateway. Jeśli musisz odizolować ruch tylko do istniejącego wystąpienia usługi App Service z istniejącej bramy aplikacji, użyj następującego polecenia:

az webapp config access-restriction add --resource-group myRG --name myWebApp --rule-name AppGwSubnet --priority 200 --subnet mySubNetName --vnet-name myVnetName

W konfiguracji domyślnej polecenie zapewnia konfigurację punktu końcowego usługi w podsieci i ograniczenie dostępu w usłudze App Service.

Zagadnienia dotyczące korzystania z prywatnych punktów końcowych

Alternatywą dla punktów końcowych usługi jest zabezpieczanie ruchu między usługą Application Gateway i usługą App Service (wielodostępną). Należy się upewnić, że usługa Application Gateway może używać usługi DNS do rozpoznawania prywatnego adresu IP aplikacji usługi App Service. Alternatywnie możesz użyć prywatnego adresu IP w puli zaplecza i zastąpić nazwę hosta w ustawieniach PROTOKOŁU HTTP.

Diagram that shows traffic flowing to an application gateway in an Azure virtual network and then flowing through a private endpoint to instances of apps in App Service.

Usługa Application Gateway buforuje wyniki wyszukiwania DNS. Jeśli używasz w pełni kwalifikowanych nazw domen (FQDN) i polegasz na wyszukiwaniu DNS w celu uzyskania prywatnego adresu IP, może być konieczne ponowne uruchomienie bramy aplikacji, jeśli aktualizacja DNS lub link do prywatnej strefy DNS platformy Azure wystąpił po skonfigurowaniu puli zaplecza.

Aby ponownie uruchomić bramę aplikacji, zatrzymaj ją i uruchom przy użyciu interfejsu wiersza polecenia platformy Azure:

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

Zagadnienia dotyczące środowiska app service modułu równoważenia obciążenia

Środowisko App Service Environment z wewnętrznym modułem równoważenia obciążenia nie jest widoczne dla Internetu. Ruch między wystąpieniem a bramą aplikacji jest już izolowany do sieci wirtualnej. Aby skonfigurować środowisko App Service Environment modułu równoważenia obciążenia i zintegrować je z bramą aplikacji przy użyciu witryny Azure Portal, zobacz przewodnik z instrukcjami.

Jeśli chcesz mieć pewność, że tylko ruch z podsieci usługi Application Gateway dociera do środowiska App Service Environment, możesz skonfigurować sieciową grupę zabezpieczeń, która ma wpływ na wszystkie aplikacje internetowe w środowisku App Service Environment. Dla sieciowej grupy zabezpieczeń można określić zakres adresów IP podsieci i opcjonalnie porty (80/443). Aby środowisko App Service Environment działało poprawnie, upewnij się, że nie zastąpisz wymaganych reguł sieciowej grupy zabezpieczeń.

Aby odizolować ruch do pojedynczej aplikacji internetowej, musisz użyć ograniczeń dostępu opartych na adresach IP, ponieważ punkty końcowe usługi nie działają ze środowiskiem App Service Environment. Adres IP powinien być prywatnym adresem IP bramy aplikacji.

Zagadnienia dotyczące zewnętrznego środowiska App Service Environment

Zewnętrzne środowisko App Service Environment ma publiczny moduł równoważenia obciążenia, taki jak wielodostępna usługa App Service. Punkty końcowe usługi nie działają w środowisku App Service Environment. Dlatego należy używać ograniczeń dostępu opartych na adresach IP przy użyciu publicznego adresu IP bramy aplikacji. Aby utworzyć zewnętrzne środowisko App Service Environment przy użyciu witryny Azure Portal, możesz skorzystać z tego przewodnika Szybki start.

Zagadnienia dotyczące witryny Kudu/SCM

Witryna SCM, znana również jako Kudu, jest witryną administracyjną, która istnieje dla każdej aplikacji internetowej. Nie można użyć zwrotnego serwera proxy dla lokacji SCM. Najprawdopodobniej chcesz również zablokować go do poszczególnych adresów IP lub określonej podsieci.

Jeśli chcesz użyć tych samych ograniczeń dostępu co witryna główna, możesz dziedziczyć ustawienia przy użyciu następującego polecenia:

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

Jeśli chcesz dodać indywidualne ograniczenia dostępu dla witryny SCM, możesz użyć flagi --scm-site :

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

Zagadnienia dotyczące używania domeny domyślnej

Skonfigurowanie usługi Application Gateway w celu zastąpienia nazwy hosta i użycie domyślnej domeny usługi App Service (zazwyczaj azurewebsites.net) jest najprostszym sposobem skonfigurowania integracji. Nie wymaga skonfigurowania domeny niestandardowej i certyfikatu w usłudze App Service.

W tym artykule omówiono ogólne zagadnienia dotyczące zastępowania oryginalnej nazwy hosta. W usłudze App Service istnieją dwa scenariusze, w których należy zwrócić uwagę na tę konfigurację.

Uwierzytelnianie

W przypadku korzystania z funkcji uwierzytelniania w usłudze App Service (znanej również jako Easy Auth) aplikacja zwykle przekierowuje do strony logowania. Ponieważ usługa App Service nie zna oryginalnej nazwy hosta żądania, przekierowanie odbywa się w domyślnej nazwie domeny i zwykle powoduje wystąpienie błędu.

Aby obejść domyślne przekierowanie, można skonfigurować uwierzytelnianie w celu sprawdzenia przekazanego nagłówka i dostosowania domeny przekierowania do oryginalnej domeny. Usługa Application Gateway używa nagłówka o nazwie X-Original-Host. Korzystając z konfiguracji opartej na plikach do konfigurowania uwierzytelniania, można skonfigurować usługę App Service, aby dostosować się do oryginalnej nazwy hosta. Dodaj tę konfigurację do pliku konfiguracji:

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

Koligacja ARR

W przypadku wdrożeń wielu wystąpień koligacja ARR gwarantuje, że żądania klientów są kierowane do tego samego wystąpienia na okres życia sesji. Koligacja ARR nie działa z przesłonięciami nazw hostów. Aby koligacja sesji działała, należy skonfigurować identyczną domenę niestandardową i certyfikat w usłudze App Service oraz w usłudze Application Gateway, a nie zastąpić nazwy hosta.

Następne kroki

Aby uzyskać więcej informacji na temat środowisk App Service Environment, zobacz dokumentację środowiska App Service Environment.

Aby dodatkowo zabezpieczyć aplikację internetową, możesz znaleźć informacje o usłudze Azure Web Application Firewall w usłudze Application Gateway w dokumentacji usługi Azure Web Application Firewall.

Aby wdrożyć bezpieczną, odporną lokację z domeną niestandardową w usłudze App Service przy użyciu usługi Azure Front Door lub Application Gateway, zobacz ten samouczek.