Saltar al contenido

¿Cómo soluciono los problemas de autenticación y permisos cuando uso mi clúster de Amazon MSK con la autenticación SASL/SCRAM activada?

3 minutos de lectura
0

Tengo problemas de autenticación y permisos cuando uso mi clúster de Amazon Managed Streaming para Apache Kafka (Amazon MSK) que tiene activada la autenticación SASL/SCRAM.

Resolución

Error «ClusterAuthorizationException» en los registros del agente

Cuando accedas a tu clúster de Amazon MSK, es posible que recibas el siguiente mensaje de error: «org.apache.kafka.common.errors.ClusterAuthorizationException: Request Request(processor=11, connectionId=INTERNAL_IP-INTERNAL_IP-0, session=Session(User:ANONYMOUS,/INTERNAL_IP), listenerName=ListenerName(REPLICATION_SECURE), securityProtocol=SSL, buffer=null) is not authorized.»

Aparece el error anterior cuando se cumplen las dos condiciones siguientes:

  • Tu clúster de Amazon MSK tiene activada la autenticación SASL/SCRAM.
  • Establece resourceType en CLUSTER y operation en CLUSTER_ACTION en las listas de control de acceso (ACL) de tu clúster.

El clúster de Amazon MSK no admite la configuración anterior porque la configuración impide la replicación interna de Apache Kafka. Cuando se cumplen las dos condiciones anteriores, la identidad de los agentes es ANÓNIMA para la comunicación entre agentes. Si necesitas que tu clúster admita estas ACL cuando utilizas la autenticación SASL/SCRAM, debes conceder los permisos para TODAS las operaciones al usuario ANÓNIMO. Esto evita la restricción de la replicación entre los agentes.

Ejecuta el siguiente comando para conceder este permiso al usuario ANÓNIMO:

./kafka-acls.sh --authorizer-properties
zookeeper.connect=example-ZookeeperConnectString --add --allow-principal
User:ANONYMOUS --operation ALL --cluster

Error de autenticación SASL

Si has cambiado el nombre de usuario o la contraseña de tu secreto de AWS Secrets Manager, pero las credenciales antiguas siguen activas, recibirás un error de autenticación.

Un secreto de AWS Secrets Manager solo se puede asociar a un usuario. Cuando el usuario ya no necesite acceder al clúster, debes disociar el secreto y actualizar la ACL.

Al actualizar el nombre de usuario del secreto, AWS Secrets Manager no disocia automáticamente el nombre de usuario anterior. Se recomienda crear un nuevo secreto para el nuevo usuario. Si necesitas usar el secreto anterior, primero disocia el secreto y, a continuación, actualiza las credenciales antes de volver a asociarlo. Para obtener más información, consulta Uso de los usuarios.

Los usuarios que no son administradores pueden crear y modificar las ACL sin autorización

De forma predeterminada, todos los usuarios tienen permiso para crear o modificar las ACL. Para evitar que los usuarios que no son administradores modifiquen la ACL a través de Apache ZooKeeper, coloca los nodos de ZooKeeper en un grupo de seguridad independiente. Además, asegúrate de que todos los comandos y conexiones de cliente de Apache Kafka se ejecuten a través de agentes de arranque en lugar de Apache ZooKeeper.

Nota: Puedes usar la cadena de arranque para realizar todas las operaciones de Apache Kafka.

Información relacionada

ACL de Apache Kafka

Secretos de Scram

OFICIAL DE AWSActualizada hace 9 meses