Não consigo conectar meus clientes produtores, consumidores ou conectores do Amazon Managed Streaming for Apache Kafka (Amazon MSK) a um cluster do MSK com a autenticação de cliente ativada. A tentativa de autenticação apresenta falha com erros.
Resolução
Erros de autenticação do cliente IAM
Falha na autenticação, acesso negado
Se você usar o AWS Identity and Access Management (AWS IAM) para se autenticar, pode receber uma das seguintes mensagens de erro:
- "Connection to node -1 (b-1.your-cluster.abc123.c2.kafka.us-east-1.amazonaws.com) failed authentication due to: Access denied"
- "org.apache.kafka.common.errors.SaslAuthenticationException: Access denied"
Os erros anteriores ocorrem quando políticas de acesso, limites de permissões e políticas de controle de serviços (SCPs) bloqueiam usuários que não são aprovados pela autorização necessária.
Para resolver esse problema, use o controle de acesso do IAM para garantir que o perfil do IAM possa realizar operações de cluster.
SaslAuthenticationException
Você recebe uma das seguintes mensagens de erro:
- "org.apache.kafka.common.errors.SaslAuthenticationException: Too many connects"
- "org.apache.kafka.common.errors.SaslAuthenticationException: Internal error"
Você recebe as mensagens de erro anteriores quando executa seu cluster no tipo de agente kafka.t3.small com controle de acesso do IAM e excede a cota de conexão. O tipo de instância kafka.t3.small aceita apenas uma conexão TCP por agente por segundo. Quando você excede a cota de conexão, seu teste de criação falha. Para obter mais informações, consulte Como o Amazon MSK funciona com o IAM.
Para resolver esse problema, atualize os valores de reconnect.backoff.ms e reconnect.backoff.max.ms para 1.000 ou superior em sua configuração de processamento do Amazon MSK Connect. Em seguida, faça upgrade para um tipo de instância de agente maior, como kafka.m5.large. Para obter mais informações, consulte Dimensione seu cluster adequadamente: número de partições por agente Standard.
Erros de autenticação do cliente SASL/SCRAM
Mecanismo SASL do cliente não ativado
Você recebe uma das seguintes mensagens de erro:
- "Connection to node -1 (b-1-testcluster.abc123.c7.kafka.us-east-1.amazonaws.com/3.11.111.123:9098) failed authentication due to: Client SASL mechanism 'SCRAM-SHA-512' not enabled in the server, enabled mechanisms are [AWS_MSK_IAM]"
- "Connection to node -1 (b-1-testcluster.abc123.c7.kafka.us-east-1.amazonaws.com/3.11.111.123:9096) failed authentication due to: Client SASL mechanism 'AWS_MSK_IAM' not enabled in the server, enabled mechanisms are [SCRAM-SHA-512]"
Os erros anteriores ocorrem quando o número da porta não corresponde ao mecanismo SASL/SCRAM (Authentication and Security Layer/Salted Challenge Response Authentication Mechanism) no arquivo de propriedades do cliente no comando para executar operações de cluster.
Para se comunicar com agentes em um cluster que usa autenticação SASL, use a porta 9096 para acesso de dentro da AWS e a porta 9196 para acesso público.
Para se comunicar com agentes que usam o controle de acesso do IAM, use a porta 9098 para acesso de dentro da AWS e a porta 9198 para acesso público.
Erro de autenticação de credencial SASL
Você recebe a seguinte mensagem de erro:
"Connection to node -1 (b-3.testcluster.abc123.c2.kafka.us-east-1.amazonaws.com/10.11.111.123:9096) failed authentication due to: Authentication failed during authentication due to invalid credentials with SASL mechanism SCRAM-SHA-512"
O erro anterior ocorre porque as credenciais que você usou não são válidas. Certifique-se de que você armazenou as credenciais do usuário no AWS Secrets Manager e associou essas credenciais ao cluster do Amazon MSK.
Quando você acessa o cluster pela porta 9096, o usuário e a senha no Secrets Manager devem ser iguais às propriedades do cliente.
Ao executar o comando get-secret-value para recuperar os segredos, certifique-se de que a senha usada no AWS Secrets Manager não contém nenhum caractere especial.
ClusterAuthorizationException
Você recebe a seguinte mensagem de erro:
"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"
O erro anterior ocorre quando você ativa a autenticação SASL/SCRAM para seu cluster do MSK e define resourceType como CLUSTER e operation como CLUSTER_ACTION nas listas de controle de acesso (ACLs) do seu cluster.
O cluster do MSK não é compatível com as configurações anteriores porque elas impedem a replicação interna do Apache Kafka. As identidades dos agentes aparecem como ANONYMOUS para comunicação entre agentes. Se seu cluster precisar ser compatível com as ACLs e usar a autenticação SASL/SCRAM, permita que o usuário ANONYMOUS use a operação ALL.
Em clusters ZooKeeper, execute o comando a seguir para conceder a operação ALL ao usuário ANONYMOUS:
./kafka-acls.sh --authorizer-properties zookeeper.connect=example-ZookeeperConnectString --add --allow-principal User:ANONYMOUS --operation ALL --cluster
Em clusters no modo KRaft, execute o comando a seguir para conceder a operação ALL ao usuário ANONYMOUS:
./kafka-acls.sh --bootstrap-server BootstrapBrokerString --command-config client.properties --add --allow-principal User:ANONYMOUS --operation All --cluster
Informações relacionadas
Como soluciono os erros que recebo quando tento me conectar ao meu cluster do Amazon MSK?