Azure API Management landingszoneversneller

Azure API Management
Azure Application Gateway
Azure Functions
.NET

API's zijn steeds prominenter geworden in de wijze waarop bedrijven en klanten toegang krijgen tot services, zowel intern als extern. Intern worden API's gebruikt voor toegang tot Line-Of-Business-toepassingen, zelfgebouwde oplossingen en integraties van derden. Extern willen meer bedrijven productief zijn en geld verdienen met hun API's. Met deze trend in het achterhoofd wordt API Management een centraal onderdeel van een standaardbenadering voor het beheren, beheren en publiceren van API's voor zowel interne als externe doelgroepen.

Met behulp van Azure Application Gateway is het nu mogelijk om de toegang te beveiligen en de toegang te beperken van API's die worden geleverd via Azure API Management. In dit artikel wordt een oplossing beschreven waarbij u zowel interne als externe API's kunt beheren via één API Management-exemplaar. U kunt een veilige houding behouden zodat deze niet rechtstreeks via internet wordt weergegeven, maar in plaats daarvan is het toegankelijk via een Application Gateway.

Notitie

Deze architectuur wordt gebruikt als de basis van de Azure API Management-landingszoneversneller in de Cloud Adoption Framework.

Architectuur

Diagram met de architectuur van de API Management landingszoneversneller.

Dit architectuurdiagram begint met een allesomvattend vak dat het bereik van een abonnement weergeeft, een Privé-DNS zone waar privédomeinen worden omgezet en het bereik van een virtueel netwerk met de naam APIM-CS VNet. Boven op het abonnement staat een vak dat aangeeft dat het een on-premises workload is. Het vak bevat een serverpictogram. Een pipe geeft een site-naar-site-verbinding aan, of Azure ExpressRoute maakt verbinding met het API Management-exemplaar in het Azure-abonnement. Zeven extra kleinere vakjes bevinden zich in de grote doos waarin het Azure-abonnement wordt weergegeven. Vier van de vakken bevinden zich op de bovenste rij en drie op de onderste rij. Elk afzonderlijk vak vertegenwoordigt een afzonderlijk subnet, met een gekoppelde netwerkbeveiligingsgroep. Aan de linkerkant is er een openbaar IP-adres dat is gekoppeld aan Azure Application Gateway in het meest linkse vak op de bovenste rij. Application Gateway bevindt zich ook in een van de zeven kleinere vakken, met het subnet met de naam App GW-subnet. Aan de rechterkant bevindt zich een ander vak met het API Management-exemplaar, met het subnet met de naam APIM-subnet. Ernaast bevindt zich het derde vak op de bovenste rij, dat een privé-eindpunt bevat voor het Azure Functions-exemplaar in het subnet met de naam PE-subnet. Het meest rechtse vak op de bovenste rij is het back-endsubnet dat Azure Function-apps bevat, het Azure App Service-plan voor de functie en het opslagaccount dat is gekoppeld aan de functie-app. Op de onderste rij, beginnend aan de linkerkant, bevindt zich een vak met Azure Bastion in het Bastion-subnet. Het tweede vak bevat de beheer-jumbox-VM in het Jump Box-subnet. Het laatste vak op de onderste rij is de DevOps-agent in het DevOps-subnet. Rechtsonder in de afbeelding staan drie gedeelde resources met hun respectieve pictogrammen. Van links naar rechts ziet u de volgende vakken: Sleutelkluis, Application Insights en Log Analytics-werkruimte. Er zijn twee sets werkstromen. De eerste werkstroom wordt aangegeven in zwarte cirkels en de andere werkstroom wordt aangegeven in blauwe cirkels, wat in latere secties wordt uitgelegd. De zwarte werkstroom geeft de toegang aan van API's die extern beschikbaar zijn. De stroom begint vanaf de gebruiker die toegang heeft tot het openbare IP-adres. De pijl wijst vervolgens naar de richting van de Application Gateway, van de Application Gateway naar het privé-eindpunt en van het privé-eindpunt naar de functie-app. De blauwe werkstroom begint vanaf een on-premises server, met een pijl die naar het API Management-exemplaar wijst, via een pijplijnpictogram dat een site-naar-site-verbinding aangeeft of via ExpressRoute. De rest van de stroom is hetzelfde als hierboven wordt beschreven: van API Management naar privé-eindpunt en van privé-eindpunt naar Azure Function.

In deze architectuur wordt ervan uitgegaan dat het beleid is ingesteld vanuit de azure-landingszoneversneller en dat de structuur vanuit de beheergroep naar beneden wordt gestuurd.

Een Visio-bestand van deze architectuur downloaden.

Werkstroom

Hybride scenario (blauwe cirkels)

Voor dit scenario is een site-naar-site- of Azure ExpressRoute-verbinding met uw on-premises omgeving vereist.

  1. Een on-premises toepassing vereist toegang tot een interne API die wordt geleverd via Azure API Management.
  2. API Management maakt verbinding met de back-end-API's die worden gehost op Azure Functions. Deze verbinding verloopt via een privé-eindpunt, dat beschikbaar is via het Azure Functions Premium-abonnement en wordt gehost in een eigen subnet.
  3. Het privé-eindpunt heeft veilig toegang tot de interne API die wordt gehost op Azure Functions.

Scenario voor externe toegang (zwarte cirkels)

  1. Een externe toepassing heeft toegang tot een openbaar IP-adres of aangepaste FQDN, die is gekoppeld aan Azure Application Gateway.
  2. Application Gateway fungeert als de webtoepassingsfirewall, waarvoor PFX-certificaten zijn vereist voor SSL-beëindiging.
  3. API Management maakt via een privé-eindpunt verbinding met de back-end-API's, die worden gehost op Azure Functions. Dit eindpunt is beschikbaar via het Azure Functions Premium-abonnement en wordt gehost in een eigen subnet.
  4. Het privé-eindpunt heeft veilig toegang tot de extern beschikbare API die wordt gehost op Azure Functions.

Onderdelen

De architectuur maakt gebruik van de volgende onderdelen:

  • Azure API Management is een beheerde service waarmee u services kunt beheren in hybride en omgevingen met meerdere clouds. API Management fungeert als een façade om de back-endarchitectuur te abstraheren en biedt controle en beveiliging voor API-waarneembaarheid en -verbruik voor zowel interne als externe gebruikers.

  • Azure Functions is een serverloze oplossing waarmee u zich meer kunt richten op codeblokken die kunnen worden uitgevoerd met minimaal infrastructuurbeheer. Functies kunnen worden gehost in verschillende hostingabonnementen, terwijl deze referentiearchitectuur gebruikmaakt van het Premium-abonnement, vanwege het gebruik van privé-eindpunten.

  • Azure Application Gateway is een beheerde service die fungeert als load balancer op laag 7 en webtoepassingsfirewall. In dit scenario beveiligt de toepassingsgateway het interne APIM-exemplaar, waardoor u de interne en externe modus kunt gebruiken.

  • Met Azure DNSPrivé-DNS-zones kunt u domeinnamen binnen een virtueel netwerk beheren en omzetten, zonder dat u een aangepaste DNS-oplossing hoeft te implementeren. Een Privé-DNS zone kan worden uitgelijnd op een of meer virtuele netwerken via virtuele netwerkkoppelingen. Omdat de Azure Functions wordt weergegeven via een privé-eindpunt dat door deze referentiearchitectuur wordt gebruikt, moet u een privé-DNS-zone gebruiken.

  • Met Azure MonitorApplication Insights kunnen ontwikkelaars afwijkingen detecteren, problemen diagnosticeren en gebruikspatronen begrijpen. Application Insights biedt uitbreidbaar beheer van toepassingsprestaties en bewaking voor live web-apps. Er worden verschillende platforms ondersteund, waaronder .NET, Node.js, Java en Python. Het ondersteunt apps die worden gehost in Azure, on-premises, in een hybride omgeving of in andere openbare clouds. Application Insights is opgenomen als onderdeel van deze referentiearchitectuur om het gedrag van de geïmplementeerde toepassing te bewaken.

  • Met Azure MonitorLog Analytics kunt u logboekquery's bewerken en uitvoeren met gegevens in Azure Monitor-logboeken, optioneel vanuit de Azure Portal. Ontwikkelaars kunnen eenvoudige query's uitvoeren voor een set records of Log Analytics gebruiken om geavanceerde analyses uit te voeren. Vervolgens kunnen ze de resultaten visualiseren. Log Analytics is geconfigureerd als onderdeel van deze referentiearchitectuur om alle bewakingslogboeken samen te voegen voor meer analyse en rapportage.

  • Azure Virtual Machines is een rekenresource die kan worden gebruikt voor het hosten van veel verschillende workloads. In deze referentiearchitectuur worden virtuele machines gebruikt om een beheer jumpbox-server te bieden, evenals een host voor de DevOps-agent of GitHub-runner.

  • Azure Key Vault is een cloudservice waarmee geheimen veilig worden opgeslagen en geopend, variërend van API-sleutels en wachtwoorden tot certificaten en cryptografische sleutels. Deze referentiearchitectuur maakt gebruik van Azure Key Vault om de SSL-certificaten op te slaan die door de Application Gateway worden gebruikt.

  • Azure Bastion is een platform-as-a-service die is ingericht binnen het virtuele netwerk van de ontwikkelaar. Het biedt beveiligde RDP-/SSH-connectiviteit met de virtuele machines van de ontwikkelaar via TLS, vanaf de Azure Portal. Met Azure Bastion hebben virtuele machines geen openbaar IP-adres meer nodig om verbinding te maken via RDP/SSH. Deze referentiearchitectuur maakt gebruik van Azure Bastion voor toegang tot de DevOps-agent of GitHub-runner-server of de beheer jumpbox-server.

Als u een DevOps-hulpprogramma gebruikt, zoals Azure DevOps of GitHub, werken in de cloud gehoste agents of runners via het openbare internet. Omdat het API-beheer in deze architectuur is ingesteld op een intern netwerk, moet u een DevOps-agent gebruiken die toegang heeft tot het VNet. De DevOps-agent helpt u bij het implementeren van beleid en andere wijzigingen in de API's in uw architectuur. Deze CI/CD-sjablonen kunnen worden gebruikt om het proces uit elkaar te halen en uw ontwikkelteams in staat te stellen wijzigingen te implementeren, per API. Ze worden uitgevoerd door de DevOps-runners.

Alternatieven

Voor de back-endservices waarmee het API Management-exemplaar verbinding maakt, zijn er verschillende alternatieven beschikbaar, naast Azure Functions, die wordt gebruikt in deze referentie-implementatie:

  • Azure App Service is een volledig beheerde HTTP-service waarmee web-apps worden gebouwd, geïmplementeerd en geschaald. .NET, .NET Core, Java, Ruby, Node.js, PHP en Python worden allemaal ondersteund. Toepassingen kunnen worden uitgevoerd en geschaald in windows- of Linux-omgevingen.
  • Azure Kubernetes Service biedt volledig beheerde Kubernetes-clusters voor een geïntegreerde CI/CD-ervaring (continue integratie en continue levering), governance en beveiliging.
  • Azure Logic Apps is een cloudplatform waarmee geautomatiseerde werkstromen worden gemaakt en uitgevoerd. Een voorbeeld van een referentiearchitectuur vindt u in Basic Enterprise Integration on Azure.
  • Met Azure Container Apps kunt u microservices en toepassingen in containers uitvoeren op een serverloos platform.

Voor implementaties in meerdere regio's kunt u overwegen om Azure Front Door te gebruiken om snelle, betrouwbare en veilige toegang te bieden tussen uw gebruikers en de statische en dynamische webinhoud van uw toepassingen.

Raadpleeg API's beveiligen met Application Gateway en API Management voor aanvullende voorbeelden van hoe Application Gateway API's kunt beveiligen.

Overwegingen

Met deze overwegingen worden de pijlers van het Azure Well-Architected Framework geïmplementeerd. Dit is een set richtlijnen die kunnen worden gebruikt om de kwaliteit van een workload te verbeteren. Zie Microsoft Azure Well-Architected Framework voor meer informatie.

Betrouwbaarheid

Betrouwbaarheid zorgt ervoor dat uw toepassing kan voldoen aan de toezeggingen die u aan uw klanten doet. Zie Overzicht van de betrouwbaarheidspijler voor meer informatie.

  • Implementeer ten minste twee schaaleenheden van API Management die zijn verdeeld over twee beschikbaarheidszones, per regio. Deze methode maximaliseert uw beschikbaarheid en prestaties.
  • VNet-peering biedt geweldige prestaties in een regio, maar heeft een schaalbaarheidslimiet van maximaal 500 netwerken. Als u meer workloads wilt verbinden, gebruikt u een hub spoke-ontwerp of Azure vWAN.

Beveiliging

Beveiliging biedt garanties tegen opzettelijke aanvallen en misbruik van uw waardevolle gegevens en systemen. Zie Overzicht van de beveiligingspijler voor meer informatie.

  • API Management validatiebeleid is beschikbaar om API-aanvragen en -antwoorden te valideren op basis van een OpenAPI-schema. Deze functies zijn geen vervanging voor een Web Application Firewall, maar ze kunnen wel extra bescherming bieden tegen bepaalde bedreigingen. Het toevoegen van validatiebeleid kan gevolgen hebben voor de prestaties. Daarom raden we u aan prestatiebelastingstests te gebruiken om de impact ervan op de API-doorvoer te beoordelen.
  • Implementeer Azure Web Application Firewall (WAF) vóór API Management om bescherming te bieden tegen veelvoorkomende aanvallen en beveiligingsproblemen van webtoepassingen.
  • Benoemde waarden toepassen met Key Vault geheimen om gevoelige informatie in APIM-beleid te beveiligen.
  • Gebruik Application Gateway voor externe toegang tot een intern APIM-exemplaar om het APIM-exemplaar te beveiligen en hybride connectiviteit in te schakelen.
  • Implementeer de API Management-gateway in een VNet ter ondersteuning van hybride connectiviteit en verbeterde beveiliging.
  • VNet-peering biedt geweldige prestaties in een regio, maar heeft een schaalbaarheidslimiet van maximaal 500 netwerken. Als u meer workloads wilt verbinden, gebruikt u een hub spoke-ontwerp of Azure vWAN.

Kostenoptimalisatie

Kostenoptimalisatie gaat over het zoeken naar manieren om onnodige kosten te verminderen en operationele efficiëntie te verbeteren. Zie Overzicht van de pijler kostenoptimalisatie voor meer informatie.

  • Vanwege de behoefte aan ondersteuning voor beschikbaarheidszones en virtuele netwerken, hebben we de Premium-laag van API Management geselecteerd volgens de prijzen voor elke regio. Bovendien wordt in deze workload Azure Functions gehost op het Premium-abonnement, vanwege de noodzaak van VNet-toegang.
  • Voor proof of concept of prototypes raden we u aan andere lagen van API Management (zoals Developer of Standard) te gebruiken.

Operationele uitmuntendheid

Operationele uitmuntendheid omvat de operationele processen die een toepassing implementeren en deze in productie houden. Zie Overzicht van de pijler operationele uitmuntendheid voor meer informatie.

  • API Management configuraties moeten worden weergegeven als ARM-sjablonen en u moet een infrastructuur-als-code-instelling gebruiken.
  • Gebruik een CI/CD-proces om API Management configuraties te beheren, te versien en bij te werken.
  • Maak aangepaste statustests om de status van uw API Management-exemplaar te valideren. Gebruik de URL /status-0123456789abcdef om een algemeen statuseindpunt te maken voor de APIM-service in de app-gateway.
  • Certificaten die zijn bijgewerkt in de sleutelkluis, worden automatisch geroteerd in API Management, die binnen 4 uur wordt bijgewerkt.
  • Implementeer ten minste twee schaaleenheden van API Management die zijn verdeeld over twee beschikbaarheidszones, per regio. Deze methode maximaliseert de beschikbaarheid en prestaties.

Dit scenario implementeren

Deze architectuur is beschikbaar op GitHub. Het bevat alle benodigde infrastructure-as-code-bestanden en de implementatie-instructies.

Medewerkers

Dit artikel wordt onderhouden door Microsoft. Het is oorspronkelijk geschreven door de volgende inzenders.

Hoofdauteurs:

Als u niet-openbare LinkedIn-profielen wilt zien, meldt u zich aan bij LinkedIn.

Volgende stappen

Bekijk deze belangrijke resources:

Meer informatie over deze belangrijke services: