Interne API's publiceren naar externe gebruikers

Azure API Management
Azure Application Gateway
Azure DevOps
Azure Monitor
Azure Virtual Network

In dit scenario consolideert een organisatie meerdere API's intern met Azure API Management, geïmplementeerd in een virtueel netwerk.

Architectuur

Architectuurdiagram met de volledige levenscyclus van interne API's die worden gebruikt door de externe gebruikers.

Een Visio-bestand van deze architectuur downloaden.

Het voorgaande diagram beslaat een volledige levenscyclus van interne API's die worden gebruikt door de externe gebruikers.

Gegevensstroom

De gegevens stromen als volgt:

  1. Ontwikkelaars checken code in bij een GitHub-opslagplaats die is verbonden met een CI/CD-pijplijnagent die is geïnstalleerd op een Azure-VM.
  2. De agent pusht de build naar de API-toepassing die wordt gehost op ILB ASE.
  3. Azure API Management gebruikt de voorgaande API's via HOST-headers die zijn opgegeven in API Management-beleid.
  4. API Management gebruikt de DNS-naam van de App Service Environment voor alle API's.
  5. Application Gateway maakt de ontwikkelaars- en API-portal van API Management beschikbaar.
  6. Azure Privé-DNS wordt gebruikt om het verkeer intern te routeren tussen ASE, API Management en Application Gateway.
  7. Externe gebruikers gebruiken de weergegeven ontwikkelaarsportal om de API's te gebruiken via het openbare IP-adres van Application Gateway.

Onderdelen

  • Met Azure Virtual Network kunnen Azure-resources veilig met elkaar, internet en on-premises netwerken communiceren.
  • Met Azure Privé-DNS kunnen domeinnamen worden omgezet in een virtueel netwerk zonder dat u een aangepaste DNS-oplossing hoeft toe te voegen.
  • Azure API Management helpt organisaties bij het publiceren van API's naar externe, partner- en interne ontwikkelaars om hun gegevens en services te gebruiken.
  • Application Gateway is een load balancer voor webverkeer waarmee u verkeer naar uw webtoepassingen kunt beheren.
  • Interne Load Balancer App Service Environment is een Azure App Service-functie die een volledig geïsoleerde en toegewezen omgeving biedt voor het veilig uitvoeren van App Service apps op grote schaal.
  • Azure DevOps is een service voor het beheren van uw ontwikkelingslevenscyclus en bevat functies voor planning en projectbeheer, codebeheer, build en release.
  • Application Insights is een uitbreidbare APM-service (Application Performance Management) voor webontwikkelaars op meerdere platforms.
  • Azure Cosmos DB is de wereldwijd gedistribueerde databaseservice met meerdere modellen van Microsoft.

Alternatieven

  • In een Azure lift-and-shift-scenario dat is geïmplementeerd in een Azure Virtual Network, kunnen back-endservers rechtstreeks worden aangepakt via privé-IP-adressen.
  • Als u on-premises resources gebruikt, kan de API Management-instantie privé teruggaan naar de interne service via een Azure VPN-gateway en site-naar-site-IPSec VPN-verbinding of ExpressRoute, waardoor een hybride Azure- en on-premises scenario wordt gemaakt.
  • Bestaande of opensource-DNS-providers kunnen worden gebruikt in plaats van de Op Azure gebaseerde DNS-service.
  • Interne API's die buiten Azure zijn geïmplementeerd, kunnen nog steeds profiteren van het beschikbaar maken van de API's via API Management Service.

Scenariodetails

In dit scenario host een organisatie meerdere API's met behulp van Azure-toepassing Service Environment (ILB ASE) en willen ze deze API's intern consolideren met behulp van Azure API Management (APIM) die zijn geïmplementeerd in een Virtual Network. Het interne API Management-exemplaar kan ook worden blootgesteld aan externe gebruikers om het volledige potentieel van de API's te kunnen gebruiken. Deze externe blootstelling kan worden bereikt met behulp van Azure Application Gateway het doorsturen van aanvragen naar de interne API Management-service, die op zijn beurt de API's gebruikt die in de ASE zijn geïmplementeerd.

  • De web-API's worden gehost via een beveiligd HTTPS-protocol en maken gebruik van een TLS-certificaat.
  • De Application Gateway is ook geconfigureerd via poort 443 voor beveiligde en betrouwbare uitgaande aanroepen.
  • De API Management-service is geconfigureerd voor het gebruik van aangepaste domeinen met behulp van TLS-certificaten.
  • Bekijk de voorgestelde netwerkconfiguratie voor App Service-omgevingen
  • Er moet expliciet worden vermeld dat poort 3443 API Management kan beheren via de Azure Portal of PowerShell.
  • Maak gebruik van beleidsregels binnen APIM om een HOST-header toe te voegen voor de API die wordt gehost op ASE. Dit zorgt ervoor dat de load balancer van de ASE de aanvraag correct doorstuurt.
  • De API Management accepteert de DNS-vermelding van ASE voor alle apps die worden gehost onder App Service Environments. Voeg een APIM-beleid toe om de HOST-header expliciet in te stellen, zodat de ASE-load balancer onderscheid kan maken tussen apps onder de App Service Environment.
  • U kunt integreren met Azure-toepassing Insights, waarmee ook metrische gegevens via Azure Monitor worden weergegeven voor bewaking.
  • Als u CI/CD-pijplijnen gebruikt voor het implementeren van interne API's, kunt u overwegen uw eigen gehoste agent te bouwen op een VM in de Virtual Network.

Potentiële gebruikscases

  • Synchroniseer de adresgegevens van de klant intern nadat de klant een wijziging heeft aangebracht.
  • Trek ontwikkelaars naar uw platform door unieke gegevensassets beschikbaar te maken.

Overwegingen

Deze overwegingen implementeren de pijlers van het Azure Well-Architected Framework, 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.

Beschikbaarheid

U kunt Azure API Management-service implementeren als een implementatie voor meerdere regio's voor hogere beschikbaarheid en ook om latentie te verminderen. Deze functie is alleen beschikbaar in de Premium-modus. De API Management-service in dit specifieke scenario gebruikt API's van App Service-omgevingen. U kunt APIM ook gebruiken voor API's die worden gehost op de interne on-premises infrastructuur.

App Service-omgevingen kunnen traffic manager-profielen gebruiken om het verkeer te distribueren dat wordt gehost op App Service-omgevingen voor een hogere schaal en beschikbaarheid.

Flexibiliteit

Hoewel in dit voorbeeldscenario meer over configuratie wordt gesproken, moeten de API's die worden gehost op de App Service-omgevingen flexibel genoeg zijn om fouten in de aanvragen af te handelen, die uiteindelijk worden beheerd door de API Management-service en Application Gateway. Overweeg patronen voor opnieuw proberen en circuitonderbrekers in het API-ontwerp. Zie Resilient applications for Azure ontwerpen voor algemene richtlijnen voor het ontwerpen van flexibele oplossingen.

Beveiliging

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

Omdat het voorgaande voorbeeldscenario volledig wordt gehost op een intern netwerk, worden API Management en ASE al geïmplementeerd in een beveiligde infrastructuur (Azure VNet). U kunt Application Gateways integreren met Microsoft Defender for Cloud om een naadloze manier te bieden om bedreigingen voor de omgeving te voorkomen, te detecteren en erop te reageren. Zie de Documentatie voor Azure-beveiliging voor algemene richtlijnen voor het ontwerpen van veilige oplossingen.

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.

API Management wordt aangeboden in vier lagen: developer, basic, standard en premium. Gedetailleerde richtlijnen voor het verschil in deze lagen vindt u hier in de Azure API Management prijsrichtlijnen.

Klanten kunnen API Management schalen door eenheden toe te voegen en te verwijderen. Elke eenheid heeft capaciteit die afhankelijk is van de laag.

Notitie

U kunt de Developer-laag gebruiken voor de evaluatie van de API Management functies. U moet de Developer-laag niet gebruiken voor productie.

Als u de verwachte kosten wilt bekijken en wilt aanpassen aan uw implementatiebehoeften, kunt u het aantal schaaleenheden en App Service exemplaren wijzigen in de Azure-prijscalculator.

Op dezelfde manier vindt u de prijsrichtlijnen voor App Service-omgevingen.

U kunt Application Gateway prijzen configureren, afhankelijk van de vereiste laag en resources.

Prestatie-efficiëntie

Prestatie-efficiëntie is de mogelijkheid om op efficiënte wijze uw werkbelasting te schalen om te voldoen aan de vereisten die gebruikers eraan stellen. Zie Overzicht van prestatie-efficiëntiepijler voor meer informatie.

Schaalbaarheid

U kunt API Management exemplaren uitschalen, afhankelijk van een aantal factoren, zoals het aantal en de snelheid van gelijktijdige verbindingen, het soort en aantal geconfigureerde beleidsregels, aanvraag- en antwoordgrootten en back-endlatenties voor de API's. De opties voor het uitschalen van exemplaren zijn beschikbaar in de lagen Basic, Standard en Premium, maar zijn gebonden door een bovengrens voor schaalaanpassing in de lagen Basic en Standard. De exemplaren worden Eenheden genoemd en kunnen omhoog worden geschaald tot een maximum van twee eenheden in de Basic-laag, vier eenheden in de Standard-laag en een willekeurig aantal eenheden in de Premium-laag. Opties voor automatisch schalen zijn ook beschikbaar om uitschalen in te schakelen op basis van regels.

App Service-omgevingen zijn ontworpen voor schaalaanpassing met limieten op basis van de prijscategorie. U kunt de apps die worden gehost onder de App Service-omgevingen configureren om uit te schalen (aantal exemplaren) of omhoog te schalen (instantiegrootte), afhankelijk van de vereisten van de toepassing.

Azure Application Gateway automatisch schalen is beschikbaar als onderdeel van de zone-redundante SKU in alle wereldwijde Azure-regio's. Zie de openbare preview-functie met betrekking tot automatisch schalen van App Gateway.

Dit scenario implementeren

Vereisten en aannames

  1. U moet een aangepaste domeinnaam aanschaffen.
  2. U hebt een TLS-certificaat nodig (we hebben een jokertekencertificaat van de Azure Certificates-service gebruikt) om er een te gebruiken voor al onze aangepaste domeinen. U kunt ook een zelfondertekend certificaat aanschaffen voor Dev Test-scenario's.
  3. Deze specifieke implementatie maakt gebruik van de domeinnaam contoso.org en een TLS-certificaat met jokertekens voor het domein.
  4. De implementatie maakt gebruik van de resourcenamen en adresruimten die worden vermeld in de sectie Implementatie. U kunt de resourcenamen en adresruimten configureren.

Implementatie en samenbrengen van de onderdelen

Implementeren op Azure

U moet de geïmplementeerde onderdelen verder configureren met behulp van de voorgaande Resource Manager sjabloon als volgt:

  1. VNet met de volgende configuraties:

    • Naam: ase-internal-vnet
    • Adresruimte voor VNet: 10.0.0.0/16
    • Vier subnetten
      • backendSubnet voor DNS-service: 10.0.0.0/24
      • apimsubnetvoor interne API Management Service: 10.0.1.0/28
      • asesubnet voor ILB ASE: 10.0.2.0/24
      • VMSubnet voor test-VM's en interne door DevOps gehoste agent-VM: 10.0.3.0/24
  2. Privé-DNS service (openbare preview) omdat het toevoegen van een DNS-service vereist dat het VNet leeg is.

  3. App Service Environment met de ILB-optie (Internal Load Balancer): aseinternal (DNS: aseinternal.contoso.org). Zodra de implementatie is voltooid, uploadt u het jokertekencertificaat voor de ILB

  4. App Service plannen met ASE als locatie

  5. Een API-app (App Services voor het gemak) - srasprest (URL: https://srasprest.contoso.org) - ASP.NET op MVC gebaseerde web-API. Na de implementatie configureert u het volgende:

    • Web-app voor het gebruik van het TLS-certificaat
    • Application Insights voor de voorgaande apps: api-insights
    • Maak een Azure Cosmos DB-service voor web-API's die intern worden gehost in VNet: noderestapidb
    • DNS-vermeldingen maken in de Privé-DNS zone die is gemaakt
    • U kunt Azure Pipelines gebruiken om de agents op Virtual Machines te configureren om de code voor web-app in het interne netwerk te implementeren
    • Als u de API-app intern wilt testen, maakt u een test-VM in het VNet-subnet
  6. Maak API Management-service:apim-internal

  7. Configureer de service om verbinding te maken met het interne VNet in het subnet: apimsubnet. Nadat de implementatie is voltooid, voert u de volgende aanvullende stappen uit:

    • Aangepaste domeinen configureren voor APIM Services met behulp van TLS
      • API-portal (api.contoso.org)
      • Ontwikkelaarsportal (portal.contoso.org)
      • Configureer in de sectie API's de ASE-apps met behulp van de DNS-naam van ASE toegevoegd beleid voor hostheader voor de web-app
      • Gebruik de eerder gemaakte test-VM om de interne API Management-service op de Virtual Network te testen

    Notitie

    Het testen van de APIM-API's van de Azure Portal werkt niet, omdat api.contoso.org niet openbaar kan worden opgelost.*

  8. Configureer de Application Gateway (WAF V1) voor toegang tot de API-service: apim-gateway op poort 80. Voeg TLS-certificaten toe aan de Application Gateway en bijbehorende statustests en HTTP-instellingen. Configureer ook de regels en listeners voor het gebruik van het TLS-certificaat.

Zodra de voorgaande stappen zijn voltooid, configureert u de DNS-vermeldingen in de CNAME-vermeldingen van de webregistrar van api.contoso.org en portal.contoso.org met de openbare DNS-naam van de Application Gateway: ase-appgtwy.westus.cloudapp.azure.com. Controleer of u de Ontwikkelaarsportal kunt bereiken vanuit openbaar en of u de API's van de APIM-services kunt testen met behulp van de Azure Portal.

Notitie

Het is geen goede gewoonte om dezelfde URL te gebruiken voor interne en externe eindpunten voor de APIM-services (hoewel in deze demo beide URL's hetzelfde zijn). Als u ervoor kiest om verschillende URL's voor interne en externe eindpunten te hebben, kunt u gebruikmaken van Application Gateway WAF v2, dat http-omleiding en nog veel meer ondersteunt.

Medewerkers

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

Hoofdauteur:

Andere inzenders:

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

Volgende stappen

Een web-app migreren met behulp van Azure API Management