Gatekeeper-patroon

Azure Dedicated Host

Beveilig toepassingen en services met behulp van een toegewezen hostexemplaren voor brokeraanvragen tussen clients en de toepassing of service. De broker valideert en ontsmet de aanvragen en kan een extra beveiligingslaag bieden en het kwetsbaarheid voor aanvallen van het systeem beperken.

Context en probleem

Cloudservices maken eindpunten beschikbaar waarmee clienttoepassingen hun API's kunnen aanroepen. De code die wordt gebruikt om de API's te implementeren, activeert of voert verschillende taken uit, waaronder maar niet beperkt tot verificatie, autorisatie, parametervalidatie en sommige of alle aanvraagverwerking. De API-code heeft waarschijnlijk namens de client toegang tot opslag en andere services.

Als een kwaadwillende gebruiker inbreuk maakt op het systeem en toegang krijgt tot de hostingomgeving van de toepassing, worden de beveiligingsmechanismen en toegang tot gegevens en andere services weergegeven. Als gevolg hiervan kan de kwaadwillende gebruiker onbeperkte toegang krijgen tot referenties, opslagsleutels, gevoelige informatie en andere services.

Oplossing

Een oplossing voor dit probleem is het loskoppelen van de code die openbare eindpunten implementeert, van de code die aanvragen verwerkt en toegang krijgt tot opslag. U kunt de ontkoppeling bereiken met behulp van een gevel of een toegewezen taak die communiceert met clients en vervolgens de aanvraag afgeeft, mogelijk via een losgekoppelde interface, aan de hosts of taken die de aanvraag verwerken. De afbeelding bevat een overzicht op hoog niveau van dit patroon.

Overzicht op hoog niveau van dit patroon

Het gatekeeper-patroon kan worden gebruikt om opslag te beveiligen, of kan worden gebruikt als een uitgebreidere gevel om alle functies van de toepassing te beveiligen. De belangrijkste factoren zijn:

  • Gecontroleerde validatie. De gatekeeper valideert alle aanvragen en weigert aanvragen die niet voldoen aan de validatievereisten.
  • Beperkt risico en beperkte blootstelling. De gatekeeper heeft geen toegang tot de referenties of sleutels die door de vertrouwde host worden gebruikt voor toegang tot opslag en services. Als er met de gatekeeper is geknoeid, heeft de aanvaller geen toegang tot deze referenties of sleutels.
  • Afdoende beveiliging. De gatekeeper wordt uitgevoerd in een modus met beperkte bevoegdheden, terwijl de rest van de toepassing wordt uitgevoerd in de modus met volledig vertrouwen die vereist is voor toegang tot opslag en services. Als er met de gatekeeper is geknoeid, heeft deze niet rechtstreeks toegang tot de toepassingsservices of -gegevens.

Dit patroon fungeert als een firewall in een doorsnee netwerktopologie. Hiermee kan de gatekeeper aanvragen onderzoeken en beslissen of de aanvraag moet worden doorgegeven aan de vertrouwde host die de vereiste taken uitvoert. Bij deze beslissing moet de gatekeeper de aanvraaginhoud in veel gevallen valideren en opschonen voordat deze aan de vertrouwde host wordt doorgegeven.

Problemen en overwegingen

Beschouw de volgende punten als u besluit hoe u dit patroon wilt implementeren:

  • Zorg ervoor dat de vertrouwde hosts alleen interne of beveiligde eindpunten beschikbaar maken, die alleen door de gatekeeper worden gebruikt. De vertrouwde hosts mogen geen externe eindpunten of interfaces beschikbaar stellen.
  • De gatekeeper moet worden uitgevoerd in een modus met beperkte bevoegdheden, waarvoor doorgaans gatekeeper en de vertrouwde host moeten worden uitgevoerd in afzonderlijke gehoste services of virtuele machines.
  • De gatekeeper mag geen verwerkingen uitvoeren die betrekking hebben op de toepassing of services of toegang krijgen tot gegevens. Dit is uitsluitend bedoeld om aanvragen te valideren en op te schonen. De vertrouwde hosts moeten mogelijk extra aanvraagvalidatie uitvoeren, maar de gatekeeper moet de kernvalidatie uitvoeren.
  • Gebruik waar mogelijk een beveiligd communicatiekanaal (HTTPS, SSL of TLS) tussen de gatekeeper en de vertrouwde hosts of taken. Sommige hostomgevingen bieden echter geen ondersteuning voor HTTPS op interne eindpunten.
  • Het toevoegen van de extra laag voor het implementeren van het gatekeeper-patroon heeft waarschijnlijk invloed op de prestaties vanwege de extra verwerking en netwerkcommunicatie die vereist is.
  • De gatekeeperinstantie kan een Single Point of Failure zijn. Om de impact van een fout te minimaliseren, kunt u redundante exemplaren implementeren en een mechanisme voor automatisch schalen gebruiken om de capaciteit te garanderen om de beschikbaarheid te behouden.

Wanneer dit patroon gebruiken

Dit patroon is handig voor toepassingen die:

  • gevoelige informatie verwerken
  • services beschikbaar maken waarvoor een hoge mate van bescherming tegen schadelijke aanvallen is vereist
  • bedrijfskritieke bewerkingen uitvoeren die niet kunnen worden onderbroken.
  • vereisen dat aanvraagvalidatie afzonderlijk van de hoofdtaken wordt uitgevoerd of om deze validatie te centraliseren om onderhoud en beheer te vereenvoudigen

Workloadontwerp

Een architect moet evalueren hoe het Gatekeeper-patroon kan worden gebruikt in het ontwerp van hun workload om de doelstellingen en principes te verhelpen die worden behandeld in de pijlers van het Azure Well-Architected Framework. Voorbeeld:

Pijler Hoe dit patroon ondersteuning biedt voor pijlerdoelen
Beslissingen over beveiligingsontwerpen helpen de vertrouwelijkheid, integriteit en beschikbaarheid van de gegevens en systemen van uw workload te waarborgen. Door een gateway toe te voegen aan de aanvraagstroom, kunt u de beveiligingsfunctionaliteit, zoals webtoepassingsfirewalls, DDoS-beveiliging, botdetectie, aanvraagbewerking, verificatieinitiatie en autorisatiecontroles centraliseren.

- SE:06 Netwerkbesturingselementen
- SE:10 Bewaking en detectie van bedreigingen
Prestatie-efficiëntie helpt uw workload efficiënt te voldoen aan de vereisten door optimalisaties in schalen, gegevens, code. Dit patroon is hoe u beperking op gatewayniveau kunt implementeren in plaats van snelheidscontroles op knooppuntniveau te implementeren. Het coördineren van de snelheidsstatus tussen alle knooppunten is niet inherent presterend.

- PE:03 Services selecteren

Net als bij elke ontwerpbeslissing moet u rekening houden met eventuele compromissen ten opzichte van de doelstellingen van de andere pijlers die met dit patroon kunnen worden geïntroduceerd.

Opmerking

In een in de cloud gehost scenario kan dit patroon worden geïmplementeerd door de gatekeeper-rol of virtuele machine los te koppelen van de vertrouwde rollen en services in een toepassing. De implementatie kan een intern eindpunt, een wachtrij of opslag gebruiken als tussenliggend communicatiemechanisme. De afbeelding laat het gebruik van een intern eindpunt zien.

Een voorbeeld van het patroon met Cloud Services-web- en werkrollen

Het Valet Key-patroon kan ook relevant zijn bij het implementeren van het gatekeeperpatroon. Wanneer u communiceert tussen de Gatekeeper- en vertrouwde rollen, is het een goede gewoonte om de beveiliging te verbeteren met behulp van sleutels of tokens die machtigingen voor toegang tot resources beperken. Het patroon beschrijft het gebruik van een token of sleutel die clients beperkte, directe toegang biedt tot een specifieke resource of service.