Referenz: Konfigurationseinstellungen für selbstgehostete Gatewaycontainer

GILT FÜR: Developer | Premium

Dieser Artikel enthält eine Referenz für erforderliche und optionale Einstellungen, die zum Konfigurieren des selbstgehosteten Gatewaycontainers von API Management verwendet werden.

Weitere Informationen finden Sie unter Leitlinien zum Betrieb eines selbstgehosteten Gateways auf Kubernetes in der Produktion.

Wichtig

Diese Referenz gilt nur für das selbstgehostete Gateway v2. Diese Referenz verweist auf die minimale Version, die jede Einstellung unterstützt.

Integration der Konfigurations-API

Das selbstgehostete Gateway verwendet die Konfigurations-API, um sich mit Azure API Management zu verbinden, die neueste Konfiguration zu erhalten und Metriken zu senden, wenn es aktiviert ist.

Die folgende Tabelle beschreibt die Konfigurationsoptionen für die Integration der Konfigurations-API:

Name BESCHREIBUNG Erforderlich Standard Verfügbarkeit
gateway.name ID der selbst gehosteten Gatewayressource. Ja, bei Verwendung der Microsoft Entra-Authentifizierung Nicht zutreffend v2.3+
config.service.endpoint Konfigurationsendpunkt in Azure API Management für das selbstgehostete Gateway. Suchen Sie diesen Wert im Azure-Portal unter Gateways>Deployment. Ja Nicht zutreffend v2.0+
config.service.auth Definiert, wie das selbstgehostete Gateway sich auf die Konfigurations-API authentifiziert. Derzeit unterstützt das Gateway Gateway-Token und Microsoft Entra-Authentifizierung. Ja Nicht zutreffend v2.0+
config.service.auth.azureAd.tenantId ID des Microsoft Entra-Mandanten. Ja, bei Verwendung der Microsoft Entra-Authentifizierung Nicht zutreffend v2.3+
config.service.auth.azureAd.clientId Client-ID der Microsoft Entra-App für die Authentifizierung (auch als Anwendungs-ID bezeichnet). Ja, bei Verwendung der Microsoft Entra-Authentifizierung Nicht zutreffend v2.3+
config.service.auth.azureAd.clientSecret Geheimnis der Microsoft Entra-App für die Authentifizierung. Ja, wenn man Microsoft Entra-Authentifizierung verwendet (es sei denn, man gibt ein Zertifikat an). Nicht zutreffend v2.3+
config.service.auth.azureAd.certificatePath Pfad zum Zertifikat, mit dem sich die Microsoft Entra-App authentifizieren soll. Ja, wenn du Microsoft Entra-Authentifizierung verwendest (es sei denn, du gibst ein Geheimnis an). Nicht zutreffend v2.3+
config.service.auth.azureAd.authority Autoritäts-URL der Microsoft Entra ID. Nein https://login.microsoftonline.com v2.3+
config.service.auth.tokenAudience Zielgruppe des Tokens für die Microsoft Entra-Authentifizierung. Nein https://azure-api.net/configuration v2.3+
config.service.endpoint.disableCertificateValidation Definiert, ob das selbstgehostete Gateway das serverseitige Zertifikat der Konfigurations-API validiert. Verwenden Sie die Zertifikatsvalidierung in der Produktion. Deaktiviere es nur zum Testen und sei vorsichtig, da es ein Sicherheitsrisiko darstellen kann. Nein false v2.0+
config.service.integration.timeout Definiert das Timeout für die Interaktion mit der Konfigurations-API. Nein 00:01:40 v2.3.5+

Das selbstgehostete Gateway unterstützt mehrere Authentifizierungsoptionen, um mit der Konfigurations-API zu integrieren. Definiere diese Optionen mit config.service.auth.

Um zu definieren, wie man authentifiziert, geben Sie folgende Informationen an:

  • Geben Sie für die auf Gatewaytoken basierende Authentifizierung ein Zugriffstoken (Authentifizierungsschlüssel) des selbstgehosteten Gateways im Azure-Portal unter Gateways>Bereitstellung an.
  • Geben Sie für die Microsoft Entra ID-basierte Authentifizierung azureAdApp an, und stellen Sie die zusätzlichen config.service.auth.azureAd-Authentifizierungseinstellungen bereit.

Cross-Instanz-Entdeckung und Synchronisation

Name BESCHREIBUNG Erforderlich Standard Verfügbarkeit
nachbarschaft.host DNS-Name, der verwendet wird, um alle Instanzen einer selbstgehosteten Gatewaybereitstellung für die instanzenübergreifende Synchronisierung aufzulösen. In Kubernetes verwenden Sie einen headless Service, um die Instanzen aufzulösen. Nein Nicht zutreffend v2.0+
neighborhood.heartbeat.port UDP-Port, der für Instanzen einer selbstgehosteten Gatewaybereitstellung verwendet wird, um Heartbeats an andere Instanzen zu senden. Nein 4291 v2.0+
policy.rate-limit.sync.port UDP-Port, der für selbstgehostete Gatewayinstanzen verwendet wird, um die Ratenbegrenzung über mehrere Instanzen hinweg zu synchronisieren. Nein 4290 v2.0+

HTTP

Name BESCHREIBUNG Erforderlich Standard Verfügbarkeit
net.server.http.forwarded.proto.enabled Es wird der X-Forwarded-Proto Header anerkannt, um das Schema zu identifizieren, um die aufgerufene API-Route (nur http/https) aufzulösen. Nein false v2.5+

Kubernetes-Integration

Kubernetes Ingress (preview)

Wichtig

Die Unterstützung für Kubernetes Ingress ist experimentell, und Azure Support deckt das nicht ab. Erfahren Sie mehr im Kubernetes Ingress GitHub-Repository.

Name BESCHREIBUNG Erforderlich Standard Verfügbarkeit
k8s.ingress.enabled Aktivieren Sie die Kubernetes Ingress-Integration. Nein false v2.0+
k8s.ingress.namespace Kubernetes-Namespace zum Überwachen von Kubernetes Ingress-Ressourcen. Nein default v2.0+
k8s.ingress.dns.suffix DNS-Suffix zum Erstellen des DNS-Hostnamens für Dienste zum Senden von Anforderungen an. Nein svc.cluster.local v2.4+
k8s.ingress.config.path Pfad zur Kubernetes-Konfiguration (Kubeconfig). Nein Nicht zutreffend v2.4+

metrics

Name BESCHREIBUNG Erforderlich Standard Verfügbarkeit
telemetry.metrics.local Aktivieren Sie die Erfassung lokaler Metriken über StatsD. Der Wert ist eine der folgenden Optionen: none, statsd. Nein none v2.0+
telemetry.metrics.local.statsd.endpoint StatsD-Endpunkt. Ja, wenn telemetry.metrics.local auf statsd festgelegt ist; andernfalls nein. Nicht zutreffend v2.0+
telemetry.metrics.local.statsd.sampling Abtastrate der StatsD-Metriken. Der Wert muss zwischen 0 und 1 liegen, z. B. 0,5. Nein Nicht zutreffend v2.0+
telemetry.metrics.local.statsd.tag-format Taggingformat der Exportfunktion von StatsD. Der Wert ist eine der folgenden Optionen: librato, dogStatsD, influxDB. Nein Nicht zutreffend v2.0+
telemetry.metrics.cloud Hinweis darauf, ob das Emittieren von Metriken an Azure Monitor aktiviert werden soll. Nein true v2.0+
observability.opentelemetry.enabled Hinweis darauf, ob das Aussenden von Metriken an einen OpenTelemetrie-Sammler auf Kubernetes aktiviert werden soll. Nein false v2.0+
observability.opentelemetry.collector.uri URI des OpenTelemetry-Collectors, an den Metriken gesendet werden sollen. Ja, wenn observability.opentelemetry.enabled auf true festgelegt ist; andernfalls nein. Nicht zutreffend v2.0+
observability.opentelemetry.system-metrics.enabled Aktivieren Sie das Senden von Systemmetriken wie CPU, Speicher und Garbage Collection an den OpenTelemetrie-Sammler. Nein false v2.3+
observability.opentelemetry.histgram.buckets Histogramm-Eimer, in denen OpenTelemetrie-Metriken gemeldet werden. Format: "x,y,z,...". Nein "5,10,25,50,100,250,500,1000,2500,5000,10000" v2.0+

Protokolle

Name BESCHREIBUNG Erforderlich Standard Verfügbarkeit
telemetry.logs.std Aktivieren Sie die Protokollierung in einem Standardstream. Der Wert ist eine der folgenden Optionen: none, text, json. Nein text v2.0+
telemetry.logs.std.level Definiert die Log-Ebene der an den Standardstrom gesendeten Logs. Wert ist eine der folgenden Optionen: all, debug, info, , warn, error, oder fatal. Nein info v2.0+
telemetry.logs.std.color Hinweis darauf, ob farbige Logs im Standardstrom verwendet werden sollen oder nicht. Nein true v2.0+
telemetry.logs.local Aktivieren Sie die lokale Protokollierung. Der Wert ist eine der folgenden Optionen: none, auto, localsyslog, rfc5424, journal, json. Nein auto v2.0+
telemetry.logs.local.localsyslog.endpoint localsyslog Endpunkt. Ja, wenn telemetry.logs.local auf localsyslog festgelegt ist; andernfalls nein. Weitere Informationen zur Konfiguration finden Sie in der lokalen Syslog-Dokumentation . Nicht zutreffend v2.0+
telemetry.logs.local.localsyslog.facility Gibt den Facilitycode für localsyslog an, zum Beispiel 7. Nein Nicht zutreffend v2.0+
telemetry.logs.local.rfc5424.endpoint rfc5424-Endpunkt. Ja, wenn telemetry.logs.local auf rfc5424 festgelegt ist; andernfalls nein. Nicht zutreffend v2.0+
telemetry.logs.local.rfc5424.facility Einrichtungscode pro rfc5424, z.B. 7 Nein Nicht zutreffend v2.0+
telemetry.logs.local.journal.endpoint Journalendpunkt. Ja, wenn telemetry.logs.local auf journal festgelegt ist; andernfalls nein. Nicht zutreffend v2.0+
telemetry.logs.local.json.endpoint UDP-Endpunkt, der JSON-Daten akzeptiert, angegeben als Dateipfad, IP:Port oder Hostname:Port. Ja, wenn telemetry.logs.local auf json festgelegt ist; andernfalls nein. 127.0.0.1:8888 v2.0+

Sicherheit

Zertifikate und Chiffren

Name BESCHREIBUNG Erforderlich Standard Verfügbarkeit
certificates.local.ca.enabled Hinweis darauf, ob das selbstgehostete Gateway montierte lokale CA-Zertifikate verwenden sollte. Es ist erforderlich, das selbstgehostete Gateway als „root“ oder mit der Benutzer-ID 1001 auszuführen. Nein false v2.0+
net.server.tls.ciphers.allowed-suites Komma-getrennte Liste von Chiffren, die für die TLS-Verbindung zwischen dem API-Client und dem selbstgehosteten Gateway verwendet werden. Nein TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256,TLS_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA v2.0+
net.client.tls.ciphers.allowed-suites Durch Kommas getrennte Liste von Chiffren, die für die TLS-Verbindung zwischen dem selbstgehosteten Gateway und dem Back-End verwendet werden sollen. Nein TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256,TLS_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA v2.0+
security.certificate-revocation.validation.enabled Schaltet die Validierung der Zertifikatswiderrufsliste ein- oder aus. Nein false v2.3.6+

TLS

Name BESCHREIBUNG Erforderlich Standard Verfügbarkeit
Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Back.Protocols.Tls13 Gibt an, ob das Gateway TLS 1.3 zum Backend zulässt. Ähnlich wie beim Verwalten von Protokollchiffre in verwaltetem Gateway. Nein true v2.0+
Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Back.Protocols.Tls12 Gibt an, ob das Gateway TLS 1.2 zum Backend zulässt. Ähnlich wie beim Verwalten von Protokollchiffre in verwaltetem Gateway. Nein true v2.0+
Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Back.Protocols.Tls11 Zeigt an, ob das Gateway TLS 1.1 im Backend zulässt. Ähnlich wie beim Verwalten von Protokollchiffre in verwaltetem Gateway. Nein false v2.0+
Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Back.Protocols.Tls10 Zeigt an, ob das Gateway TLS 1.0 zum Backend zulässt. Ähnlich wie beim Verwalten von Protokollchiffre in verwaltetem Gateway. Nein false v2.0+
Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Back.Protocols.Ssl30 Gibt an, ob das Gateway SSL 3.0 im Backend zulässt. Ähnlich wie beim Verwalten von Protokollchiffre in verwaltetem Gateway. Nein false v2.0+

Sovereign Clouds

Die folgende Tabelle beschreibt die Einstellungen, die Sie konfigurieren müssen, um mit souveränen Clouds zu arbeiten:

Name Öffentlich Azurblaues China US-Regierung
config.service.auth.tokenAudience https://azure-api.net/configuration (Standard) https://azure-api.cn/configuration https://azure-api.us/configuration
logs.applicationinsights.endpoint https://dc.services.visualstudio.com/v2/track (Standard) https://dc.applicationinsights.azure.cn/v2/track https://dc.applicationinsights.us/v2/track

So konfigurieren Sie Einstellungen

Kubernetes-YAML-Datei

Beim Bereitstellen des selbstgehosteten Gateways in Kubernetes mit einer YAML-Datei konfigurieren Sie die Einstellungen als Name-Wert-Paare im data Element des Gateway-ConfigMap. Beispiel:

apiVersion: v1
    kind: ConfigMap
    metadata:
        name: contoso-gateway-environment
    data:
        config.service.endpoint: "contoso.configuration.azure-api.net"
        telemetry.logs.std: "text"
        telemetry.logs.local.localsyslog.endpoint: "/dev/log"
        telemetry.logs.local.localsyslog.facility: "7"

[...]

Helm-Chart

Wenn du Helm verwendest, um das selbstgehostete Gateway zu Kubernetes bereitzustellen, gib die Chart-Konfigurationseinstellungen als Parameter an den helm install Befehl weiter. Beispiel:

helm install azure-api-management-gateway \
    --set gateway.configuration.uri='contoso.configuration.azure-api.net' \
    --set gateway.auth.key='GatewayKey contosogw&xxxxxxxxxxxxxx...' \
    --set secret.createSecret=false \
    --set secret.existingSecretName='mysecret' \
    azure-apim-gateway/azure-api-management-gateway