IBM Cloud Docs
Utilización de la API de Kafka

Utilización de la API de Kafka

Kafka proporciona un conjunto enriquecido de API y clientes en una gran variedad de lenguajes. Las API incluyen la API principal, la API de Streams y la API de Connect.

  • Kafka (API para consumidores, productores y administradores)
    Se utiliza para enviar y recibir mensajes directamente desde uno de los temas de Kafka, o varios temas. El cliente de administración de Kafka proporciona una interfaz sencilla a través de la API de Kafka para gestionar los recursos de Kafka. Puede crear, suprimir y gestionar temas. También puede utilizar el cliente de administración para gestionar grupos de clientes y configuraciones.
  • API de flujos
    Una API de procesamiento de flujos de alto nivel para consumir, transformar y producir fácilmente eventos entre temas.
  • Conectar API
    Un marco que permite integraciones reutilizables o estándar para transmitir eventos hacia y desde sistemas externos, como bases de datos.

En la tabla siguiente se resume lo que puede utilizar con Event Streams:

Kafka asistencia al cliente en los planes Standard, Enterprise y Lite.
Plan de empresa Plan Estándar Plan Lite
Versión de Kafka en el clúster Kafka 3.6 Kafka 3.6 Kafka 3.6
Versión de cliente de Kafka mínima recomendada Kafka 2.6.0 o más tarde Kafka 2.6.0 o más tarde Kafka 2.6.0 o más tarde
Versiones de cliente admitidas Consulte Resumen de soporte para todos los clientes recomendados
Soporte a Kafka Connect No
Soporte a Kafka Streams No
Soporte a ksqlDB No No
Requisitos de autenticación El cliente debe soportar la autenticación mediante el mecanismo SASL Plain y utilizar la extensión Server Name Indication (SNI) del protocolo TLSv1.2. El cliente debe soportar la autenticación mediante el mecanismo SASL Plain y utilizar la extensión Server Name Indication (SNI) del protocolo TLSv1.2. El cliente debe soportar la autenticación mediante el mecanismo SASL Plain y utilizar la extensión Server Name Indication (SNI) del protocolo TLSv1.2.

Elección de un cliente Kafka para utilizarlo con Event Streams

El cliente oficial de la API de Kafka está escrito en Java y, como tal, contiene las funciones y correcciones de errores más recientes. Para más información sobre esta API, consulte Kafka Producer API 3.6 y Kafka Consumer API 3.6.

Para otros idiomas, ejecute uno de los clientes siguientes, todos los cuales se prueban con Event Streams.

Soporte al resumen de todos los clientes recomendados

Resumen de asistencia al cliente
Cliente Idioma Versión recomendada Versión mínima soportada [1] Enlace al ejemplo
Cliente Apache Kafka oficial:
Cliente Apache Kafka Java 3.6.2o posterior 2.5.0 Ejemplo de consola Java

Ejemplo de Liberty

Clientes de terceros:
confluent-kafka-javascript Node.js Más reciente 1.0.0
confluent-kafka-python Python Más reciente 1.4.0 Ejemplo de Kafka Python
confluent-kafka-go Go Más reciente 1.4.0
librdkafka C o C++ Más reciente 1.4.0
node-rdkafka Node.js Más reciente 2.8.0 Ejemplo deNode.js
sarama Go Más reciente 1.40.0 Ejemplos de Sarama

Conexión de su cliente a Event Streams

Para obtener información sobre cómo configurar el cliente Java para que se conecte a Event Streams, consulte Configuración de su cliente.

Configuración del cliente de API Kafka

Para establecer una conexión, los clientes deben estar configurados para utilizar SASL PLAIN o SASL OAUTHBEARER sobre TLSv1.2 como mínimo y para requerir un nombre de usuario, y una lista de los servidores de arranque. TLSv1.2 garantiza el cifrado de las conexiones y valida la autenticidad de los intermediarios (para evitar los ataques "man-in-the-middle"). SASL aplica la autenticación en todas las conexiones.

Para recuperar el nombre de usuario, la contraseña y la lista de servidores de arranque, se necesita un objeto de credenciales de servicio o una clave de servicio para la instancia de servicio. Para obtener más información sobre la creación de estos objetos, consulte Conexión a Event Streams.

Utilización de SASL PLAIN

Utilice las siguientes series y propiedades.

  • Utilice la serie bootstrap_endpoints como lista de servidores de rutina de carga y pase esta serie de pares de host y puerto al cliente Kafka.
  • Utilice las propiedades user y api_key como nombre de usuario y contraseña.

Para un cliente Java, el siguiente ejemplo muestra el conjunto mínimo de propiedades, donde ${USERNAME}, ${PASSWORD}, y ${BOOTSTRAP_ENDPOINTS} deben sustituirse por los valores que recuperó anteriormente.

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

Si utiliza un cliente Kafka anterior a la versión 0.10.2.1, no se admite la propiedad sasl.jaas.config y, en su lugar, debe proporcionar la configuración del cliente en un archivo de configuración JAAS.

Utilización de SASL OAUTHBEARER

Antes de configurar el mecanismo SASL para el cliente Java, hay dos requisitos previos.

  • La versión mínima soportada del cliente Kafka Java es 3.1.0.
  • El paquete jar adicional debe descargarse de Maven Central y estar disponible en la vía de acceso de clases.

Si Maven se utiliza en el sistema de compilación, añada la siguiente información al archivo pom.xml en la sección de dependencias.

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

Si se utiliza Gradle en el sistema de compilación, añada la siguiente información al archivo build.gradle en la sección de dependencias.

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

IBM Cloud® Identity and Access Management El Servicio de Identidad soporta múltiples formas de generar token de portador, dos de las cuales son soportadas por esta librería cliente oauth.

  • Clave API.
  • Perfil de confianza y token de recurso informático.

Uso de SASL OAUTHBEARER con clave API

Utilice las siguientes series y propiedades.

  • Utilice la serie BOOTSTRAP_ENDPOINTS como lista de servidores de rutina de carga y pase esta serie de pares de host y puerto al cliente Kafka.
  • El IAMOAuthBearerLoginCallbackHandler lo proporciona el paquete jar com.ibm.cloud.eventstreams:oauth-client:+.
  • El punto final de señal de IBM Cloud® Identity and Access Management https://iam.cloud.ibm.com/identity/token está configurado para generar señal a partir de la clave de API utilizando el tipo de otorgamiento especificado en jaas config. Se realiza en el lado del cliente, por lo que la clave de API nunca se envía al lado del servidor y proporciona una mejor seguridad que una clave de API de larga duración.
  • El punto final de clave de Cloud Identity and Access Management https://iam.cloud.ibm.com/identity/keys está configurado para validar la señal.
  • grant_type en sasl.jaas.config es urn:ibm:params:oauth:grant-type:apikey
  • apikey en sasl.jaas.config es la clave API utilizada para generar el token de portador en el lado del cliente. Puede ser de un Id de usuario o de servicio.

Para un cliente Java, el siguiente ejemplo muestra el conjunto mínimo de propiedades, donde ${BOOTSTRAP_ENDPOINTS}, y ${APIKEY} deben sustituirse por los valores que recuperó anteriormente.

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}";

Uso de SASL OAUTHBEARER con perfil de confianza y token de recurso informático

Todas las propiedades son las mismas con la clave API, excepto sasl.jaas.config que es diferente.

  • grant_type en sasl.jaas.config es urn:ibm:params:oauth:grant-type:cr-token.
  • profile_id en sasl.jaas.config es una ubicación de archivo que almacena el ID del perfil de confianza. Este archivo puede montarse en un pod Kubernetes que ejecute código de cliente Kafka como volumen de sólo lectura y ponerse a disposición del código de cliente Kafka.
  • cr_token en sasl.jaas.config es una ubicación de archivo que almacena el token de cuenta de servicio de un pod Kubernetes que ejecuta código de cliente Kafka. Consulte Qué es un token de cuenta de servicio.

Véase el siguiente ejemplo

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}";

Más información sobre Cómo configurar un perfil de confianza

El código fuente del cliente oauth se encuentra en Event Streams Java SDK.

El ejemplo de código cliente se encuentra en Event Streams Sample.

Para otras libarias de cliente Kafka, consulte su documentación sobre cómo implementar el soporte de OAUTHBEARER. Por ejemplo:.

  • sarama: es necesaria una implementación de la interfaz AccessTokenProvider.
  • librdkafka: es necesaria una implementación de la devolución de llamada oauthbearer_token_refresh_cb.

Para obtener información sobre cómo generar una señal de IAM de IBM Cloud utilizando una clave de API, consulte el documento de IBM Cloud® Identity and Access Management.


  1. La primera versión validada en pruebas continuas. Normalmente, se trata de la versión inicial disponible en los últimos 12 meses, o más reciente si se sabe que existen problemas importantes. Si no puede ejecutar ninguno de los clientes de la lista, puede utilizar otros clientes de terceros que cumplan los siguientes requisitos mínimos (por ejemplo, librdkafka ). 1. Da soporte a Kafka 1.40o posterior. 2. Puede conectarse y autenticarse utilizando SASL PLAIN con TLSv1.2. 3. Admite las extensiones SNI para TLS en las que el nombre de host del servidor se incluye en el protocolo TLS. 4. Da soporte a la criptografía de curva elíptica. En todos los casos, utilice la versión más reciente del cliente. ↩︎