Udostępnij przez


Ochrona usługi Azure Container Apps za pomocą Web Application Firewall w Application Gateway

Jeśli hostujesz aplikacje lub mikrousługi w usłudze Azure Container Apps, możesz nie chcieć publikować ich bezpośrednio w Internecie. Zamiast tego możesz chcieć uwidocznić je za pośrednictwem odwróconego serwera proxy.

Zwrotny serwer proxy to usługa, która znajduje się przed co najmniej jedną usługą. Przechwytuje i kieruje ruch przychodzący do odpowiedniego miejsca docelowego.

Dzięki odwrotnym serwerom proxy można umieszczać usługi przed aplikacjami, które obsługują funkcjonalności przekrojowe, w tym:

  • Trasowanie
  • Cache'owanie
  • Ograniczanie szybkości
  • Równoważenie obciążenia
  • Warstwy zabezpieczeń
  • Filtrowanie żądań

W tym artykule pokazano, jak chronić aplikacje kontenerów przy użyciu zapory aplikacji internetowej (WAF) w usłudze Azure Application Gateway z wewnętrznym środowiskiem usługi Container Apps.

Aby uzyskać więcej informacji na temat pojęć związanych z siecią w usłudze Container Apps, zobacz Środowisko sieciowe w usłudze Azure Container Apps.

Wymagania wstępne

  • Środowisko wewnętrzne z siecią wirtualną: aplikacja kontenera, która znajduje się w środowisku wewnętrznym i zintegrowana z siecią wirtualną. Aby uzyskać więcej informacji na temat tworzenia zintegrowanej aplikacji sieci wirtualnej, zobacz udostępnianie sieci wirtualnej w wewnętrznym środowisku usługi Azure Container Apps.

  • Certyfikaty zabezpieczeń: jeśli musisz używać szyfrowania TLS/SSL do bramy aplikacji, potrzebny jest prawidłowy certyfikat publiczny do powiązania z bramą aplikacji.

Pobieranie domeny aplikacji kontenera

Wykonaj poniższe czynności, aby pobrać wartości domeny domyślnej i statycznego adresu IP w celu skonfigurowania prywatnej strefy DNS.

  1. W oknie Przegląd grupy zasobów w portalu wybierz aplikację kontenera.

  2. W oknie Przegląd zasobu aplikacji kontenera wybierz link dla środowiska Container Apps.

  3. W oknie Przegląd zasobu środowiska aplikacji kontenera wybierz pozycję Widok JSON w prawym górnym rogu strony, aby wyświetlić reprezentację JSON środowiska aplikacji kontenera.

  4. W widoku JSON znajdź sekcję properties i znajdź następujące wartości:

    • Domena domyślna: wyszukaj properties.defaultDomain lub properties.environmentFqdn

    • Statyczny adres IP: wyszukaj properties.staticIp

  5. Skopiuj te wartości i wklej je w edytorze tekstów. Wartość domeny domyślnej jest używana podczas tworzenia prywatnej strefy DNS w następnej sekcji.

Utwórz i skonfiguruj prywatną strefę DNS platformy Azure

Aby utworzyć i skonfigurować prywatną strefę DNS platformy Azure, wykonaj następujące kroki:

  1. Przejdź do witryny Azure Portal.

  2. W pasku wyszukiwania wpisz Prywatna strefa DNS.

  3. Wybierz opcję Private DNS Zone (Prywatna strefa DNS ) z wyników wyszukiwania.

  4. Wybierz Utwórz.

  5. Wprowadź następujące wartości:

    Ustawienia Akcja
    Subskrypcja Wybierz subskrypcję platformy Azure.
    Grupa zasobów Wybierz grupę zasobów aplikacji kontenera.
    Nazwa Wprowadź domyślną właściwość domeny środowiska Container Apps Environment z poprzedniej sekcji ( defaultDomain lub environmentFqdn).
    Lokalizacja grupy zasobów Pozostaw jako domyślną. Nie potrzebujesz wartości, ponieważ prywatne strefy DNS są globalne.
  6. Wybierz opcję Recenzja i utwórz. Po zakończeniu walidacji wybierz pozycję Utwórz.

  7. Po utworzeniu prywatnej strefy DNS wybierz pozycję Przejdź do zasobu.

  8. W oknie Przegląd wybierz pozycję +Zestaw rekordów , aby dodać nowy zestaw rekordów.

  9. W oknie Dodawanie zestawu rekordów wprowadź następujące wartości:

    Ustawienia Akcja
    Nazwa Wprowadź *.
    Typ Wybierz opcję A-Address Record (Rekord adresu A).
    Czas wygaśnięcia Zachowaj wartości domyślne.
    Jednostka TTL Zachowaj wartości domyślne.
    adres IP Wprowadź właściwość statycznego adresu IP środowiska Container Apps Environment z poprzedniej sekcji (staticIp).
  10. Wybierz przycisk OK , aby utworzyć zestaw rekordów.

  11. Wybierz ponownie pozycję +Zestaw rekordów , aby dodać drugi zestaw rekordów.

  12. W oknie Dodawanie zestawu rekordów wprowadź następujące wartości:

    Ustawienia Akcja
    Nazwa Wprowadź @.
    Typ Wybierz opcję A-Address Record (Rekord adresu A).
    Czas wygaśnięcia Zachowaj wartości domyślne.
    Jednostka TTL Zachowaj wartości domyślne.
    adres IP Wprowadź właściwość statycznego adresu IP środowiska Container Apps z poprzedniej sekcji (staticIp).
  13. Wybierz przycisk OK , aby utworzyć zestaw rekordów.

  14. Wybierz okno Łącza sieci wirtualnej z menu po lewej stronie.

  15. Wybierz pozycję +Dodaj , aby utworzyć nowy link z następującymi wartościami:

    Ustawienia Akcja
    Nazwa łącza Wprowadź my-vnet-pdns-link.
    Znam identyfikator zasobu sieci wirtualnej Pozostaw tę opcję niezaznaczoną.
    Sieć wirtualna Wybierz sieć wirtualną, z którą jest zintegrowana aplikacja kontenera.
    Włącz automatyczną rejestrację Pozostaw tę opcję niezaznaczoną.
  16. Wybierz przycisk OK , aby utworzyć link sieci wirtualnej.

Tworzenie i konfigurowanie Azure Application Gateway

Aby utworzyć i skonfigurować usługę Azure Application Gateway, wykonaj następujące kroki:

  1. Przejdź do witryny Azure Portal.

  2. Na pasku wyszukiwania wprowadź Application Gateway.

  3. Wybierz opcję Application Gateway z wyników wyszukiwania.

Teraz wprowadź wymagane szczegóły na karcie Podstawy , na karcie Frontendy , na karcie Backendy i na karcie Konfiguracja .

zakładka Podstawy

Wykonaj następujące kroki:

  1. Wprowadź następujące wartości w sekcji Szczegóły projektu .

    Ustawienia Akcja
    Subskrypcja Wybierz subskrypcję platformy Azure.
    Grupa zasobów Wybierz grupę zasobów dla aplikacji kontenera.
    Nazwa bramy aplikacji Wprowadź my-container-apps-agw.
    Rejon Wybierz lokalizację, w której aprowizowałeś(-łaś) aplikację kontenerową.
    Warstwa Wybierz WAF (Zapora aplikacji internetowej) w wersji 2. Możesz użyć Standard V2, jeśli nie potrzebujesz WAF.
    Włączanie skalowania automatycznego Pozostaw wartość domyślną. W przypadku środowisk produkcyjnych zalecane jest skalowanie automatyczne. Zobacz Skalowanie automatyczne Azure Application Gateway.
    Strefa dostępności Wybierz pozycję Brak. W przypadku środowisk produkcyjnych strefy dostępności są zalecane w celu zapewnienia wyższej dostępności.
    Protokół HTTP2 Zachowaj wartość domyślną.
    Polityka zapory aplikacji sieciowej Wybierz Utwórz nową i wprowadź my-waf-policy dla Polityki WAF. Kliknij przycisk OK. W przypadku wybrania warstwy Standardowa V2 pomiń ten krok.
    Sieć wirtualna Wybierz sieć wirtualną, z którą jest zintegrowana aplikacja kontenera.
    Podsieć Wybierz pozycję Zarządzaj konfiguracją podsieci. Jeśli masz już podsieć, której chcesz użyć, wybierz tę podsieć i przejdź do sekcji Frontends.
  2. W oknie Podsieci sieci my-vnet wybierz pozycję +Podsieć i wprowadź następujące wartości:

    Ustawienia Akcja
    Nazwa Wprowadź appgateway-subnet.
    Zakres adresów podsieci Zachowaj wartości domyślne.
  3. W przypadku pozostałych ustawień zachowaj wartości domyślne.

  4. Wybierz pozycję Zapisz , aby utworzyć nową podsieć.

  5. Zamknij okno Podsieci, aby powrócić do okna Tworzenie bramy aplikacji .

  6. Wybierz następujące wartości:

    Ustawienia Akcja
    Podsieć Wybierz utworzoną podsieć appgateway-subnet .
  7. Wybierz Dalej: Frontends, aby kontynuować.

Zakładka Frontendów

Wykonaj następujące kroki:

  1. Na karcie Frontendy wprowadź następujące wartości:

    Ustawienia Akcja
    Typ adresu IP frontonu Wybierz pozycję Publiczna.
    Publiczny adres IP Wybierz Dodaj nową. Wprowadź my-frontend jako nazwę frontendu i wybierz OK

    Uwaga / Notatka

    W przypadku jednostki SKU usługi Application Gateway w wersji v2 potrzebny jest publiczny adres IP frontendu. Aby uzyskać więcej informacji, zobacz Obsługa publicznych i prywatnych adresów IP oraz Zarządzanie publicznym adresem IP za pomocą Azure Application Gateway.

  2. Wybierz pozycję Dalej: Backendy.

Karta Backendów

Pula zaplecza kieruje żądania do odpowiednich serwerów backendowych. Pul zaplecza można tworzyć z dowolnej kombinacji następujących zasobów:

  • Karty sieciowe
  • Publiczne adresy IP
  • Wewnętrzne adresy IP
  • Virtual Machine Scale Sets
  • W pełni kwalifikowane nazwy domen (FQDN)
  • Wielodostępne zaplecza, takie jak Azure App Service i Container Apps

W tym przykładzie utworzysz pulę zaplecza, która jest przeznaczona dla aplikacji kontenerowej.

Aby utworzyć pulę zaplecza, wykonaj następujące kroki:

  1. Wybierz pozycję Dodaj pulę backend.

  2. Otwórz nową kartę i przejdź do aplikacji kontenera.

  3. W oknie Przegląd aplikacji kontenera znajdź adres URL aplikacji i skopiuj go.

  4. Wróć do karty Zaplecza i wprowadź następujące wartości w oknie Dodawanie puli zaplecza :

    Ustawienia Akcja
    Nazwa Wprowadź my-agw-backend-pool.
    Dodaj pulę zaplecza bez celów Wybierz opcję Nie.
    Typ docelowy Wybierz Adres IP lub nazwę FQDN.
    Cel Wprowadź skopiowany adres URL aplikacji kontenera i usuń prefiks https:// . Ta lokalizacja to FQDN aplikacji kontenerowej.
  5. Wybierz Dodaj.

  6. Na karcie Zaplecza wybierz pozycję Dalej: Konfiguracja.

Karta Konfiguracji

Na karcie Konfiguracja połączysz pulę frontonu i zaplecza utworzoną przy użyciu reguły routingu.

Aby połączyć pulę frontendową i backendową, wykonaj następujące kroki:

  1. Wybierz Dodaj regułę routingu. Wprowadź następujące wartości:

    Ustawienia Akcja
    Nazwa Wprowadź my-agw-routing-rule.
    Priorytet Wprowadź 1.
  2. W sekcji Odbiornik wprowadź następujące wartości:

    Ustawienia Akcja
    Nazwa odbiornika Wprowadź my-agw-listener.
    Adres IP frontonu Wybierz pozycję Publiczna.
    Protokół Wybierz opcję HTTPS. Jeśli nie masz certyfikatu, którego chcesz użyć, możesz wybrać opcję HTTP
    Port Wprowadź 443. Jeśli wybierzesz HTTP jako swój protokół, wprowadź 80 i przejdź do sekcji domeny domyślnej/niestandardowej.
    Wybierz certyfikat Wybierz pozycję Przekaż certyfikat. Jeśli certyfikat jest przechowywany w Key Vault, możesz wybrać pozycję Wybierz certyfikat z Key Vault.
    Nazwa certyfikatu Wprowadź nazwę certyfikatu.
    Plik certyfikatu PFX Wybierz ważny certyfikat publiczny.
    Hasło Wprowadź hasło certyfikatu.

    Jeśli chcesz użyć domeny domyślnej, wprowadź następujące wartości:

    Ustawienia Akcja
    Typ odbiornika Wybierz pozycję Podstawowa
    Adres URL strony błędu Pozostaw jako nie

    Alternatywnie, jeśli chcesz użyć domeny niestandardowej, wprowadź następujące wartości:

    Ustawienia Akcja
    Typ odbiornika Wybierz opcję Wiele witryn
    Typ hosta Wybierz opcję Pojedynczy
    Nazwy hostów Wprowadź domenę niestandardową, której chcesz użyć.
    Adres URL strony błędu Pozostaw jako nie
  3. Wybierz kartę Obiekty docelowe zaplecza i wprowadź następujące wartości:

  4. Przełącz się na kartę Obiekty docelowe zaplecza i wprowadź następujące wartości:

    Ustawienia Akcja
    Typ docelowy Wybierz my-agw-backend-pool, który utworzyłeś wcześniej.
    Ustawienia zaplecza Wybierz Dodaj nową.
  5. W oknie Dodawanie ustawienia zaplecza wprowadź następujące wartości:

    Ustawienia Akcja
    Nazwa ustawień zaplecza Wprowadź my-agw-backend-setting.
    Protokół zaplecza Wybierz opcję HTTPS.
    Port zaplecza Wprowadź 443.
    Użyj dobrze znanego certyfikatu CA Wybierz opcję Tak.
    Zastąp obecnego hosta nową nazwą Wybierz opcję Tak.
    Zastąpienie nazwy hosta Wybierz nazwę hosta z docelowego zasobu backendu.
    Tworzenie niestandardowych sond Wybierz opcję Nie.
  6. W obszarze Ponowne zapisywanie nagłówka żądania skonfiguruj następujące ustawienia:

    • Włącz ponowne zapisywanie nagłówka żądania: wybierz pozycję Tak.
    • Dodaj nagłówek żądania:
      • Nazwa nagłówka: X-Forwarded-Host
      • Wartość: {http_req_host}

    Ta akcja gwarantuje, że oryginalny Host nagłówek żądania klienta jest zachowywany i dostępny dla aplikacji zaplecza.

  7. Wybierz pozycję Dodaj , aby dodać ustawienia zaplecza.

  8. W oknie Dodawanie reguły rozsyłania wybierz ponownie pozycję Dodaj .

  9. Wybierz Dalej: Tagi.

  10. Wybierz pozycję Dalej: Przejrzyj i utwórz, a następnie wybierz pozycję Utwórz.

Możesz ustanowić zabezpieczone połączenie z wewnętrznymi środowiskami aplikacji kontenerowych przy użyciu łącza prywatnego. Za pomocą Private Link, Application Gateway może komunikować się z Container App na back-endzie za pośrednictwem sieci wirtualnej.

  1. Po utworzeniu usługi Application Gateway wybierz pozycję Przejdź do zasobu.

  2. Z menu po lewej stronie wybierz pozycję Łącze prywatne, a następnie wybierz pozycję Dodaj.

  3. Wprowadź następujące wartości:

    Ustawienia Akcja
    Nazwa Wpisz my-agw-private-link.
    Podsieć łącza prywatnego Wybierz podsieć, której chcesz użyć do utworzenia łącza prywatnego.
    Konfiguracja adresu IP frontonu Wybierz adres IP frontonu dla Application Gateway.
  4. W obszarze Ustawienia prywatnego adresu IP wybierz pozycję Dodaj.

  5. Wybierz pozycję Dodaj w dolnej części okna.

Zachowywanie oryginalnego nagłówka hosta dla przekierowań i logowania jednokrotnego

Po skonfigurowaniu usługi Azure Application Gateway jako zwrotnego serwera proxy i włączeniu ustawienia Host nagłówek zostanie zmodyfikowany. Modyfikowanie nagłówka może zakłócać działanie aplikacji korzystających z oryginalnej wartości hosta w celu generowania adresów URL przekierowania, linków bezwzględnych lub obsługi przepływów uwierzytelniania OpenID Connect (OIDC).

Aby przekazać oryginalny nagłówek hosta, możesz wykorzystać funkcję ponownego zapisywania nagłówka żądania usługi Application Gateway, aby wstrzyknąć go do X-Forwarded-Host nagłówka.

Skonfiguruj iniekcję X-Forwarded-Host

Aby włączyć X-Forwarded-Host iniekcję:

  1. Na karcie Konfiguracja wybierz sekcję Ustawienia zaplecza reguły routingu usługi Application Gateway:

    • Włącz ponowne zapisywanie nagłówka żądania.
    • Dodaj nowy nagłówek żądania z następującymi wartościami:
      • Nazwa nagłówka: X-Forwarded-Host
      • Wartość: {http_req_host}

    Aplikacja zaplecza może teraz odczytywać oryginalny host żądań przy użyciu nagłówka X-Forwarded-Host .

Uwaga / Notatka

Podczas konfigurowania reguł ponownego zapisywania nagłówka upewnij się, że używasz poprawnej składni zmiennej. Zmienne serwera muszą używać odpowiedniego prefiksu, takiego jak http_req_ dla nagłówków żądań. Aby rozwiązać problemy z błędami konfiguracji reguły ponownego zapisywania, zobacz Ponowne zapisywanie nagłówków HTTP i adresów URL za pomocą usługi Application Gateway.

Weryfikowanie aplikacji kontenera

  1. Znajdź publiczny adres IP bramy aplikacji na stronie Przegląd lub możesz wyszukać adres. Aby wyszukać, wybierz pozycję Wszystkie zasoby i wprowadź my-container-apps-agw-pip w polu wyszukiwania. Następnie wybierz adres IP w wynikach wyszukiwania.

  2. Przejdź do publicznego adresu IP bramy aplikacji.

  3. Żądanie jest automatycznie kierowane do aplikacji kontenera, która sprawdza, czy brama aplikacji została pomyślnie utworzona.

Uprzątnij zasoby

Jeśli utworzone zasoby nie są już potrzebne, usuń grupę zasobów. Usunięcie grupy zasobów powoduje również usunięcie wszystkich powiązanych zasobów.

Aby usunąć grupę zasobów:

  1. W menu witryny Azure Portal wybierz pozycję Grupy zasobów lub wyszukaj i wybierz pozycję Grupy zasobów.

  2. Na stronie "Grupy zasobów" wyszukaj i wybierz my-container-apps.

  3. Na stronie grupy zasobów wybierz pozycję Usuń grupę zasobów.

  4. Wprowadź my-container-apps w polu WPISZ NAZWĘ GRUPY ZASOBÓW, a następnie wybierz Usuń.

Dalsze kroki