Simple Authentication and Security Layer (SASL) es un framework que permite a las capas de aplicación seleccionar e implementar diversos mecanismos de autenticación. Puede usar SASL para autenticar usuarios y asegurar que solo los clientes con credenciales válidas se conecten a su servicio de Kafka.
Requisitos previos
Debe crear un clúster Dataflow (que es un clúster de Kafka) con el servicio de Kafka seleccionado en la consola de EMR. Para obtener más información, consulte Create a Dataflow Kafka cluster.
Procedimiento
Paso 1: Configurar SASL
E-MapReduce utiliza el archivo de configuración server.properties y su parámetro kafka.sasl.config.type para gestionar la configuración de SASL.
De forma predeterminada, SASL está deshabilitado en los clústeres de Kafka. A continuación se muestra un ejemplo que habilita SASL mediante el mecanismo de autenticación SCRAM-SHA-512.
-
Cree un usuario.
Conéctese al nodo maestro del clúster por SSH. Para obtener más información, consulte Log on to a cluster.
-
Ejecute el siguiente comando para crear el usuario
admin.kafka-configs.sh --bootstrap-server core-1-1:9092 --alter --add-config 'SCRAM-SHA-256=[password=admin-secret],SCRAM-SHA-512=[password=admin-secret]' --entity-type users --entity-name adminNotaEn este ejemplo, la contraseña del usuario
adminesadmin-secret. Sustitúyala por su propia contraseña.
-
Acceda a la página de configuración del servicio.
Inicie sesión en la consola de E-MapReduce.
En la barra de navegación superior, seleccione una región y un resource group según sea necesario.
Haga clic en Services en la columna Actions del clúster correspondiente.
En la página Services, haga clic en Configure dentro del área del servicio de Kafka.
-
Modifique las configuraciones de autenticación SASL.
-
Agregue elementos de configuración de SASL.
En la pestaña server.properties de la página de configuración del servicio de Kafka, agregue los elementos de configuración.
Haga clic en Add Configuration Item.
-
En el cuadro de diálogo Add Configuration Item, agregue los siguientes elementos de configuración y haga clic en OK.
Parámetro
Valor
sasl.mechanism.inter.broker.protocol
SCRAM-SHA-512
sasl.enabled.mechanisms
SCRAM-SHA-512
En el cuadro de diálogo que aparece, introduzca un motivo en el campo Execution Reason y haga clic en Save.
-
Modifique la configuración del listener.
En la página Configure, haga clic en la pestaña server.properties.
Cambie el valor del parámetro kafka.sasl.config.type a CUSTOM y haga clic en Save.
En el cuadro de diálogo que aparece, introduzca un motivo en el campo Execution Reason y haga clic en Save.
-
Configure JAAS en el lado del servidor.
-
Método 1: configure JAAS en el lado del servidor mediante la adición de elementos de configuración personalizados.
En la página de configuración del servicio de Kafka, haga clic en la pestaña server.properties.
-
Haga clic en Add Configuration Item, agregue los siguientes elementos de configuración y luego haga clic en OK.
Parámetro
Valor
listener.name.sasl_plaintext.sasl.enabled.mechanisms
SCRAM-SHA-512
listener.name.sasl_plaintext.scram-sha-512.sasl.jaas.config
org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="admin-secret" ;
En el cuadro de diálogo que aparece, introduzca un motivo en el campo Execution Reason y haga clic en Save.
-
Método 2: configure JAAS mediante un archivo de configuración.
-
En la página de configuración del servicio de Kafka, modifique los siguientes elementos de configuración y haga clic en Save.
Pestaña
Parámetro
Valor
kafka_server_jaas.conf
kafka.server.jaas.content
KafkaServer { org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="admin-secret"; };server.properties
kafka_opts
-Djava.security.auth.login.config=/etc/taihao-apps/kafka-conf/kafka-conf/kafka_server_jaas.conf
En el cuadro de diálogo que aparece, introduzca un motivo en el campo Execution Reason y haga clic en Confirm.
-
-
-
Configure JAAS en el lado del cliente.
Configure JAAS en el lado del cliente mediante el parámetro
kafka.client.jaas.contentdel archivo de configuraciónkafka_client_jaas.conf. Los componentes Kafka Schema Registry y Kafka Rest Proxy utilizan esta configuración al iniciarse.-
En la página de configuración del servicio de Kafka, modifique los siguientes elementos de configuración y haga clic en Save.
Pestaña
Parámetro
Valor
kafka_client_jaas.conf
kafka.client.jaas.content
KafkaClient { org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="admin-secret"; };schema-registry.properties
schema_registry_opts
-Djava.security.auth.login.config=/etc/taihao-apps/kafka-conf/kafka-conf/kafka_client_jaas.conf
kafka-rest.properties
kafkarest_opts
-Djava.security.auth.login.config=/etc/taihao-apps/kafka-conf/kafka-conf/kafka_client_jaas.conf
En el cuadro de diálogo que aparece, introduzca un motivo en el campo Execution Reason y haga clic en Save.
-
-
-
Reinicie el servicio de Kafka.
En la página Configure del servicio de Kafka, seleccione .
En el cuadro de diálogo que aparece, introduzca el motivo de ejecución y haga clic en OK.
En el cuadro de diálogo Confirm, haga clic en OK.
Paso 2: Conectarse a Kafka con SASL
El siguiente ejemplo utiliza el mecanismo SCRAM-SHA-512 y las herramientas integradas de productor y consumidor de Kafka para demostrar la autenticación del cliente y la conexión al servicio de Kafka.
Inicie sesión en el nodo maestro del clúster mediante SSH. Para obtener más información, consulte Log on to a cluster.
-
Cree un archivo de configuración de administrador.
-
Ejecute el siguiente comando para crear el archivo de configuración sasl_admin.properties.
vim sasl_admin.properties -
Agregue el siguiente contenido al archivo.
security.protocol=SASL_PLAINTEXT sasl.mechanism=SCRAM-SHA-512 sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="admin-secret";
-
-
Ejecute el siguiente comando para crear un usuario estándar.
kafka-configs.sh --bootstrap-server core-1-1:9092 --alter --add-config 'SCRAM-SHA-256=[password=<yourUserpassword>],SCRAM-SHA-512=[password=<yourUserpassword>]' --entity-type users --entity-name <yourUsername> --command-config /root/sasl_admin.propertiesEn el comando, sustituya
<yourUsername>y<yourUserpassword>por el nombre de usuario y la contraseña del nuevo usuario. -
Cree un archivo de configuración de usuario.
-
Ejecute el siguiente comando para crear el archivo de configuración
sasl_user.properties.vim sasl_user.properties -
Agregue el siguiente contenido al archivo.
security.protocol=SASL_PLAINTEXT sasl.mechanism=SCRAM-SHA-512 sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="<yourUsername>" password="<yourUserpassword>";
-
-
Ejecute el siguiente comando para crear un topic.
kafka-topics.sh --partitions 10 --replication-factor 2 --bootstrap-server core-1-1:9092 --topic test --create --command-config /root/sasl_user.propertiesEn este ejemplo, el nombre del topic es
test. Sustitúyalo por el nombre de su topic. -
Ejecute el siguiente comando para producir datos con el archivo de configuración de SASL.
kafka-producer-perf-test.sh --topic test --num-records 123456 --throughput 10000 --record-size 1024 --producer-props bootstrap.servers=core-1-1:9092 --producer.config sasl_user.properties -
Ejecute el siguiente comando para consumir datos con el archivo de configuración de SASL.
kafka-consumer-perf-test.sh --broker-list core-1-1:9092 --messages 100000000 --topic test --consumer.config sasl_user.properties
Temas relacionados
Para cifrar la transmisión de datos entre un cliente y el servidor, consulte Use SSL to encrypt Kafka connections.