Bearbeiten

Freigeben über


Veröffentlichen interner APIs für externe Benutzer

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

In diesem Szenario konsolidiert eine Organisation mehrere APIs intern mithilfe der Azure-API-Verwaltung, die in einem virtuellen Netzwerk bereitgestellt wird.

Aufbau

Architekturdiagramm, das den gesamten Lebenszyklus der internen APIs zeigt, die von den externen Benutzern genutzt werden.

Laden Sie eine Visio-Datei dieser Architektur herunter.

Das vorangegangene Szenario umfasst einen kompletten Lebenszyklus interner APIs, die von den externen Benutzern genutzt werden.

Datenfluss

Die Daten fließen wie folgt:

  1. Entwickler checken Code in ein GitHub-Repository ein, das mit dem CI/CD-Pipeline-Agent verbunden ist, der auf einer Azure-VM installiert ist.
  2. Der Agent überträgt den Build an die API-Anwendung, die auf ILB-App Service-Umgebung gehostet wird.
  3. Azure API Management nutzt die vorangegangenen APIs über HOST-Header, die in der API Management-Richtlinie angegeben sind.
  4. Die API-Verwaltung verwendet den App Service-Umgebung DNS-Namen für alle APIs.
  5. Das Anwendungsgateway macht das API-Verwaltungsentwickler- und API-Portal verfügbar.
  6. Azure Privates DNS wird verwendet, um den Datenverkehr intern zwischen App Service-Umgebung, API-Verwaltung und Anwendungsgateway weiterzuleiten.
  7. Externe Benutzer nutzen das verfügbar gemachte Entwicklerportal, um die APIs über die öffentliche IP-Adresse des Anwendungsgateways zu nutzen.

Komponenten

  • Mit Azure Virtual Network können Azure-Ressourcen sicher untereinander sowie mit dem Internet und mit lokalen Netzwerken kommunizieren.
  • Mit privatem Azure-DNS können Domänennamen in einem virtuellen Netzwerk aufgelöst werden, ohne dass eine benutzerdefinierte DNS-Lösung hinzugefügt werden muss.
  • Azure API Management unterstützt Organisationen beim Veröffentlichen von APIs für externe, Partner- und interne Entwickler, um ihre Daten und Dienste nutzen zu können.
  • Application Gateway ist ein Lastenausgleich für Web-Datenverkehr, das Ihnen dabei hilft, eingehenden Datenverkehr für Ihre Web-Anwendungen zu verwalten.
  • Der interne Lastenausgleich App Service-Umgebung ist ein Azure-App Dienstfeature, das eine vollständig isolierte und dedizierte Umgebung für sicheres Ausführen von App Service-Apps im großen Maßstab bereitstellt.
  • Azure DevOps ist ein Dienst für die Verwaltung Ihres Entwicklungslebenszyklus und umfasst Features für Planung und Projektmanagement, Codeverwaltung, Build und Release.
  • Application Insights ist ein erweiterbarer, für Webentwickler konzipierter Dienst zur Verwaltung der Anwendungsleistung (Application Performance Management, APM) auf mehreren Plattformen.
  • Azure Cosmos DB ist ein global verteilter Datenbankdienst von Microsoft mit mehreren Modellen.

Alternativen

Szenariodetails

In diesem Szenario hostt eine Organisation mehrere APIs mit Azure-App lication Service Environment (ILB App Service-Umgebung), und sie möchten diese APIs intern mithilfe von Azure API Management (APIM) konsolidieren, die in einem virtuellen Netzwerk bereitgestellt werden. Die interne API Management-Instanz könnte auch externen Benutzern zur Verfügung gestellt werden, um das volle Potenzial der APIs nutzen zu können. Diese externe Belichtung kann mithilfe von Azure-App lication Gateway-Weiterleitungsanforderungen an den internen API-Verwaltungsdienst erreicht werden, der wiederum die im App Service-Umgebung bereitgestellten APIs nutzt.

  • Die Web-APIs werden über ein gesichertes HTTPS-Protokoll gehostet und verwenden ein TLS-Zertifikat.
  • Das Anwendungsgateway ist auch über Port 443 für gesicherte und zuverlässige ausgehende Anrufe konfiguriert.
  • Der API Management-Dienst ist so konfiguriert, dass er benutzerdefinierte Domänen mit TLS-Zertifikaten verwendet.
  • Überprüfen der vorgeschlagenen Netzwerkkonfiguration für App Service-Umgebungen
  • Es muss ausdrücklich erwähnt werden, dass Port 3443 es API Management ermöglicht, die Verwaltung über das Azure-Portal oder PowerShell durchzuführen.
  • Verwenden Sie Richtlinien innerhalb von APIM, um einen HOST-Header für die auf App Service-Umgebung gehostete API hinzuzufügen. Dadurch wird sichergestellt, dass der App Service-Umgebung Lastenausgleich die Anforderung ordnungsgemäß weiterleitet.
  • Die API-Verwaltung akzeptiert den App Service-Umgebung DNS-Eintrag für alle unter App Service-Umgebung gehosteten Apps. Fügen Sie eine APIM-Richtlinie hinzu, um den HOST-Header explizit festzulegen, damit der App Service-Umgebung Lastenausgleich zwischen Apps unter dem App Service-Umgebung unterscheiden kann.
  • Erwägen Sie die Integration in Azure Application Insights. Dadurch stehen Ihnen über Azure Monitor auch Metriken für die Überwachung zur Verfügung.
  • Wenn Sie CI/CD-Pipelines für die Bereitstellung interner APIs verwenden, sollten Sie ihren eigenen gehosteten Agent auf einer VM innerhalb des virtuellen Netzwerks erstellen.

Mögliche Anwendungsfälle

  • Synchronisieren Sie Kundenadresseninformationen intern, nachdem der Kunde eine Änderung vorgenommen hat.
  • Gewinnen von Entwicklern für Ihre Plattform, indem eindeutige Datenressourcen verfügbar gemacht werden

Überlegungen

Diese Überlegungen beruhen auf den Säulen des Azure Well-Architected Frameworks, d. h. einer Reihe von Grundsätzen, mit denen die Qualität von Workloads verbessert werden kann. Weitere Informationen finden Sie unter Microsoft Azure Well-Architected Framework.

Zuverlässigkeit

Zuverlässigkeit stellt sicher, dass Ihre Anwendung Ihre Verpflichtungen gegenüber den Kunden erfüllen kann. Weitere Informationen finden Sie in der Übersicht über die Säule „Zuverlässigkeit“.

Verfügbarkeit

Sie können den Azure API Management-Dienst als Bereitstellung in mehreren Regionen für eine höhere Verfügbarkeit und auch zur Reduzierung von Wartezeiten bereitstellen. Diese Funktion ist nur im Premium-Modus verfügbar. Der API Management-Dienst in diesem speziellen Szenario nutzt APIs aus App Service-Umgebungen. Sie können auch APIM für APIs verwenden, die in der internen lokalen Infrastruktur gehostet werden.

App Service-Umgebungen könnten Traffic Manager-Profile verwenden, um den in App Service-Umgebungen gehosteten Datenverkehr für eine höhere Skalierung und Verfügbarkeit zu verteilen.

Resilienz

Auch wenn es in diesem Beispielszenario zwar eher um die Konfiguration geht, sollten die in den App Service-Umgebungen gehosteten APIs ausreichend resilient sein, um Fehler in den Anforderungen zu behandeln, die schließlich vom API Management-Dienst und Application Gateway verwaltet werden. Berücksichtigen Sie Muster für Wiederholungen und Trennschalter im API-Design. Allgemeine Informationen zur Entwicklung robuster Lösungen finden Sie unter Entwerfen robuster Anwendungen für Azure.

Sicherheit

Sicherheit bietet Schutz vor vorsätzlichen Angriffen und dem Missbrauch Ihrer wertvollen Daten und Systeme. Weitere Informationen finden Sie unter Übersicht über die Säule „Sicherheit“.

Da das vorherige Beispielszenario vollständig in einem internen Netzwerk gehostet wird, werden API-Verwaltung und App Service-Umgebung bereits in gesicherter Infrastruktur (Azure Virtual Network) bereitgestellt. Sie können Application Gateway-Instanzen in Microsoft Defender for Cloud integrieren, um eine reibungslose Möglichkeit zur Vermeidung, Erkennung und Reaktion auf Bedrohungen für die Umgebung bereitzustellen. Allgemeine Informationen zum Entwerfen sicherer Lösungen finden Sie in der Dokumentation zur Azure-Sicherheit.

Kostenoptimierung

Bei der Kostenoptimierung geht es um die Suche nach Möglichkeiten, unnötige Ausgaben zu reduzieren und die Betriebseffizienz zu verbessern. Weitere Informationen finden Sie unter Übersicht über die Säule „Kostenoptimierung“.

API Management ist in vier Tarifen erhältlich: Developer, Basic, Standard und Premium. Ausführliche Informationen zu den Unterschieden zwischen den einzelnen Tarifen finden Sie in der API Management-Preisübersicht.

Kunden können API Management skalieren, indem sie Einheiten hinzufügen und entfernen. Die Kapazität jeder Einheit ist vom Tarif abhängig.

Hinweis

Sie können den Developer-Tarif zur Evaluierung der API Management-Features verwenden. Sie sollten den „Developer“-Tarif nicht für die Produktion verwenden.

Im Azure-Preisrechner können Sie die voraussichtlichen Kosten für Ihre speziellen Bereitstellungsanforderungen ermitteln, indem Sie die Anzahl von Skalierungseinheiten und App Service-Instanzen ändern.

Ebenso finden Sie hier die Preisübersicht der App Service-Umgebungen.

Sie können die Application Gateway-Preise in Abhängigkeit von dem erforderlichen Tarif und den Ressourcen konfigurieren.

Effiziente Leistung

Leistungseffizienz ist die Fähigkeit Ihrer Workload, auf effiziente Weise eine den Anforderungen der Benutzer entsprechende Skalierung auszuführen. Weitere Informationen finden Sie unter Übersicht über die Säule „Leistungseffizienz“.

Skalierbarkeit

Sie können API Management-Instanzen in Abhängigkeit von einer Reihe von Faktoren aufskalieren, z. B. die Anzahl und Übertragungsrate von gleichzeitigen Verbindungen, Art und Anzahl von konfigurierten Richtlinien, Umfang von Anforderungen und Antworten sowie Backend-Latenzzeiten für die APIs. Die Optionen für das Aufskalieren von Instanzen sind in den Tarifen „Basic“, „Standard“ und „Premium“ verfügbar, werden aber in den Tarifen „Basic“ und „Standard“ durch einen oberen Grenzwert für die Skalierung begrenzt. Die Instanzen werden als Einheiten bezeichnet und können auf bis zu maximal zwei Einheiten im Tarif „Basic“, vier Einheiten im Tarif „Standard“ und eine beliebige Anzahl von Einheiten im Tarif „Premium“ skaliert werden. Die Optionen für die automatische Skalierung sind ebenfalls verfügbar, um das Aufskalieren auf Basis von Regeln zu aktivieren.

App Service-Umgebungen sind für die Skalierung mit Grenzwerten basierend auf dem Tarif konzipiert. Sie können die unter den App Service-Umgebungen gehosteten Anwendungen in Abhängigkeit von den Anforderungen der Anwendung konfigurieren, um aufzuskalieren (Anzahl der Instanzen) oder hochzuskalieren (Größe der Instanz).

Die automatische Skalierung von Azure Application Gateway ist im Rahmen der zonenredundanten SKU in allen globalen Azure-Regionen verfügbar. Informationen zur automatischen Skalierung des App-Gateways finden Sie in der öffentlichen Previewfunktion.

Bereitstellen dieses Szenarios

Voraussetzungen und Annahmen

  1. Sie müssen einen benutzerdefinierten Domänennamen erwerben.
  2. Sie benötigen ein TLS-Zertifikat für alle benutzerdefinierten Domänen (im Beispiel wird ein Platzhalterzertifikat des Azure-Zertifikatdiensts verwendet). Sie können auch ein selbstsigniertes Zertifikat für Testszenarien der Entwickler erwerben.
  3. Für diese spezifische Bereitstellung werden der Domänenname „contoso.org“ und ein TLS-Platzhalterzertifikat für die Domäne verwendet.
  4. Die Bereitstellung verwendet die im Bereitstellungsabschnitt genannten Ressourcennamen und Adressräume. Sie können die Ressourcennamen und Adressräume konfigurieren.

Bereitstellung und Zusammenstellung der Komponenten

In Azure bereitstellen

Sie müssen die mithilfe der vorherigen Resource Manager-Vorlage bereitgestellten Komponenten wie folgt konfigurieren:

  1. Virtuelles Netzwerk mit den folgenden Konfigurationen:

    • Name: ase-internal-vnet
    • Adressraum für virtuelles Netzwerk: 10.0.0.0/16
    • Vier Subnetze
      • backendSubnet für DNS-Dienst: 10.0.0.0/24
      • apimsubnet für internen API Management-Dienst: 10.0.1.0/28
      • asesubnetfür ILB App Service-Umgebung: 10.0.2.0/24
      • VMSubnet für virtuelle Testcomputer und intern gehostete DevOps-Agent-VM: 10.0.3.0/24
  2. Privates DNS Dienst (Public Preview), da das Hinzufügen eines DNS-Diensts erfordert, dass das virtuelle Netzwerk leer ist.

  3. App Service-Umgebung mit ILB-Option aseinternal (Internal Load Balancer): (DNS: aseinternal.contoso.org). Nachdem die Bereitstellung abgeschlossen ist, laden Sie das Platzhalterzertifikat für den ILB hoch.

  4. App Service Plan mit App Service-Umgebung als Standort

  5. Eine API-App (App Service aus Gründen der Einfachheit) – srasprest (URL: https://srasprest.contoso.org) – ASP.NET Model-View-Controller (MVC)-basierte Web-API. Nach der Bereitstellung konfigurieren Sie Folgendes:

    • Web-App, die das TLS-Zertifikat verwenden soll
    • Application Insights für die vorangegangenen Apps: api-insights
    • Erstellen Sie einen Azure Cosmos DB-Dienst für Web-APIs, die intern in virtuellem Netzwerk gehostet werden: noderestapidb
    • Erstellen von DNS-Einträgen in der azure Privates DNS Zone erstellt
    • Sie können Azure Pipelines verwenden, um die Agents auf virtuellen Computern zu konfigurieren, sodass der Code für die Web-App im internen Netzwerk bereitgestellt wird
    • Erstellen Sie zum internen Testen der API-App einen virtuellen Testcomputer im Subnetz des virtuellen Netzwerks.
  6. Erstellen des API Management-Diensts: apim-internal

  7. Konfigurieren Sie den Dienst für die Verbindung mit dem internen virtuellen Netzwerk in Subnetz: apimsubnet. Nachdem die Bereitstellung abgeschlossen ist, führen Sie die folgenden zusätzlichen Schritte aus:

    • Konfigurieren Sie benutzerdefinierte Domänen für APIM-Dienste mit TLS:
      • API-Portal (api.contoso.org)
      • Entwicklerportal (portal.contoso.org)
      • Konfigurieren Sie im Abschnitt "APIs" die App Service-Umgebung Apps mithilfe des App Service-Umgebung DNS-Namens hinzugefügte Richtlinie für HOST-Header für die Web-App.
      • Verwenden Sie den vorhergehenden virtuellen Test-Computer, um den API Management-Dienst intern im virtuellen Netzwerk zu testen

    Hinweis

    Das Testen der APIM-APIs über das Azure-Portal funktioniert nicht, da api.contoso.org nicht öffentlich aufgelöst werden kann.*

  8. Konfigurieren Sie das Anwendungsgateway für den Zugriff auf den API-Dienst: apim-gateway auf Port 80. Fügen Sie DEM Anwendungsgateway TLS-Zertifikate und entsprechende Integritätssonden und HTTP-Einstellungen hinzu. Konfigurieren Sie außerdem die Regeln und Listener für die Verwendung des TLS-Zertifikats.

Nachdem die vorstehenden Schritte erfolgreich abgeschlossen wurden, konfigurieren Sie die DNS-Einträge in den CNAME-Einträgen der Webregistrierungsstelle und api.contoso.org portal.contoso.org mit dem öffentlichen DNS-Namen des Anwendungsgateways: ase-appgtwy.westus.cloudapp.azure.com. Überprüfen Sie, ob das Entwicklerportal öffentlich zugänglich ist und Sie in der Lage sind, die APIM-Dienst-APIs über das Azure-Portal zu testen.

Hinweis

Es ist nicht empfehlenswert, für die APIM-Dienste dieselbe URL für interne und externe Endpunkte zu verwenden.

Beitragende

Dieser Artikel wird von Microsoft gepflegt. Er wurde ursprünglich von folgenden Mitwirkenden geschrieben.

Hauptautor:

Andere Mitwirkende:

Melden Sie sich bei LinkedIn an, um nicht öffentliche LinkedIn-Profile anzuzeigen.

Nächste Schritte

Migrieren einer Web-App per Azure API Management