Bearbeiten

Muster „Gatekeeper“

Azure Dedicated Host

Schützen Sie Anwendungen und Dienste durch Verwendung einer dedizierten Hostinstanz, die als Broker für Anforderungen zwischen Clients und der Anwendung oder dem Dienst fungiert. Der Broker überprüft und bereinigt die Anforderungen und kann eine zusätzliche Sicherheitsebene bereitstellen und die Angriffsfläche des Systems einschränken.

Kontext und Problem

Clouddienste machen Endpunkte verfügbar, mit denen Clientanwendungen ihre APIs aufrufen können. Der Code, der zum Implementieren der APIs verwendet wird, löst mehrere Aufgaben aus oder führt diese aus, einschließlich, aber nicht beschränkt auf, Authentifizierung, Autorisierung, Parameterüberprüfung und einen Teil der oder die gesamte Verarbeitung von Anforderungen. Es ist wahrscheinlich, dass der API-Code auf Speicher und andere Dienste im Auftrag des Clients zugreift.

Wenn ein böswilliger Benutzer das System kompromittiert und Zugriff auf die Hostingumgebung der Anwendung erhält, werden seine Sicherheitsmechanismen und der Zugriff auf Daten und andere Dienste verfügbar gemacht. Somit kann der böswillige Benutzer uneingeschränkt auf Anmeldeinformationen, Speicherschlüssel, vertrauliche Informationen und andere Dienste zugreifen.

Lösung

Eine Lösung für dieses Problem besteht darin, den Code, der öffentliche Endpunkte implementiert, von dem Code zu entkoppeln, der Anforderungen verarbeitet und auf Speicher zugreift. Zur Entkopplung können Sie eine Fassade oder eine dedizierte Aufgabe verwenden, die mit Clients interagiert und die Anforderung dann – üblicherweise über eine entkoppelte Schnittstelle – an die Hosts oder Aufgaben übergibt, die die Anforderung bearbeiten. Die Abbildung zeigt eine allgemeine Übersicht über dieses Muster.

Allgemeine Übersicht über dieses Muster

Das Muster „Gatekeeper“ kann zum Schutz des Speichers oder als umfangreichere Fassade verwendet werden, um alle Funktionen der Anwendung zu schützen. Zu den wichtigsten Faktoren zählen Folgende:

  • Kontrollierte Überprüfung: Der Gatekeeper überprüft alle Anforderungen und lehnt diejenigen ab, die die Überprüfungsanforderungen nicht erfüllen.
  • Begrenztes Risiko und begrenzte Verfügbarkeit: Der Gatekeeper hat keinen Zugriff auf die Anmeldeinformationen oder Schlüssel, die vom vertrauenswürdigen Host für den Zugriff auf Speicher und Dienste verwendet werden. Wenn der Gatekeeper gefährdet ist, erhält der Angreifer keinen Zugriff auf diese Anmeldeinformationen oder Schlüssel.
  • Angemessener Schutz: Der Gatekeeper wird in einem Modus mit beschränkten Berechtigungen ausgeführt, während der Rest der Anwendung im Modus mit voller Vertrauenswürdigkeit ausgeführt wird, der für den Zugriff auf Speicher und Dienste erforderlich ist. Wenn der Gatekeeper gefährdet ist, kann er nicht direkt auf die Anwendungsdienste oder -daten zugreifen.

Dieses Muster verhält sich wie eine Firewall in einer typischen Netzwerktopologie. Es ermöglicht dem Gatekeeper, Anforderungen zu überprüfen und zu entscheiden, ob die Anforderung an den vertrauenswürdigen Host übergeben werden soll, der die erforderlichen Aufgaben ausführt. Für eine solche Entscheidung muss der Gatekeeper den Anforderungsinhalt in der Regel überprüfen und bereinigen, bevor er ihn an den vertrauenswürdigen Host übergibt.

Probleme und Überlegungen

Beachten Sie die folgenden Punkte bei der Entscheidung, wie dieses Muster implementiert werden soll:

  • Stellen Sie sicher, dass die vertrauenswürdigen Hosts nur interne oder geschützte Endpunkte verfügbar machen, die ausschließlich vom Gatekeeper verwendet werden. Die vertrauenswürdigen Hosts sollten keine externen Endpunkte oder Schnittstellen verfügbar machen.
  • Der Gatekeeper muss in einem Modus mit eingeschränkten Berechtigungen ausgeführt werden, der in der Regel die Ausführung des Gatekeepers und des vertrauenswürdigen Hosts in separaten gehosteten Diensten oder auf getrennten virtuellen Computern erfordert.
  • Der Gatekeeper sollte keine Verarbeitungsaufgaben im Zusammenhang mit der Anwendung oder den Diensten ausführen oder auf Daten zugreifen. Seine Funktion besteht ausschließlich darin, Anforderungen zu überprüfen und zu bereinigen. Die vertrauenswürdigen Hosts müssen ggf. eine zusätzliche Anforderungsüberprüfung durchführen, doch der Gatekeeper sollte die Hauptüberprüfung durchführen.
  • Verwenden Sie nach Möglichkeit einen sicheren Kommunikationskanal (HTTPS, SSL oder TLS) zwischen dem Gatekeeper und den vertrauenswürdigen Hosts oder Aufgaben. Allerdings unterstützen einige Hostingumgebungen nicht HTTPS an internen Endpunkten.
  • Das Hinzufügen der zusätzlichen Schicht für die Implementierung des Gatekeepermusters hat aufgrund des zusätzlichen Verarbeitungsaufwands und der zusätzlichen Netzwerkkommunikation wahrscheinlich Auswirkungen auf die Leistung.
  • Die Gatekeeper-Instanz kann einen Single Point of Failure darstellen. Um die Auswirkungen eines Ausfalls zu minimieren, sollten Sie die Bereitstellung redundanter Instanzen und die Verwendung eines Mechanismus zur automatischen Skalierung in Betracht ziehen. So stellen Sie sicher, dass Kapazitäten zur Aufrechterhaltung der Verfügbarkeit vorhanden sind.

Verwendung dieses Musters

Dieses Muster ist hilfreich für Anwendungen, die:

  • mit vertraulichen Informationen umgehen
  • Dienste verfügbar machen, die ein hohes Maß an Schutz vor böswilligen Angriffen erfordern
  • unternehmenskritische Vorgänge ausführen, die nicht unterbrochen werden können.
  • erfordern, dass die Überprüfung von Anforderungen gesondert von den Hauptaufgaben durchgeführt oder zentralisiert wird, um Wartung und Verwaltung zu vereinfachen

Workloadentwurf

Ein Architekt sollte evaluieren, wie das Gatekeeper-Muster im Design seines Workloads verwendet werden kann, um die Ziele und Prinzipien zu erreichen, die in den Säulen des Azure Well-Architected Framework behandelt werden. Zum Beispiel:

Säule So unterstützt dieses Muster die Säulenziele
Sicherheitsdesignentscheidungen tragen dazu bei, die Vertraulichkeit, Integrität und Verfügbarkeit der Daten und Systeme Ihrer Workload sicherzustellen. Durch das Hinzufügen eines Gateways zum Anforderungsflows können Sie Sicherheitsfunktionen wie Web Application Firewalls, DDoS Protection, Bot-Erkennung, Anforderungsbearbeitung, Authentifizierungsinitiierung und Autorisierungsprüfungen zentralisieren.

- SE:06 Netzwerksteuerungen
- SE:10 Überwachung und Bedrohungserkennung
Die Leistungseffizienz hilft Ihrer Workload, Anforderungen effizient durch Optimierungen in Skalierung, Daten und Code zu erfüllen. Mit diesem Muster können Sie die Drosselung auf Gateway-Ebene implementieren, anstatt Ratenprüfungen auf Knotenebene zu implementieren. Das Koordinieren des Ratenstatus zwischen allen Knoten ist nicht grundsätzlich leistungsfähig.

- PE:03 Dienste auswählen

Berücksichtigen Sie wie bei jeder Designentscheidung alle Kompromisse im Hinblick auf die Ziele der anderen Säulen, die mit diesem Muster eingeführt werden könnten.

Beispiel

In einem Szenario, bei dem eine Anwendung in der Cloud gehostet wird, kann dieses Muster implementiert werden, indem die Gatekeeper-Rolle oder der virtuelle Computer von den vertrauenswürdigen Rollen und Diensten in einer Anwendung entkoppelt wird. Die Implementierung kann einen internen Endpunkt, eine Warteschlange oder einen Speicher als Zwischenkommunikationsmechanismus verwenden. Die Abbildung zeigt die Verwendung eines internen Endpunkts.

Beispiel des Musters unter Verwendung von Cloud Services-Web- und Workerrollen

Das Muster „Valet-Schlüssel“ kann ebenfalls für die Implementierung des Gatekeeper-Musters relevant sein. Bei der Kommunikation zwischen dem Gatekeeper und den vertrauenswürdigen Rollen ist es empfehlenswert, die Sicherheit durch die Verwendung von Schlüsseln oder Tokens zu erhöhen, die die Berechtigungen für den Zugriff auf Ressourcen einschränken. Das Muster beschreibt die Verwendung eines Tokens oder Schlüssels, das bzw. der Clients eingeschränkten direkten Zugriff auf eine bestimmte Ressource oder einen bestimmten Dienst gibt.