¿Cómo soluciono problemas comunes cuando utilizo mi clúster de Amazon MSK con autenticación SASL/SCRAM?

3 minutos de lectura
0

Tengo problemas con mi clúster de Amazon Managed Streaming for Apache Kafka (Amazon MSK) con la autenticación SASL/SCRAM habilitada.

Resolución

El error ClusterAuthorizationException aparece en los registros de los agentes

Es posible que vea el siguiente mensaje de error cuando acceda a su clúster de Amazon MSK:

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.

Este error aparece cuando se cumplen las siguientes condiciones:

  • Su clúster de Amazon MSK tiene habilitada la autenticación de capa de seguridad y autenticación simple (SASL)/mecanismo de autenticación de respuesta de desafío salado (SCRAM).
  • Ha establecido resourceType=CLUSTER y operation=CLUSTER_ACTION en las listas de control de acceso (ACL) de su clúster.

El clúster de Amazon MSK no admite esta configuración porque esta impide la replicación interna de Apache Kafka. Con esta configuración, la identidad de los agentes aparece como “ANONYMOUS” (Anónimo) para la comunicación entre agentes. Si necesita que su clúster admita estas ACL mientras utiliza la autenticación SASL/SCRAM, debe conceder los permisos para “ALL” (Todas) las operaciones al usuario “ANONYMOUS” (Anónimo). Esto evita la restricción de la replicación entre los agentes. Utilice el siguiente comando para otorgar este permiso al usuario “ANONYMOUS” (Anónimo):

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

Cambió el nombre de usuario o la contraseña de su secreto de AWS Secrets Manager, pero las credenciales anteriores continúan activas

Un secreto de AWS Secrets Manager debe asociarse a un solo usuario. Si el usuario ya no necesita acceder al clúster, el secreto debe disociarse y las ACL deben actualizarse. Al actualizar el nombre de usuario en el secreto, el nombre de usuario anterior no se disocia automáticamente. Por lo tanto, es una práctica recomendada crear un nuevo secreto para el nuevo usuario. Si necesita utilizar el secreto anterior, primero disocie el secreto y, a continuación, actualice las credenciales antes de volver a asociar el secreto. Para obtener más información, consulte Trabajo con usuarios.

Los usuarios que no son administradores pueden crear nuevas ACL y modificar las ACL existentes

De forma predeterminada, cualquier usuario puede crear o modificar las ACL. Para evitar que los usuarios que no son administradores creen o actualicen ACL con Apache ZooKeeper, asegúrese de restringir el acceso a Apache ZooKeeper mediante la colocación de los nodos de ZooKeeper en un grupo de seguridad separado. Además, asegúrese de que todos los comandos y conexiones de clientes de Apache Kafka se ejecuten a través de agentes de arranque en lugar de Apache ZooKeeper. Tenga en cuenta que todas las operaciones de Apache Kafka se pueden realizar con la cadena de arranque.


Información relacionada

ACL de Apache Kafka

Secretos de scram

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años