Anmerkung
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
GILT FÜR: Developer | Premium
Selbst gehostetes Gateway ist eine optionale containerisierte Version des standardmäßigen verwalteten Gateways, das in jeder API-Verwaltungsinstanz enthalten ist. Es ist nützlich für Szenarien wie das Platzieren von Gateways in den gleichen Umgebungen, in denen Sie Ihre APIs hosten. Verwenden Sie das selbst gehostete Gateway, um den API-Datenverkehrsfluss zu verbessern und Anforderungen an die API-Sicherheit und -Compliance zu erfüllen.
In diesem Artikel wird erläutert, wie das selbst gehostete Gatewayfeature von Azure API Management die Hybrid- und Multicloud-API-Verwaltung ermöglicht. Außerdem wird die allgemeine Architektur des Features präsentiert und seine Funktionen beschrieben.
Eine Übersicht über die Unterschiede zwischen verwalteten und selbst gehosteten Gateways finden Sie unter API-Gateway in der API-Verwaltung.
API-Verwaltung in Hybridumgebungen und Umgebungen mit mehreren Clouds
Das selbst gehostete Gatewayfeature erweitert die API-Verwaltungsunterstützung für Hybrid- und Multicloud-Umgebungen und ermöglicht es Ihnen, APIs, die lokal und über cloudübergreifend gehostet werden, effizient und sicher über eine einzelne API-Verwaltungsinstanz in Azure zu verwalten.
Mit selbst gehostetem Gateway haben Sie die Flexibilität, eine containerisierte Version der API-Verwaltungsgatewaykomponente in den gleichen Umgebungen bereitzustellen, in denen Sie Ihre APIs hosten. Alle selbst gehosteten Gateways werden von der API-Verwaltungsinstanz verwaltet, mit der sie verbunden sind, sodass Sie die Sichtbarkeit und einheitliche Verwaltungserfahrung über alle internen und externen APIs hinweg erhalten.
Jede API-Verwaltungsinstanz besteht aus den folgenden Schlüsselkomponenten:
- Eine Verwaltungsebene, die als API verfügbar gemacht wird, um den Dienst über das Azure-Portal, PowerShell und andere unterstützte Technologien zu konfigurieren
- Ein Gateway (oder eine Datenebene), das für Proxy-API-Anforderungen, das Anwenden von Richtlinien und das Sammeln von Telemetriedaten zuständig ist
- Ein Entwicklerportal, das von Entwicklern zum Ermitteln, Erlernen und Onboarding für die Verwendung der APIs verwendet wird
Standardmäßig werden alle diese Komponenten in Azure bereitgestellt, was dazu führt, dass der gesamte API-Datenverkehr (dargestellt als einfarbige schwarze Pfeile in der folgenden Abbildung) durch Azure fließt, unabhängig davon, wo Back-Ends die APIs implementieren. Mit dem einfachen Betrieb dieses Modells gehen allerdings höhere Latenzen, Complianceprobleme und in einigen Fällen zusätzliche Gebühren für die Datenübertragung einher.
Durch die Bereitstellung von selbst gehosteten Gateways in den gleichen Umgebungen, in denen die Back-End-API-Implementierungen gehostet werden, können API-Datenverkehr direkt an die Back-End-APIs fließen, wodurch Latenz reduziert, Datenübertragungskosten optimiert und die Compliance ermöglicht und gleichzeitig die Vorteile einer einzigen Verwaltungs-, Observierbarkeits- und Ermittlungsmöglichkeit für alle APIs in der Organisation beibehalten werden, unabhängig davon, wo ihre Implementierungen gehostet werden.
Verpackung
Das selbstgehostete Gateway ist in der Microsoft-Artefaktregistrierung als Linux-basiertes Docker-Containerimage verfügbar. Sie kann für Docker, Kubernetes oder eine beliebige andere Container-Orchestrierungslösung bereitgestellt werden, die auf einem Servercluster lokal, in einer Cloudinfrastruktur oder zu Auswertungs- und Entwicklungszwecken auf einem Persönlichen Computer ausgeführt wird. Sie können das selbst gehostete Gateway auch als Cluster-Erweiterung für einen Azure Arc-aktivierten Kubernetes-Cluster bereitstellen.
Containerimages
Es stehen eine Vielzahl von Containerimages für selbst gehostete Gateways zur Verfügung:
| Tagkonvention | Empfehlung | Beispiel | Fortlaufendes Tag | Empfohlen für die Produktion |
|---|---|---|---|---|
{major}.{minor}.{patch} |
Verwenden Sie dieses Tag, um immer dieselbe Version des Gateways auszuführen. | 2.0.0 |
❌ | ✔️ |
v{major} |
Verwenden Sie dieses Tag, um immer eine Hauptversion des Gateways mit jedem neuen Feature und Patch auszuführen. | v2 |
✔️ | ❌ |
v{major}-preview |
Verwenden Sie dieses Tag, wenn Sie immer das neueste Vorschaucontainerimage ausführen möchten. | v2-preview |
✔️ | ❌ |
latest |
Verwenden Sie dieses Tag, wenn Sie das selbstgehostete Gateway auswerten möchten. | latest |
✔️ | ❌ |
beta
1 |
Verwenden Sie dieses Tag, wenn Sie die Vorschauversionen des selbstgehosteten Gateways testen möchten. | beta |
✔️ | ❌ |
Hier finden Sie eine vollständige Liste der verfügbaren Tags.
1Vorschauversionen werden nicht offiziell unterstützt und sind nur für experimentelle Zwecke gedacht. Siehe Supportrichtlinien für selbstgehostete Gateways.
Verwendung von Tags in offiziellen Bereitstellungsoptionen
Bereitstellungsoptionen im Azure-Portal verwenden das v2 Tag, mit dem Sie die neueste Version des selbst gehosteten Gateway-v2-Containerimages mit allen Featureupdates und Patches verwenden können.
Hinweis
Der Befehl und die YAML-Codeausschnitte werden als Referenz bereitgestellt. Sie können ein spezifischeres Tag verwenden, wenn Sie möchten.
Wenn Sie ein Gateway mit einem Helm-Chart installieren, wird das Image-Tagging optimiert. Die Anwendungsversion des Helm-Charts heftet das Gateway an eine bestimmte Version an und ist nicht auf latest angewiesen.
Weitere Informationen finden Sie unter Installieren eines selbst gehosteten API-Verwaltungsgateways auf Kubernetes mit Helm.
Risiko der Verwendung von fortlaufenden Tags
Fortlaufende Tags sind Tags, die möglicherweise aktualisiert werden, wenn eine neue Version des Containerimages veröffentlicht wird. Die Verwendung dieser Art von Tags ermöglicht containerbenutzern das Empfangen von Updates für das Containerimage, ohne ihre Bereitstellungen aktualisieren zu müssen.
Wenn Sie diesen Tagtyp verwenden, können Sie möglicherweise verschiedene Versionen parallel ausführen, ohne sie zu notieren, z. B. wenn Sie Skalierungsaktionen ausführen, nachdem das v2 Tag aktualisiert wurde.
Beispiel: Das v2-Element wird mit dem 2.0.0-Container-Image freigegeben. Wenn 2.1.0 freigegeben wird, wird das v2-Tag mit dem 2.1.0-Bild verbunden.
Wichtig
Erwägen Sie die Verwendung eines bestimmten Versionstags in der Produktion, um unbeabsichtigte Upgrades auf eine neuere Version zu vermeiden.
Konnektivität mit Azure
Selbstgehostete Gateways erfordern ausgehende TCP/IP-Konnektivität mit Azure an Port 443. Jedes selbst gehostete Gateway muss einer einzelnen API-Verwaltungsinstanz zugeordnet und über die Verwaltungsebene konfiguriert werden. Ein selbstgehostetes Gateway nutzt die Konnektivität mit Azure für Folgendes:
- Melden Sie ihren Status, indem Sie Taktnachrichten jede Minute senden.
- Es wird regelmäßig (alle 10 Sekunden) nach Konfigurationsupdates gesucht und diese angewendet, wann immer sie verfügbar sind.
- Senden von Metriken an Azure Monitor, falls dies konfiguriert ist.
- Senden von Ereignissen an Application Insights, falls dies konfiguriert ist.
FQDN-Abhängigkeiten
Für den ordnungsgemäßen Betrieb benötigt jedes selbstgehostete Gateway ausgehende Konnektivität an Port 443 mit den folgenden Endpunkten, die mit der zugehörigen cloudbasierten API Management-Instanz verknüpft sind:
| Endpunkt | Erforderlich? | Notizen |
|---|---|---|
| Hostname des Konfigurationsendpunkts |
<api-management-service-name>.configuration.azure-api.net
1 |
Benutzerdefinierte Hostnamen werden ebenfalls unterstützt und können anstelle des Standardhostnamens verwendet werden. |
| Öffentliche IP-Adresse der API Management-Instanz | ✔️ | Die IP-Adresse des primären Standorts reicht aus. |
| Öffentliche IP-Adressen des Azure Storage-Diensttags | Optional2 | IP-Adressen müssen dem primären Speicherort der API-Verwaltungsinstanz entsprechen. |
| Hostname des Azure Blob Storage-Kontos | Optional2 | Das Konto, das der Instanz (<blob-storage-account-name>.blob.core.windows.net) zugeordnet ist. |
| Hostname des Azure Table Storage-Kontos | Optional2 | Das Konto, das der Instanz (<table-storage-account-name>.table.core.windows.net) zugeordnet ist. |
| Endpunkte für Azure Resource Manager | Optional3 | Der erforderliche Endpunkt ist management.azure.com. |
| Endpunkte für die Microsoft Entra-Integration | Optional4 | Erforderliche Endpunkte sind <region>.login.microsoft.com und login.microsoftonline.com. |
| Endpunkte für die Azure Application Insights-Integration | Optional5 | Minimale erforderliche Endpunkte sind rt.services.visualstudio.com:443, dc.services.visualstudio.com:443und {region}.livediagnostics.monitor.azure.com:443. Weitere Informationen finden Sie in der Dokumentation zu Azure Monitor. |
| Endpunkte für die Integration von Event Hubs | Optional5 | Weitere Informationen finden Sie in der Dokumentation zu Azure Event Hubs. |
| Endpunkte für die Integration von externem Speicher | Optional5 | Diese Anforderung hängt vom verwendeten externen Cache ab. |
1Informationen zu einer API-Verwaltungsinstanz in einem internen virtuellen Netzwerk finden Sie unter Konnektivität in einem internen virtuellen Netzwerk.
2Nur in v2 erforderlich, wenn der API-Inspektor oder Kontingente in Richtlinien verwendet werden.
3Nur erforderlich, wenn die Microsoft Entra-Authentifizierung zum Überprüfen der RBAC-Berechtigungen verwendet wird.
4Nur erforderlich, wenn Sie die Microsoft Entra-Authentifizierung oder -Richtlinien im Zusammenhang mit Microsoft Entra verwenden.
5Nur erforderlich, wenn das Feature verwendet wird und öffentliche IP-Adresse, Port und Hostnameninformationen erforderlich sind.
Wichtig
- DNS-Hostnamen müssen für IP-Adressen aufgelöst werden können, und die entsprechenden IP-Adressen müssen erreichbar sein.
- Die zugehörigen Speicherkontonamen werden auf der Seite "Netzwerkkonnektivität " des Diensts im Azure-Portal aufgelistet.
- Öffentliche IP-Adressen, die den zugeordneten Speicherkonten zugrunde liegen, sind dynamisch und können sich ohne vorherige Ankündigung ändern.
Konnektivität in einem internen virtuellen Netzwerk
Private Konnektivität. Wenn das selbst gehostete Gateway in einem virtuellen Netzwerk bereitgestellt wird, aktivieren Sie die private Konnektivität mit dem v2-Konfigurationsendpunkt vom Standort des selbst gehosteten Gateways, z. B. mithilfe eines privaten DNS in einem peered-Netzwerk.
Internetverbindung. Wenn das selbst gehostete Gateway eine Verbindung mit dem v2-Konfigurationsendpunkt über das Internet herstellen muss, konfigurieren Sie einen benutzerdefinierten Hostnamen für den Konfigurationsendpunkt, und machen Sie den Endpunkt mithilfe des Azure-Anwendungsgateways verfügbar.
Authentifizierungsoptionen
Die Konfigurationseinstellungen des Gatewaycontainers bieten die folgenden Optionen zum Authentifizieren der Verbindung zwischen dem selbst gehosteten Gateway und dem konfigurationsendpunkt der cloudbasierten API-Verwaltungsinstanz.
| Option | Überlegungen |
|---|---|
| Microsoft Entra-Authentifizierung | Konfigurieren Sie eine oder mehrere Microsoft Entra-Apps für den Zugriff auf das Gateway. Verwalten Sie den Zugriff separat pro App. Konfigurieren Sie längere Ablaufzeiten für geheime Schlüssel gemäß den Richtlinien Ihrer Organisation. Verwenden Sie standardmäßige Microsoft Entra-Verfahren, um Benutzer- oder Gruppenberechtigungen für Apps zuzuweisen oder zu widerrufen und um geheime Schlüssel zu verwalten. |
| Gateway-Zugriffstoken. (Auch als Authentifizierungsschlüssel bezeichnet.) | Das Token läuft mindestens alle 30 Tage ab und muss in den Containern erneuert werden. Gesichert durch einen Gatewayschlüssel, der unabhängig gedreht werden kann (z. B. zum Widerrufen des Zugriffs). Durch die Erneuerung des Gatewayschlüssels werden alle damit erstellten Zugriffstoken ungültig. |
Tipp
Informationen zu Ereignisrasterereignissen, die von einem selbst gehosteten Gateway generiert werden, wenn ein Gatewayzugriffstoken bald abläuft oder abgelaufen ist, finden Sie unter Azure API Management als Ereignisrasterquelle . Verwenden Sie diese Ereignisse, um sicherzustellen, dass bereitgestellte Gateways immer mit der zugehörigen API-Verwaltungsinstanz authentifiziert werden können.
Konnektivitätsfehler
Wenn die Verbindung zu Azure unterbrochen wird, kann das selbstgehostete Gateway keine Konfigurationsupdates empfangen, Statusmeldungen senden oder Telemetriedaten hochladen.
Das selbstgehostete Gateway ist für „fail-static“ konzipiert und übersteht temporäre Unterbrechungen der Konnektivität mit Azure. Es kann mit oder ohne lokale Konfigurationssicherung bereitgestellt werden. Bei der Konfigurationssicherung speichern selbstgehostete Gateways in regelmäßigen Abständen eine Sicherungskopie der jüngsten heruntergeladenen Konfiguration auf einem persistenten Volume, das an den Container oder Pod angeschlossen ist.
Wenn die Konfigurationssicherung deaktiviert ist und die Konnektivität mit Azure unterbrochen wird, geschieht Folgendes:
- Das Ausführen selbst gehosteter Gateways funktioniert weiterhin mithilfe einer Speicherkopie der Konfiguration.
- Gestoppte selbst gehostete Gateways können nicht mehr gestartet werden.
Wenn die Konfigurationssicherung aktiviert ist und die Konnektivität mit Azure unterbrochen wird, geschieht Folgendes:
- Das Ausführen selbst gehosteter Gateways funktioniert weiterhin mithilfe einer Speicherkopie der Konfiguration.
- Gestoppte selbstgehostete Gateways können mithilfe einer Konfigurationssicherungskopie neu gestartet werden.
Wenn die Verbindung wiederhergestellt wird, stellt jedes selbst gehostete Gateway, das von dem Ausfall betroffen ist, automatisch eine Verbindung mit der zugehörigen API-Verwaltungsinstanz her und lädt alle Konfigurationsupdates herunter, die während des Gateways offline waren.
Sicherheit
Einschränkungen
Die folgende Funktionalität, die in verwalteten Gateways verfügbar ist, ist in selbst gehosteten Gateways nicht verfügbar:
- TLS-Sitzungswiederaufnahme.
- Erneute Aushandlung des Clientzertifikats. Um Clientzertifikatauthentifizierung zu verwenden, müssen API-Consumer ihre Zertifikate als Teil des ersten TLS-Handshakes präsentieren. Um dies sicherzustellen, aktivieren Sie die Einstellung „Clientzertifikat aushandeln“, wenn Sie den benutzerdefinierten Hostnamen (Domänennamen) eines selbstgehosteten Gateways konfigurieren.
Transport Layer Security (TLS) (Transportschichtsicherheit)
Unterstützte Protokolle
Selbst gehostete Gateways unterstützen standardmäßig TLS v1.2.
Wenn Sie benutzerdefinierte Domänen verwenden, können Sie TLS v1.0 und/oder v1.1 in der Steuerebene aktivieren.
Verfügbare Verschlüsselungssammlungen
Selbst gehostete Gateways verwenden die folgenden Verschlüsselungssammlungen für Client- und Serververbindungen:
TLS_AES_256_GCM_SHA384TLS_CHACHA20_POLY1305_SHA256TLS_AES_128_GCM_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384TLS_DHE_RSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256TLS_DHE_RSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384TLS_DHE_RSA_WITH_AES_256_CBC_SHA256TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256TLS_DHE_RSA_WITH_AES_128_CBC_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHATLS_ECDHE_RSA_WITH_AES_256_CBC_SHATLS_DHE_RSA_WITH_AES_256_CBC_SHATLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHATLS_ECDHE_RSA_WITH_AES_128_CBC_SHATLS_DHE_RSA_WITH_AES_128_CBC_SHATLS_RSA_WITH_AES_256_GCM_SHA384TLS_RSA_WITH_AES_128_GCM_SHA256TLS_RSA_WITH_AES_256_CBC_SHA256TLS_RSA_WITH_AES_128_CBC_SHA256TLS_RSA_WITH_AES_256_CBC_SHATLS_RSA_WITH_AES_128_CBC_SHA
Verwalten von Verschlüsselungssammlungen
Mit v2.1.1 und höher können Sie die Verschlüsselungen verwalten, die über die Konfiguration verwendet werden:
-
net.server.tls.ciphers.allowed-suitesermöglicht es Ihnen, eine durch Trennzeichen getrennte Liste von Verschlüsselungen zu definieren, die für die TLS-Verbindung zwischen dem API-Client und dem selbst gehosteten Gateway verwendet werden sollen. -
net.client.tls.ciphers.allowed-suitesermöglicht es Ihnen, eine durch Trennzeichen getrennte Liste von Verschlüsselungen zu definieren, die für die TLS-Verbindung zwischen dem selbst gehosteten Gateway und dem Back-End verwendet werden sollen.
Verwandte Inhalte
- Übersicht über das API-Gateway
- Supportrichtlinie für selbst gehostetes Gateway
- API-Verwaltung in einer Hybrid- und Multicloud-Welt
- Anleitung zum Ausführen des selbst gehosteten Gateways auf Kubernetes in der Produktion
- Bereitstellen eines selbst gehosteten Gateways in Docker
- Bereitstellen eines selbst gehosteten Gateways für Kubernetes
- Bereitstellen eines selbst gehosteten Gateways in einem Azure Arc-fähigen Kubernetes-Cluster
- Bereitstellen eines selbst gehosteten Gateways für Azure-Container-Apps
- Konfigurationseinstellungen für selbstgehostete Gateways
- Observability-Funktionen in der API-Verwaltung
- Dapr-Integration mit selbst gehosteten Gateways