IBM Cloud Docs
Kafka-API verwenden

Kafka-API verwenden

Mit Kafka steht eine umfassende Palette von APIs und Clients für eine Vielzahl verschiedener Sprachen zur Verfügung. APIs umfassen die Kern-API, die Streams-API und die Connect-API.

  • Kafka kern-API (Consumer-, Producer- und Admin-API)
    Zum Senden und Empfangen von Nachrichten direkt von einem oder mehreren Kafka-Topics. Der Kafka-Admin-Client stellt über die Kafka-API eine einfache Schnittstelle zur Verwaltung von Kafka-Ressourcen bereit. Sie können Themen erstellen, löschen und verwalten. Darüber hinaus kann der Admin-Client zum Verwalten von Consumergruppen und Konfigurationen verwendet werden.
  • Streams-API
    Eine API für die Stream-Verarbeitung auf höherer Ebene zum einfachen Konsumieren, Umwandeln und Erzeugen von Ereignissen zwischen Themen.
  • API verbinden
    Ein Framework, das wiederverwendbare oder Standardintegrationen ermöglicht, um Ereignisse in und aus externen Systemen, wie z. B. Datenbanken, zu streamen.

Die folgende Tabelle enthält eine Zusammenfassung der Verwendungsmöglichkeiten mit Event Streams:

Kafka client-Unterstützung in den Tarifen Standard, Enterprise und Lite.
Enterprise-Plan Standard-Plan Lite-Plan
Kafka-Version in Cluster Kafka 3.8 Kafka 3.8 Kafka 3.8
Empfohlene Mindestversion des Kafka-Clients Kafka 2.6.0, oder später Kafka 2.6.0, oder später Kafka 2.6.0, oder später
Unterstützte Clientversionen Siehe Support-Zusammenfassung für alle empfohlenen Clients.
Kafka Connect unterstützt Ja Ja Nein
Kafka Streams unterstützt Ja Ja Nein
ksqlDB unterstützt Ja Nein Nein
Authentifizierungsanforderungen Der Client muss die Authentifizierung mit dem SASL-Plain-Mechanismus unterstützen und die SNI-Erweiterung (Server Name Indication) des TLSv1.2-Protokolls verwenden. Der Client muss die Authentifizierung mit dem SASL-Plain-Mechanismus unterstützen und die SNI-Erweiterung (Server Name Indication) des TLSv1.2-Protokolls verwenden. Der Client muss die Authentifizierung mit dem SASL-Plain-Mechanismus unterstützen und die SNI-Erweiterung (Server Name Indication) des TLSv1.2-Protokolls verwenden.

Kafka-Client zur Verwendung mit Event Streams auswählen

Der offizielle Client für die Kafka-API ist in Java geschrieben und enthält die neuesten Features und Fehlerkorrekturen. Weitere Informationen zu dieser API finden Sie unter Kafka Producer API 3.8 und Kafka Consumer API 3.8.

Führen Sie für andere Sprachen einen der folgenden Clients aus, die alle mit Event Streamsgetestet wurden:

Zusammenfassung der Unterstützung für alle empfohlenen Clients

Zusammenfassung der Kundenbetreuung
Kunde Sprache Empfohlene Version Unterstützte Mindestversion [1] Link zum Beispiel
Offizieller Apache Kafka -Client:
Apache Kafka-Client Java 3.8.1, oder später 2.5.0 Beispiel für Java-Konsole

Liberty-Beispiel

Clients anderer Anbieter:
konfluent-kafka-javascript Node.js Neueste 1.0.0
confluent-kafka-python Python Neueste 1.4.0 Kafka Python-Beispiel
confluent-kafka-go Los Neueste 1.4.0
librdkafka C oder C++ Neueste 1.4.0
node-rdkafka Node.js Neueste 2.8.0 Node.js-Beispiel
SaramaCity in Japan Los Neueste 1.40.0 Sarama-Beispiele

Clients mit Event Streams verbinden

Informationen zur Konfiguration des Java-Clients für die Verbindung mit Event Streams finden Sie in Client konfigurieren.

Kafka-API-Client konfigurieren

Um eine Verbindung herzustellen, müssen die Clients so konfiguriert sein, dass sie mindestens SASL PLAIN oder SASL OAUTHBEARER über TLSv1.2 verwenden und einen Benutzernamen sowie eine Liste der Bootstrap-Server benötigen. TLSv1.2 stellt sicher, dass die Verbindungen verschlüsselt werden, und überprüft die Authentizität der Makler (um Man-in-the-Middle-Angriffe zu verhindern). SASL erzwingt die Authentifizierung für alle Verbindungen.

Um den Benutzernamen, das Kennwort und die Liste der Bootstrap-Server abzurufen, ist ein Dienstanmeldungsobjekt oder ein Dienstschlüssel für die Dienstinstanz erforderlich. Weitere Informationen zum Erstellen dieser Objekte finden Sie unter Verbindung zu Event Streams herstellen.

SASL PLAIN verwenden

Verwenden Sie die folgenden Zeichenfolgen und Eigenschaften:

  • Verwenden Sie die Zeichenfolge bootstrap_endpoints als Liste der Bootstrap-Server und übergeben Sie diese Zeichenfolge mit Host/Port-Paaren an Ihren Client Kafka.
  • Verwenden Sie die Eigenschaften user und api_key als Benutzernamen und Kennwort.

Für einen Java-Client zeigt das folgende Beispiel den minimalen Satz von Eigenschaften, wobei ${USERNAME}, ${PASSWORD} und ${BOOTSTRAP_ENDPOINTS} durch die zuvor abgerufenen Werte zu ersetzen sind.

bootstrap.servers=${BOOTSTRAP_ENDPOINTS}
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="${USERNAME}" password="${PASSWORD}";
security.protocol=SASL_SSL
ssl.protocol=TLSv1.2
ssl.enabled.protocols=TLSv1.2
ssl.endpoint.identification.algorithm=HTTPS

Wenn Sie einen Kafka-Client vor der Version 0.10.2.1 verwenden, wird die Eigenschaft sasl.jaas.config nicht unterstützt, und Sie müssen stattdessen die Client-Konfiguration in einer JAAS-Konfigurationsdatei angeben.

SASL OAUTHBEARER verwenden

Vor der Konfiguration des SASL-Mechanismus für den Java-Client gibt es zwei Voraussetzungen.

  • Die Mindestversion des unterstützten Kafka Java-Clients ist 3.1.0.
  • Zusätzliche JAR-Pakete müssen von Maven Central heruntergeladen und im Klassenpfad verfügbar gemacht werden.

Wenn Maven im Buildsystem verwendet wird, fügen Sie die folgenden Informationen zur Datei pom.xml im Abschnitt "dependencies" hinzu:

<dependency>
    <groupId>com.ibm.cloud.eventstreams</groupId>
    <artifactId>oauth-client</artifactId>
    <version>1.4.0</version>
</dependency>

Wenn Gradle im Buildsystem verwendet wird, fügen Sie die folgenden Informationen zur Datei build.gradle im Abschnitt für Abhängigkeiten hinzu.

implementation com.ibm.cloud.eventstreams:oauth-client:1.4.0

IBM Cloud® Identity and Access Management Der Identity Service unterstützt mehrere Möglichkeiten zur Generierung von Überbringer-Token, von denen zwei von dieser Oauth-Client-Bibliothek unterstützt werden.

  • API-Schlüssel.
  • Vertrauenswürdiges Profil und Token für Rechenressourcen.

Verwendung von SASL OAUTHBEARER mit API-Schlüssel

Verwenden Sie die folgenden Zeichenfolgen und Eigenschaften:

  • Verwenden Sie die Zeichenfolge BOOTSTRAP_ENDPOINTS als Liste der Bootstrap-Server und übergeben Sie diese Zeichenfolge mit Host/Port-Paaren an Ihren Client Kafka.
  • IAMOAuthBearerLoginCallbackHandler wird vom JAR-Paket com.ibm.cloud.eventstreams:oauth-client:+ bereitgestellt.
  • Der IBM Cloud® Identity and Access Management https://iam.cloud.ibm.com/identity/token ist für die Generierung eines Tokens aus dem API-Schlüssel unter Verwendung des angegebenen Erteilungstyps in der jaas-Konfiguration konfiguriert. Dies geschieht auf der Clientseite, sodass der API-Schlüssel nie an die Serverseite gesendet wird und eine bessere Sicherheit bietet als ein langlebiger API-Schlüssel.
  • Der Cloud Identity and Access Management https://iam.cloud.ibm.com/identity/keys ist für die Validierung des Tokens konfiguriert.
  • grant_type in sasl.jaas.config ist urn:ibm:params:oauth:grant-type:apikey
  • apikey in sasl.jaas.config ist der API-Schlüssel, der zur Generierung des Überbringer-Tokens auf der Client-Seite verwendet wird. Sie kann entweder von einer Benutzer- oder einer Dienst-ID stammen.

Für einen Java-Client zeigt das folgende Beispiel den minimalen Satz von Eigenschaften, wobei ${BOOTSTRAP_ENDPOINTS} und ${APIKEY} durch die zuvor abgerufenen Werte zu ersetzen sind.

bootstrap.servers=${BOOTSTRAP_ENDPOINTS}
security.protocol=SASL_SSL
sasl.mechanism=OAUTHBEARER
sasl.oauthbearer.token.endpoint.url=https://iam.cloud.ibm.com/identity/token
sasl.oauthbearer.jwks.endpoint.url=https://iam.cloud.ibm.com/identity/keys
sasl.login.callback.handler.class=com.ibm.eventstreams.oauth.client.IAMOAuthBearerLoginCallbackHandler
sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required grant_type="urn:ibm:params:oauth:grant-type:apikey" apikey="${APIKEY}";

Verwendung von SASL OAUTHBEARER mit vertrauenswürdigem Profil und Compute Resource Token

Alle Eigenschaften sind die gleichen wie beim API-Schlüssel, nur die sasl.jaas.config ist anders.

  • grant_type in sasl.jaas.config ist urn:ibm:params:oauth:grant-type:cr-token.
  • profile_id in sasl.jaas.config ist ein Dateispeicherort, der die vertrauenswürdige Profil-ID speichert. Diese Datei kann in einen Kubernetes-Pod mit Kafka-Clientcode als schreibgeschütztes Volume eingebunden und dem Kafka-Clientcode zur Verfügung gestellt werden.
  • cr_token in sasl.jaas.config ist ein Dateispeicherort, der Dienstkontotoken von einem Kubernetes-Pod speichert, auf dem Kafka-Clientcode ausgeführt wird. Siehe Was ist ein Dienstkonto-Token.

Siehe untenstehendes Beispiel

bootstrap.servers=${BOOTSTRAP_ENDPOINTS}
security.protocol=SASL_SSL
sasl.mechanism=OAUTHBEARER
sasl.oauthbearer.token.endpoint.url=https://iam.cloud.ibm.com/identity/token
sasl.oauthbearer.jwks.endpoint.url=https://iam.cloud.ibm.com/identity/keys
sasl.login.callback.handler.class=com.ibm.eventstreams.oauth.client.IAMOAuthBearerLoginCallbackHandler
sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required grant_type="urn:ibm:params:oauth:grant-type:cr-token" profile_id="${TRUSTED_PROFILE_ID_FILE_PATH}" cr_token="${SERVICE_ACCOUNT_TOKEN_FILE_PATH}";

Weitere Einzelheiten zur Einrichtung eines vertrauenswürdigen Profils

Der Quellcode des Oauth-Clients findet sich im Event Streams Java SDK.

Den Beispiel-Clientcode finden Sie unter Event Streams Sample.

Informationen zur Implementierung der Unterstützung für OAUTHBEARER für andere Kafka-Clients finden Sie in der zugehörigen Dokumentation. Beispiel:.

  • sarama: Eine Implementierung der Schnittstelle AccessTokenProvider ist erforderlich.
  • librdkafka: Eine Implementierung des Callback oauthbearer_token_refresh_cb ist erforderlich.

Informationen zum Generieren eines IBM Cloud-IAM-Tokens unter Verwendung eines API-Schlüssels finden Sie im Dokument IBM Cloud® Identity and Access Management .


  1. Die früheste Version, die in kontinuierlichen Tests validiert wurde. In der Regel handelt es sich dabei um die erste Version, die innerhalb der letzten 12 Monate verfügbar war, oder um eine neuere Version, wenn wesentliche Probleme bekannt sind. Wenn Sie keinen der aufgeführten Clients ausführen können, können Sie andere Clients von Drittanbietern verwenden, die die folgenden Mindestanforderungen erfüllen (z. B. librdkafka ). 1. Unterstützt Kafka 1.40oder höher. 2. Kann sich über SASL PLAIN mit TLSv1.2 verbinden und authentifizieren. 3. Unterstützt die SNI-Erweiterungen für TLS, bei denen der Hostname des Servers in den TLS-Handshake einbezogen wird. 4. Unterstützt Elliptic Curve Cryptography. Verwenden Sie in allen Fällen die neueste Version des Clients. ↩︎