Schützen von Azure Container Apps mit Web Application Firewall in Application Gateway
Wenn Sie Ihre Apps oder Microservices in Azure Container Apps hosten, möchten Sie sie wahrscheinlich nicht immer direkt im Internet veröffentlichen. Möglicherweise möchten Sie sie stattdessen über einen Reverseproxy verfügbar machen.
Ein Reverseproxy ist ein Dienst, der sich vor einem oder mehreren Diensten befindet und eingehenden Datenverkehr abfängt und an das entsprechende Ziel leitet.
Reverseproxys ermöglichen es Ihnen, Dienste vor Ihren Apps zu platzieren, und unterstützen übergreifende Funktionen, u. a.:
- Routing
- Caching
- Ratenbegrenzung
- Lastenausgleich
- Sicherheitsebenen
- Anforderungsfilterung
In diesem Artikel wird veranschaulicht, wie Sie Ihre Container-Apps mithilfe von Web Application Firewall (WAF) in Azure Application Gateway mit einer internen Container Apps-Umgebung schützen.
Weitere Informationen zu Netzwerkkonzepten in Container Apps finden Sie unter Netzwerkumgebung in Azure Container Apps.
Voraussetzungen
Interne Umgebung mit benutzerdefiniertem VNet: Sie benötigen eine Container-App, die sich in einer internen Umgebung befindet und in ein benutzerdefiniertes virtuelles Netzwerk integriert ist. Weitere Informationen zum Erstellen einer App, die in ein benutzerdefiniertes virtuelles Netzwerk integriert ist, finden Sie unter Bereitstellen eines virtuellen Netzwerks für eine interne Azure Container Apps-Umgebung.
Sicherheitszertifikate: Wenn Sie TLS/SSL-Verschlüsselung für das Anwendungsgateway verwenden müssen, benötigen Sie ein gültiges öffentliches Zertifikat, das zum Binden an Ihr Anwendungsgateway verwendet wird.
Abrufen der Domäne Ihrer Container-App
Führen Sie die folgenden Schritte aus, um die Werte der Standarddomäne und der statischen IP abzurufen und damit Ihre private DNS-Zone einzurichten.
Wählen Sie im Portal im Fenster Übersicht der Ressourcengruppe Ihre Container-App aus.
Wählen Sie im Fenster Übersicht der Container-App-Ressource den Link für Container Apps-Umgebung aus.
Wählen Sie im Fenster Übersicht für Ihre Container-App-Umgebungsressource JSON-Ansicht in der oberen rechten Ecke der Seite aus, um die JSON-Darstellung der Container Apps-Umgebung anzuzeigen.
Kopieren Sie die Werte für die Eigenschaften defaultDomain und staticIp, und fügen Sie sie in einen Text-Editor ein. Sie erstellen mit diesen Werten eine private DNS-Zone für die Standarddomäne im nächsten Abschnitt.
Erstellen und Konfigurieren einer privaten Azure-DNS-Zone
Wählen Sie im Menü des Azure-Portals oder auf der Startseite die Option Ressource erstellen aus.
Suchen Sie nach Private DNS-Zone, und wählen Sie in den Suchergebnissen Private DNS-Zone aus.
Wählen Sie die Schaltfläche Erstellen.
Geben Sie die folgenden Werte ein:
Einstellung Aktion Subscription Wählen Sie Ihr Azure-Abonnement. Resource group Wählen Sie die Ressourcengruppe Ihrer Container-App aus. Name Geben Sie die Eigenschaft defaultDomain der Container Apps-Umgebung aus dem vorherigen Abschnitt ein. Ressourcengruppenstandort Behalten Sie die Standardeinstellung bei. Ein Wert ist nicht erforderlich, da private DNS-Zonen global sind. Klicken Sie auf Überprüfen + erstellen. Wählen Sie Erstellen aus, wenn die Validierung erfolgreich war.
Nachdem die private DNS-Zone erstellt wurde, wählen Sie Zu Ressource wechseln aus.
Wählen Sie im Fenster Übersicht die Option + Datensatzsatzgruppe aus, um eine neue Datensatzgruppe hinzuzufügen.
Geben Sie im Fenster Datensatzgruppe hinzufügen die folgenden Werte ein:
Einstellung Aktion Name Geben Sie * ein. type Wählen Sie A-Datensatz aus. TTL Lassen Sie die Standardwerte unverändert. TTL-Einheit Lassen Sie die Standardwerte unverändert. IP-Adresse Geben Sie die Eigenschaft staticIp der Container Apps-Umgebung aus dem vorherigen Abschnitt ein. Wählen Sie OK aus, um die Datensatzgruppe zu erstellen.
Wählen Sie erneut + Datensatzgruppe aus, um eine zweite Datensatzgruppe hinzuzufügen.
Geben Sie im Fenster Datensatzgruppe hinzufügen die folgenden Werte ein:
Einstellung Aktion Name Geben Sie @ ein. type Wählen Sie A-Datensatz aus. TTL Lassen Sie die Standardwerte unverändert. TTL-Einheit Lassen Sie die Standardwerte unverändert. IP-Adresse Geben Sie die Eigenschaft staticIp der Container Apps-Umgebung aus dem vorherigen Abschnitt ein. Wählen Sie OK aus, um die Datensatzgruppe zu erstellen.
Wählen Sie im Menü auf der linken Seite das Fenster VNet-Verknüpfungen aus.
Wählen Sie + Hinzufügen aus, um eine neue Verknüpfung mit den folgenden Werten zu erstellen:
Einstellung Aktion Linkname Geben Sie my-custom-vnet-pdns-link ein. Ich kenne die Ressourcen-ID des virtuellen Netzwerks. Lassen Sie sie deaktiviert. Virtuelles Netzwerk Wählen Sie das virtuelle Netzwerk aus, in das Ihre Container-App integriert ist. Automatische Registrierung aktivieren Lassen Sie sie deaktiviert. Wählen Sie OK aus, um die VNet-Verknüpfung zu erstellen.
Erstellen und Konfigurieren einer Azure Application Gateway-Instanz
Registerkarte Grundlagen
Geben Sie im Abschnitt Projektdetails die folgenden Werte ein.
Einstellung Aktion Subscription Wählen Sie Ihr Azure-Abonnement. Resource group Wählen Sie die Ressourcengruppe für Ihre Container-App aus. Name des Anwendungsgateways Geben Sie my-container-apps-agw ein. Region Wählen Sie den Standort aus, an dem Ihre Container-App bereitgestellt wurde. Tarif Wählen Sie WAF V2 aus. Sie können Standard V2 verwenden, wenn Sie WAF nicht benötigen. Aktivieren der automatischen Skalierung Übernehmen Sie den Wert Standard. Für Produktionsumgebungen wird automatische Skalierung empfohlen. Weitere Informationen finden Sie unter Automatische Skalierung von Azure Application Gateway. Verfügbarkeitszone Wählen Sie Keine. Für Produktionsumgebungen werden Verfügbarkeitszonen für höhere Verfügbarkeit empfohlen. HTTP2 Behalten Sie den Standardwert bei. WAF-Richtlinie Wählen Sie Neu erstellen aus, und geben Sie my-waf-policy für die WAF-Richtlinie ein. Wählen Sie OK aus. Wenn Sie Standard V2 als Dienstebene ausgewählt haben, überspringen Sie diesen Schritt. Virtuelles Netzwerk Wählen Sie das virtuelle Netzwerk aus, in das Ihre Container-App integriert ist. Subnet Wählen Sie Subnetzkonfiguration verwalten aus. Wenn Sie bereits über ein Subnetz verfügen, das Sie verwenden möchten, verwenden Sie dieses stattdessen, und fahren Sie mit dem Abschnitt zu Front-Ends fort. Wählen Sie im Fenster Subnetze von my-custom-vnet die Option + Subnetz aus, und geben Sie die folgenden Werte ein:
Einstellung Aktion Name Geben Sie appgateway-subnet ein. Subnetzadressbereich Lassen Sie die Standardwerte unverändert. Übernehmen Sie bei den restlichen Einstellungen die Standardwerte.
Wählen Sie Speichern aus, um das neue Subnetz zu erstellen.
Schließen Sie das Fenster Subnetze, um zum Fenster Anwendungsgateway erstellen zurückzukehren.
Wählen Sie die folgenden Werte aus:
Einstellung Aktion Subnet Wählen Sie das erstellte Subnetz appgateway-subnet aus. Wählen Sie Weiter: Front-Ends aus, um den Vorgang fortzusetzen.
Registerkarte Front-Ends
Geben Sie auf der Registerkarte Front-Ends folgende Werte ein:
Einstellung Aktion Typ der Front-End-IP-Adresse Wählen Sie Öffentlich aus. Öffentliche IP-Adresse Wählen Sie Neue hinzufügen aus. Geben Sie my-frontend für den Namen Ihres Front-Ends ein, und wählen Sie OK aus. Hinweis
Für die Application Gateway v2-SKU muss eine öffentliche Front-End-IP-Adresse vorhanden sein. Sie können eine Kombination aus öffentlicher und privater Front-End-IP-Konfiguration verwenden. Für die Version 2 der SKU kann derzeit jedoch keine rein private Front-End-IP-Konfiguration ohne öffentliche IP-Adresse verwendet werden. Weitere Informationen finden Sie hier.
Klicken Sie auf Weiter: Back-Ends.
Registerkarte Back-Ends
Der Back-End-Pool wird zum Weiterleiten von Anforderungen an die entsprechenden Back-End-Server verwendet. Back-End-Pools können aus einer beliebigen Kombination der folgenden Ressourcen bestehen:
- NICs
- Öffentliche IP-Adressen
- Interne IP-Adressen
- Skalierungsgruppen für virtuelle Computer
- Vollqualifizierte Domänennamen (Fully Qualified Domain Names, FQDNs)
- Back-Ends mit mehreren Mandanten wie Azure App Service und Container Apps
In diesem Beispiel erstellen Sie einen Back-End-Pool, der auf Ihre Container-App ausgerichtet ist.
Wählen Sie Back-End-Pool hinzufügen aus.
Öffnen Sie eine neue Registerkarte, und navigieren Sie zu Ihrer Container-App.
Suchen Sie im Fenster Übersicht der Container-App die Anwendungs-URL, und kopieren Sie sie.
Kehren Sie zur Registerkarte Back-Ends zurück, und geben Sie die folgenden Werte in das Fenster Back-End-Pool hinzufügen ein:
Einstellung Aktion Name Geben Sie my-agw-backend-pool ein. Hinzufügen eines Back-End-Pools ohne Ziele Wählen Sie Nein aus. Zieltyp Wählen Sie IP-Adresse oder FQDN aus. Ziel Geben Sie die Anwendungs-URL der Container-App ein, die Sie kopiert haben, und entfernen Sie das Präfix https://. Dieser Speicherort ist der FQDN Ihrer Container-App. Wählen Sie Hinzufügen.
Wählen Sie auf der Registerkarte Back-Ends die Option Weiter: Konfiguration aus.
Registerkarte Konfiguration
Auf der Registerkarte Konfiguration verbinden Sie das Front-End und den erstellten Back-End-Pool mithilfe einer Routingregel.
Wählen Sie Routingregel hinzufügen aus. Geben Sie die folgenden Werte ein:
Einstellung Aktion Name Geben Sie my-agw-routing-rule ein. Priorität Geben Sie 1 ein. Geben Sie auf der Registerkarte „Listener“ die folgenden Werte ein:
Einstellung Aktion Name des Listeners Geben Sie my-agw-listener ein. Front-End-IP Wählen Sie Öffentlich aus. Protocol Wählen Sie HTTPS aus. Wenn Sie kein Zertifikat haben, das Sie verwenden möchten, können Sie HTTP auswählen. Port Geben Sie 443 ein. Wenn Sie HTTP für Ihr Protokoll ausgewählt haben, geben Sie 80 ein, und fahren Sie mit dem Abschnitt für standardmäßige/benutzerdefinierte Domänen fort. Auswählen eines Zertifikats Wählen Sie Zertifikat hochladen aus. Wenn Ihr Zertifikat im Schlüsseltresor gespeichert ist, können Sie Zertifikat aus Key Vault auswählen auswählen. Zertifikatname Geben Sie für Ihr Zertifikat einen Namen ein. PFX-Zertifikatdatei Wählen Sie ein gültiges öffentliches Zertifikat aus. Kennwort Geben Sie das Zertifikatkennwort ein. Wenn Sie die Standarddomäne verwenden möchten, geben Sie die folgenden Werte ein:
Einstellung Aktion Listenertyp Wählen Sie Basic aus. URL zur Fehlerseite Übernehmen Sie die Einstellung Nein. Wenn Sie eine benutzerdefinierte Domäne verwenden möchten, geben Sie alternativ die folgenden Werte ein:
Einstellung Aktion Listenertyp Wählen Sie Für mehrere Standorte aus. Hosttyp Wählen Sie Einzeln aus. Hostnamen Geben Sie die benutzerdefinierte Domäne ein, die Sie verwenden möchten. URL zur Fehlerseite Übernehmen Sie die Einstellung Nein. Wählen Sie die Registerkarte Back-End-Ziele aus, und geben Sie die folgenden Werte ein:
Schalten Sie auf die Registerkarte Back-End-Ziele um, und geben Sie die folgenden Werte ein:
Einstellung Aktion Zieltyp Wählen Sie den Pool my-agw-back-pool aus, den Sie zuvor erstellt haben. Back-End-Einstellungen Wählen Sie Neue hinzufügen aus. Geben Sie im Fenster Back-End-Einstellung hinzufügen die folgenden Werte ein:
Einstellung Aktion Name der Back-End-Einstellungen Geben Sie my-agw-backend-setting ein. Back-End-Protokoll Wählen Sie HTTPS aus. Back-End-Port Geben Sie 443 ein. Zertifikat einer bekannten Zertifizierungsstelle verwenden Wählen Sie Ja aus. Mit neuem Hostnamen überschreiben Wählen Sie Ja. Hostnamen außer Kraft setzen Wählen Sie Hostnamen aus Back-End-Ziel auswählen aus. Benutzerdefinierte Tests erstellen Wählen Sie Nein aus. Wählen Sie Hinzufügen aus, um die Back-End-Einstellungen hinzuzufügen.
Wählen Sie im Fenster Routingregel hinzufügen erneut die Option Hinzufügen aus.
Klicken Sie auf Weiter: Tags.
Wählen Sie Weiter: Überprüfen und erstellen und dann Erstellen aus.
Hinzufügen einer privaten Verbindung zu Application Gateway
Sie können eine sichere Verbindung mit rein internen Container-App-Umgebungen herstellen, indem Sie eine private Verbindung nutzen, da diese es der Application Gateway-Instanz ermöglicht, über das virtuelle Netzwerk mit Ihrer Container-App im Back-End zu kommunizieren.
Nachdem die Application Gateway-Instanz erstellt wurde, wählen Sie Zu Ressource wechseln aus.
Wählen Sie im Menü auf der linken Seite die Option Private Verbindung und dann Hinzufügen aus.
Geben Sie die folgenden Werte ein:
Einstellung Aktion Name Geben Sie my-agw-private-link ein. Subnetz der privaten Verbindung Wählen Sie das Subnetz aus, mit dem Sie die private Verbindung erstellen möchten. Front-End-IP-Konfiguration Wählen Sie die Front-End-IP-Adresse für Ihre Application Gateway-Instanz aus. Wählen Sie unter Einstellungen für private IP-Adressen die Option Hinzufügen aus.
Wählen Sie unten im Fenster Hinzufügen aus.
Überprüfen der Container-App
Suchen Sie auf der Seite Übersicht des Anwendungsgateways nach der öffentlichen IP-Adresse für das Anwendungsgateway. Alternativ können Sie auch nach der Adresse suchen. Wählen Sie zum Suchen Alle Ressourcen aus, und geben Sie my-container-apps-agw-pip in das Suchfeld ein. Wählen Sie dann die IP-Adresse in den Suchergebnissen aus.
Navigieren Sie zur öffentlichen IP-Adresse des Anwendungsgateways.
Ihre Anforderung wird automatisch an die Container-App weitergeleitet. Dadurch wird überprüft, ob das Anwendungsgateway erfolgreich erstellt wurde.
Bereinigen von Ressourcen
Wenn Sie die von Ihnen erstellten Ressourcen nicht mehr benötigen, löschen Sie die Ressourcengruppe. Wenn Sie die Ressourcengruppe löschen, werden auch alle zugehörigen Ressourcen entfernt.
So löschen Sie die Ressourcengruppe:
Wählen Sie im Menü des Azure-Portals die Option Ressourcengruppen aus, oder suchen Sie nach Ressourcengruppen, und wählen Sie die entsprechende Option aus.
Suchen Sie auf der Seite Ressourcengruppen nach my-container-apps, und wählen Sie diese Ressourcengruppe aus.
Wählen Sie auf der Seite für die Ressourcengruppe die Option Ressourcengruppe löschen aus.
Geben Sie my-container-apps unter RESSOURCENGRUPPENNAMEN EINGEBEN ein, und wählen Sie dann Löschen aus.