es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Defina Kafka ACL para limitar la creación de temas.

Actualmente estamos ejecutando una configuración de Kafka sin seguridad en AWS MSK (por lo que no tengo acceso a la mayoría de los archivos de configuración directamente y necesito utilizar kafka-cli) y estamos buscando formas de añadir protección. Configurar TLS y SASL es fácil, aunque como nuestro clúster de Kafka está detrás de una VPN y ya tiene acceso restringido, no añade más seguridad.

Queremos comenzar con la adición de seguridad más importante y, en nuestra opinión, de rápida implementación. Proteger los temas para que no puedan ser eliminados (ni creados) por todos los usuarios.
Actualmente tenemos “allow.everyone.if.no.acl.found” establecido en “true”.

Todo lo que encuentro en Google o Stack Overflow me muestra cómo limitar a los usuarios para que no puedan leer/escribir en otros temas a los que no tienen acceso. Aunque idealmente eso no es lo que queremos implementar como primer paso.

He encontrado información sobre un usuario root (es un usuario administrador, aunque en todos los tutoriales que he leído se le llama root). Sin embargo, los ejemplos que he encontrado no muestran cómo añadir una ACL a este usuario root para hacerlo el único accesible para eliminar/crear temas.

¿Podría por favor explicarme cómo crear un usuario que bloquee a todos los demás usuarios?

Por cierto, tampoco utilizamos ZooKeeper, aunque un clúster de MSK lo añade de forma predeterminada. Y esperamos poder hacer esto sin añadir ZooKeeper activamente a nuestro conjunto de herramientas. La respuesta dada aquí depende en gran medida de ZooKeeper. Además, esta respuesta señala sólo ejemplos de lectura/escritura en temas, aunque la pregunta era la misma que estoy haciendo.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Cómo crear un usuario y restringir la eliminación/creación de temas

    Para restringir la eliminación y creación de temas para todos los usuarios, excepto para uno específico, debes utilizar las ACL (Listas de Control de Acceso).

    Primero, debes crear un usuario con los permisos apropiados. Como estás utilizando una configuración de Kafka sin seguridad, puedes crear un usuario raíz con permisos completos utilizando el siguiente comando:

    bin/kafka-configs.sh --zookeeper <zookeeper-host>:<zookeeper-port> --create --entity-type users --entity-name root --alter --add-config 'SCRAM-SHA-256=[password=<root-password>]'
    

    Reemplaza <zookeeper-host> y <zookeeper-port> con la cadena de conexión de ZooKeeper de tu clúster, y <root-password> con una contraseña fuerte y segura para el usuario raíz.

    Luego, debes crear una ACL que permita solo al usuario raíz eliminar y crear temas. Para hacer esto, utiliza el siguiente comando:

    bin/kafka-acls.sh --authorizer-properties zookeeper.connect=<zookeeper-host>:<zookeeper-port> --add --allow-principal User:root --operation Delete --operation Create --topic *
    

    Este comando agrega una ACL al clúster de Kafka que solo permite al usuario raíz realizar las operaciones de Eliminar y Crear en cualquier tema (*).

    Ten en cuenta que si no estás utilizando ZooKeeper, no puedes utilizar la opción --authorizer-properties y debes utilizar otro mecanismo para habilitar las ACL, como el uso de un complemento Kafka-authorizer.

    Siguiendo estos pasos, habrás creado un usuario raíz con permisos completos y restringido la eliminación y creación de temas solo a ese usuario.

Comments are closed.