Ir para o conteúdo

Como resolvo o erro “invalid username-password pair or user is disabled” quando me conecto ao meu cluster do ElastiCache com autenticação IAM?

7 minuto de leitura
0

Quando uso a autenticação do AWS Identity and Access Management (AWS IAM) para me conectar ao meu cluster Amazon ElastiCache Valkey e Redis OSS, recebo o erro “AuthenticationError: invalid username-password pair or user is disabled”.

Resolução

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

Crie usuários

Conclua as etapas a seguir:

  1. Abra o console do ElastiCache.
  2. Em Configurações, escolha Gerenciamento de usuários.
  3. Escolha Criar usuário e insira as seguintes informações:
    Em ID de usuário, insira uma ID de usuário.
    Em Nome de usuário, insira um nome de usuário.
    Observação: para usuários do IAM, o ID do usuário e o nome de usuário devem ser idênticos e em letras minúsculas.
    Selecione seu mecanismo na lista suspensa.
    Para o modo de autenticação, selecione Autenticação IAM.
    No campo String de acesso, insira on ~* +@all.
    Observação: para dar a um usuário ativo acesso a todas as teclas e comandos disponíveis, use a string de acesso on ~*+@all. É uma prática recomendada criar string de acesso restritivas que forneçam somente as permissões de que seus usuários precisam. Para mais informações, consulte Especificando permissões usando uma string de acesso.
  4. Escolha Criar.

Crie grupos de usuários

Conclua as etapas a seguir:

  1. Abra o console do ElastiCache.
  2. Em Configurações, escolha Gerenciamento de grupos de usuários.
  3. Escolha Criar grupo de usuários.
  4. Em ID do grupo de usuários, insira a ID do grupo de usuários.
  5. Selecione seu mecanismo na lista suspensa.
  6. Na seção Usuários selecionados, escolha Gerenciar.
  7. Na lista de usuários, selecione o usuário que você criou anteriormente.
    Importante: se você escolher Redis para Engine, selecione o usuário chamado Padrão. O ElastiCache cria automaticamente um usuário padrão com permissões completas de acesso ao Redis que não exige uma senha para autenticação. Para modificar as configurações padrão do usuário, consulte Criação de usuários e grupos de usuários com o console e a CLI.
  8. Escolha Criar.

Permitir autenticação IAM

Ative a criptografia em trânsito (TLS) em seu cluster do ElastiCache.

Configure o controle de acesso baseado em perfis para seu cluster

Conclua as etapas a seguir:

  1. Abra o console do ElastiCache.
  2. Na lista de clusters, selecione seu cluster.
  3. Escolha Ações e, em seguida, Modificar.
  4. Em Controle de acesso, escolha Lista de controle de acesso do grupo de usuários e selecione seu grupo de usuários.
  5. Escolha Visualizar alterações.
  6. Escolha Salvar.

Configure sua política do IAM

Adicione a ação elasticache:Connect à identidade IAM que você usa para se conectar ao cluster do ElastiCache. Exemplo de política do IAM:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticache:Connect"
      ],
      "Resource": [
        "AWS_RESOURCE_ARN_1",
        "AWS_RESOURCE_ARN_2"
      ]
    }
  ]
}

Observação: substitua AWS_RESOURCE_ARN_1 pelo nome do recurso da Amazon (ARN) do seu cluster ElastiCache Valkey ou Redis OSS e substitua AWS_RESOURCE_ARN_2 pelo ARN do seu usuário do IAM para o ElastiCache.

Em seguida, anexe o perfil do IAM à instância do Amazon Elastic Compute Cloud (Amazon EC2) ou à função do AWS Lambda que se conecta ao cluster do ElastiCache. Para obter mais informações, consulte Autenticação com o IAM.

Observação: se sua política do IAM estiver correta, mas você ainda receber o AuthenticationError, verifique se há restrições nos outros tipos de política em sua organização. Para obter mais informações, consulte Outros tipos de políticas em Gerenciando o acesso usando políticas.

Verifique a conectividade de rede

Verifique a conectividade de rede entre seu cluster do ElastiCache e o recurso do cliente.

Gere um token de autenticação

Se você usar uma autenticação IAM para se conectar aos seus clusters do ElastiCache, use um token de autenticação em vez de uma senha. O token de autenticação do IAM é válido por 15 minutos.

Para conexões de longa duração, é uma prática recomendada usar um cliente Valkey ou Redis OSS que ofereça suporte a uma interface de provedor de credenciais. Para estender uma conexão em 12 horas, envie um AUTH ou HELLO com um novo token.

Para gerar um token de autenticação do IAM e conectar-se ao seu cluster do ElastiCache, conclua as seguintes etapas:

  1. Configure a instância do Amazon EC2 para executar a aplicação de demonstração. Para obter instruções, consulte a aplicação de demonstração de autenticação IAM do ElastiCache no site do GitHub.

  2. Para gerar o token ao usar a aplicação de demonstração, execute o seguinte comando Java CLI:

    java -cp target/ElastiCacheIAMAuthDemoApp-1.0-SNAPSHOT.jar \
    com.amazon.elasticache.IAMAuthTokenGeneratorApp --region REGION --replication-group-id REPLICATION-GROUP-ID --user-id USER-ID

    Observação: substitua REGION pela sua região da AWS, REPLICATION-GROUP-ID pelo ID do grupo de replicação do ElastiCache e USER-ID pelo ID de usuário do IAM para o ElastiCache.

  3. Use o token como senha para se conectar ao cluster do ElastiCache. É possível usar a CLI do Valkey ou do Redis ou suas bibliotecas de API do cliente para se conectar ao seu cluster do ElastiCache.
    Exemplo de comando Valkey CLI:

    valkey-cli -h PRIMARY-ENDPOINT -p 6379 --tls -c --user USER ID -a TEMPORARY-SECURITY-CREDENTIAL

    Exemplo de comando do Redis CLI:

    redis6-cli -h PRIMARY-ENDPOINT -p 6379 --tls -c --user USER-ID -a TEMPORARY-SECURITY-CREDENTIAL

    Observação: substitua PRIMARY-ENDPOINT pelo endpoint primário do seu cluster do ElastiCache, USER-ID pelo seu ID de usuário do IAM e TEMPORARY-SECURITY-CREDENTIAL pelo seu token de autenticação IAM.

    Importante: ao usar os comandos valkey-cli ou redis-cli, você deve incluir os argumentos --tls e -a. Se você não fornecer esses argumentos ou inserir credenciais incorretas, receberá uma mensagem de erro de falha NOAUTH ou AUTH. Se você usar os comandos valkey-cli ou redis-cli somente com o argumento --tls argument, use AUTH user-id temporary-security-credential depois de se conectar para concluir a autenticação.

    Exemplo de cliente Lettuce Redis OSS:

    RedisURI redisURI = RedisURI.builder()
                .withHost(CACHE-NAME)
                .withPort(6379)
                .withSsl(true)
                .withAuthentication(USER-ID, TEMPORARY-SECURITY-CREDENTIAL)
                .build();
    return RedisClient.create(redisURI);

Revise os componentes na configuração do seu cliente Redis OSS ou Valkey

Verifique as seguintes configurações em seu cliente Redis OSS ou Valkey:

  • Seu cliente Valkey ou Redis OSS tem o endpoint e a porta corretos do cluster do ElastiCache.
  • Seu cliente Valkey ou Redis OSS tem suporte SSL/TLS.
  • Seu nome de usuário é um usuário do IAM ativado para o ElastiCache.
  • Você tem a versão mais recente do cliente Valkey ou Redis OSS que corresponde à configuração, ao tipo de mecanismo e aos parâmetros de versão do seu cluster do ElastiCache. Versões desatualizadas ou incompatíveis do cliente causam erros de autenticação.
  • Você configurou os parâmetros de tempo limite do cliente para atender às suas necessidades. Configurações incorretas de tempo limite podem encerrar prematuramente as conexões e causar erros de autenticação.

Verifique as métricas do Amazon CloudWatch

Use as métricas do Amazon CloudWatch para monitorar a integridade e a atividade do seu cluster do ElastiCache. Para identificar problemas de autenticação, é uma prática recomendada monitorar as seguintes métricas:

  • Verifique suas métricas de conexões, como CurrConnections e NewConnections. Uma diminuição nas novas conexões significa que os erros de autenticação causaram a falha na tentativa de conexão. O ElastiCache usa de 2 a 6 conexões para monitorar o cluster em cada caso. Para obter mais informações, consulte Métricas para Valkey e Redis OSS.
  • Verifique IamAuthenticationExpirations para monitorar os tokens de autenticação IAM expirados que podem resultar em uma falha na conexão.
  • Analise IamAuthenticationThrottling para ver o número de tentativas de autenticação com credenciais do IAM que o ElastiCache limitou.

Informações relacionadas

Simplifique o gerenciamento do acesso aos clusters do Amazon ElastiCache para Redis com o IAM

Aplicação de demonstração da autenticação IAM do ElastiCache no site do GitHub

Como se conectar ao Redis com o provedor de credenciais IAM do ElastiCache no site da Redisson

AWS OFICIALAtualizada há 6 meses