Der Aufstieg des Cloud Computing – und insbesondere der Angebote „Platform as a Service“ (PaaS) und „Container as a Service“ (CaaS) – verändert die Art und Weise, wie Unternehmen ihre Geschäftsanwendungen bereitstellen und betreiben. Eine der wichtigsten Herausforderungen beim Entwurf von Cloud-Anwendungen besteht darin, vollständig verwaltete Cloud-Dienste auszuwählen, die Kosten und zeitaufwändige Betriebsaufgaben reduzieren, ohne die Sicherheit zu beeinträchtigen.
Dieser Blogbeitrag zeigt Ihnen, wie Sie Anwendungen auf dem Microsoft Azure App Service hosten und mit NGINX Plus sichern, um Angriffe aus dem Internet zu verhindern.
Microsoft Azure App Service ist eine unternehmenstaugliche und vollständig verwaltete Plattform, mit der Organisationen Web-, API- und mobile Apps in Microsoft Azure bereitstellen können, ohne die zugrunde liegende Infrastruktur verwalten zu müssen, wie in Abbildung 1 dargestellt. Azure App Service bietet die folgenden Hauptfunktionen:
Mit Azure App Service bietet Microsoft eine umfassende und schnelle Möglichkeit, Webanwendungen in der Cloud auszuführen. Entwickler können ihre Anwendungen lokal mit ASP.NET, Java, Node.js, PHP und Python entwickeln und sie dann mit Microsoft Visual Studio oder der Azure CLI problemlos in Azure App Service bereitstellen. DevOps-Teams können außerdem von der Continuous Deployment-Funktion von Azure App Service profitieren, um Anwendungsversionen schnell und zuverlässig in mehreren Umgebungen bereitzustellen.
Anwendungen im Azure App Service können auf andere in Azure bereitgestellte Ressourcen zugreifen oder über VPNs Verbindungen zu lokalen Unternehmensressourcen herstellen.
Grundsätzlich wird eine mit Azure App Service erstellte Anwendung direkt dem Internet zugänglich gemacht und einer Subdomäne von azurewebsites.net zugewiesen. Für mehr Sicherheit können Sie Ihre App mit SSL-Terminierung oder mit Authentifizierungs- und Autorisierungsprotokollen wie OAuth2 oder OpenID Connect (OIDC) schützen. Es ist jedoch nicht möglich, das Netzwerk mit feinkörnigen ausgehenden und eingehenden Sicherheitsregeln anzupassen oder Middleware wie eine Web Application Firewall (WAF) anzuwenden, um böswillige Angriffe oder Exploits aus dem Internet zu verhindern.
Wenn Sie vertrauliche Anwendungen im Azure App Service ausführen und diese schützen möchten, können Sie Azure App Service-Umgebungen (ASEs) verwenden. Eine ASE ist eine isolierte Umgebung, die in einem virtuellen Netzwerk bereitgestellt und ausschließlich den Anwendungen eines einzelnen Kunden gewidmet ist. Dadurch erhalten Sie mehr Kontrolle über den ein- und ausgehenden Anwendungsnetzwerkverkehr.
Mit ASEs können Sie Web-, API-, Mobil- oder Funktions-Apps in einer sichereren Umgebung in sehr großem Maßstab bereitstellen, wie in Abbildung 2 dargestellt.
Es gibt zwei Versionen der ASE: ASE v1 und ASE v2. In diesem Beitrag diskutieren wir ASE v2.
Sie können eine neue ASE v2 manuell über das Azure-Portal oder automatisch mithilfe des Azure Resource Manager erstellen.
Beim Erstellen einer neuen ASE müssen Sie zwischen zwei Bereitstellungstypen wählen:
Im folgenden Beispiel wählen wir eine ILB ASE, um den Zugriff aus dem Internet zu verhindern. Daher sind in unserer ASE bereitgestellte Anwendungen nur von virtuellen Maschinen (VMs) aus zugänglich, die im selben Netzwerk ausgeführt werden. Die folgenden beiden Befehle verwenden Azure Resource Manager und die Azure CLI, um einen neuen ILB ASE v2 bereitzustellen:
$ Azure-Konfigurationsmodus arm $ Azure-Gruppenbereitstellung erstellen meine Ressourcengruppe mein Bereitstellungsname --Template-uri https://raw.githubusercontent.com/azure/azure-quickstart-templates/master/201-web-app-asev2-ilb-create/azuredeploy.json
Wenn Ihre App hingegen über das Internet erreichbar sein soll, müssen Sie sie vor böswilligen Angreifern schützen, die versuchen könnten, die in Ihrer Anwendung gespeicherten vertraulichen Informationen zu stehlen.
Zum Sichern von Anwendungen auf Ebene 7 in einer ASE haben Sie im Wesentlichen zwei Möglichkeiten:
(Sie können einen benutzerdefinierten Application Delivery Controller [ADC] durch WAF-Funktionen ersetzen, diesen Anwendungsfall behandeln wir hier jedoch nicht.)
Die Wahl der Lösung hängt von Ihren Sicherheitseinschränkungen ab. Einerseits bietet Azure Application Gateway eine schlüsselfertige Lösung zur Durchsetzung der Sicherheit und erfordert nicht, dass Sie die zugrunde liegende Infrastruktur warten. Andererseits erhalten Sie durch die Bereitstellung von NGINX Plus auf VMs einen leistungsstarken Stack mit mehr Kontrolle und Flexibilität zur Feinabstimmung Ihrer Sicherheitsregeln.
Die Entscheidung zwischen Azure Application Gateway und NGINX Plus zum Lastenausgleich und zur Sicherung von in einer ASE erstellten Anwendungen erfordert ein gutes Verständnis der von den einzelnen Lösungen bereitgestellten Funktionen. Während Azure Application Gateway für einfache Anwendungsfälle geeignet ist, bietet es für komplexe Anwendungsfälle nicht viele der Funktionen, die standardmäßig in NGINX Plus enthalten sind.
Die folgende Tabelle vergleicht die Unterstützung für Lastenausgleich und Sicherheitsfunktionen in Azure Application Gateway und NGINX Plus. Weitere Einzelheiten zu den Funktionen von NGINX Plus finden Sie unterhalb der Tabelle.
Besonderheit | Azure-Anwendungsgateway | NGINX Plus |
---|---|---|
Schadensbegrenzungsfunktion | Anwendungsschicht (Schicht 7) | Anwendungsschicht (Schicht 7) |
HTTP-fähig | ✅ | ✅ |
HTTP/2-fähig | ❌ | ✅ |
WebSocket-fähig | ❌ | ✅ |
SSL-Offloading | ✅ | ✅ |
Routing-Funktionen | Einfache Entscheidung basierend auf der Anforderungs-URL oder der Cookie-basierten Sitzungsaffinität | Erweiterte Routing-Funktionen |
IP-Adressbasierte Zugriffskontrolllisten | ❌ (muss auf Web-App-Ebene in Azure definiert werden) | ✅ |
Endpunkte | Jede interne Azure-IP-Adresse, öffentliche Internet-IP-Adresse, Azure-VM oder jeder Azure-Clouddienst | Jede interne Azure-IP-Adresse, öffentliche Internet-IP-Adresse, Azure-VM oder jeder Azure-Clouddienst |
Azure VNET-Unterstützung | Sowohl internetbasierte als auch interne (Vnet) Anwendungen | Sowohl internetbasierte als auch interne (Vnet) Anwendungen |
WAF | ✅ | ✅ |
Volumetrische Angriffe | Teilweise | Teilweise |
Protokollangriffe | Teilweise | Teilweise |
Angriffe auf Anwendungsebene | ✅ | ✅ |
HTTP-Basisauthentifizierung | ❌ | ✅ |
JWT-Authentifizierung | ❌ | ✅ |
OpenID Connect SSO | ❌ | ✅ |
Wie Sie sehen, fungieren sowohl NGINX Plus als auch Azure Application Gateway als ADCs mit Layer 7-Lastausgleichsfunktionen und einer WAF, um einen starken Schutz vor gängigen Sicherheitslücken und Exploits im Internet zu gewährleisten.
NGINX Plus bietet mehrere zusätzliche Features, die in Azure Application Gateway fehlen:
Für zusätzliche Sicherheit können Sie Azure DDoS Protection einsetzen, um Bedrohungen auf Ebene 3 und 4 einzudämmen und so die Bedrohungsminderungsfunktionen der Ebene 7 von Azure Application Gateway oder NGINX Plus zu ergänzen.
Abbildung 3 zeigt, wie NGINX Plus und Azure App Service kombiniert werden, um eine sichere Umgebung zum Ausführen von Geschäftsanwendungen in der Produktion bereitzustellen. Diese Bereitstellungsstrategie nutzt NGINX Plus wegen seiner Lastausgleichs- und WAF-Funktionen.
Die Bereitstellung kombiniert die folgenden Komponenten:
Azure App Service-Umgebung – Diese Beispielbereitstellung verwendet zwei Beispiel-Webanwendungen – Web-App 1 und Web-App 2 – um zu demonstrieren, wie verschiedene Web-Apps mit NGINX Plus gesichert und deren Last ausgeglichen werden. In NGINX Plus verteilen Sie Anfragen an verschiedene Webanwendungen, indem Sie unterschiedliche Upstream-
Blöcke konfigurieren und die Inhaltsweiterleitung auf URI-Basis mit Standortblöcken
durchführen. Nachfolgend sehen Sie die minimale NGINX Plus-Konfiguration, die dieses Ziel erfüllt (hier gehen alle Anfragen an dieselbe Upstream-Gruppe):
Upstream-Backend { Server- IP-Adresse Ihres ASE-ILB ; } Server { Standort / { Proxy-Set-Header Host $host; Proxy-Pass http://backend; } }
Azure unterstützt auch Ressourcengruppen als einfache Möglichkeit, die Azure-Ressourcen für eine Anwendung auf logische Weise zu gruppieren. Die Verwendung einer Ressourcengruppe hat keine Auswirkungen auf das Design und die Topologie der Infrastruktur und wird hier daher nicht angezeigt.
Ein Azure-VM-Skalierungssatz bietet Ihnen die Leistungsfähigkeit der Virtualisierung mit der Möglichkeit zur jederzeitigen Skalierung, ohne die physische Hardware kaufen und warten zu müssen, die die Skalierung unterstützt. Sie sind jedoch weiterhin für die Wartung der VM verantwortlich, indem Sie Aufgaben wie Konfigurieren, Patchen, Sicherheitsupdates und Installieren der darauf ausgeführten Software ausführen.
In der in Abbildung 4 dargestellten Architektur werden NGINX Plus-Instanzen für eine Aktiv-Aktiv-Hochverfügbarkeit innerhalb eines Azure-VM-Skalierungssatzes bereitgestellt. Eine Active‑Active-Konfiguration ist ideal, da alle NGINX Plus-VMs eine eingehende, von Azure Load Balancer weitergeleitete Anfrage verarbeiten können und Ihnen so kosteneffiziente Kapazität bieten.
Mit Azure VM-Skalierungssätzen können Sie auch problemlos die automatische Skalierung von NGINX Plus-Instanzen basierend auf der durchschnittlichen CPU-Auslastung einrichten. Sie müssen in diesem Fall darauf achten, die NGINX Plus-Konfigurationsdateien zu synchronisieren. Sie können zu diesem Zweck die Funktion zur Konfigurationsfreigabe von NGINX Plus verwenden, wie im NGINX Plus-Administratorhandbuch beschrieben.
Indem Sie Azure App Service für Ihre Cloud-Anwendungen und NGINX Plus vor Ihren Web-Apps, APIs und mobilen Back-Ends verwenden, können Sie die Last dieser Anwendungen auf globaler Ebene ausgleichen und sichern. Durch die Verwendung von NGINX Plus in Verbindung mit Azure App Service erhalten Sie eine vollständig lastausgeglichene Infrastruktur mit einem hohen Maß an Schutz vor Exploits und Angriffen aus dem Internet. Dadurch wird ein robustes Design gewährleistet, um kritische Anwendungen in der Produktion auf sichere Weise auszuführen.
Übersicht über Web-Apps (Microsoft)
Einführung in die App Service-Umgebungen (Microsoft)
Erstellen eines Anwendungsgateways mit einer Web Application Firewall über das Azure-Portal (Microsoft)
Vergleichen Sie die Funktionen in NGINX Open Source und NGINX Plus (NGINX).
HTTP-Lastausgleich (NGINX)
Gast-Co-Autor Cedric Derue ist Solution Architect und Microsoft MVP bei Altran. Gast-Co-Autor Vincent Thavonekham ist Microsoft Regional Director und Azure MVP bei VISEO.
„Dieser Blogbeitrag kann auf Produkte verweisen, die nicht mehr verfügbar und/oder nicht mehr unterstützt werden. Die aktuellsten Informationen zu verfügbaren F5 NGINX-Produkten und -Lösungen finden Sie in unserer NGINX-Produktfamilie . NGINX ist jetzt Teil von F5. Alle vorherigen NGINX.com-Links werden auf ähnliche NGINX-Inhalte auf F5.com umgeleitet."