Ir para o conteúdo

Por que recebo um erro de “Access Denied” quando utilizo a autenticação do IAM ao tentar me conectar ao Amazon RDS para MySQL?

4 minuto de leitura
0

Quero me conectar ao Amazon Relational Database Service (Amazon RDS) para a instância MySQL utilizando a autenticação do AWS Identity and Access Management (AWS IAM) da AWS. No entanto, recebo um erro de “Access Denied”.

Breve descrição

Podem ocorrer mensagens de erro devido a permissões insuficientes de perfil do IAM, desativação da autenticação do IAM, configurações incorretas do usuário de banco de dados ou erro na cadeia de conexão. Poderá receber uma mensagem de erro semelhante à seguinte:

“ERROR 1045 (28000): Access denied for user 'root'@'10.0.4.253' (using password: YES)”

Utilize o runbook AWSSupport-TroubleshootRDSIAMAuthentication a fim de verificar automaticamente a configuração necessária para a autenticação do IAM com uma instância do Amazon RDS, e em seguida, utilize as resoluções para resolver esse erro.

Resolução

Permissões de perfil do IAM insuficientes

Se deseja conectar-se à instância do Amazon RDS para MySQL utilizando a autenticação de banco de dados do IAM, deve-se primeiro ter acesso à ação rds-db:connect. Para obter mais informações, consulte Criando e utilizando uma política do IAM para ter acesso ao banco de dados do IAM.

Caso utilize as políticas de controle de serviços (SCPs), certifique-se de que sua política permita conexões com a instância de banco de dados. Para obter mais informações, consulte Criando políticas organizacionais com o AWS Organizations.

Ative a autenticação do IAM

Por padrão, a autenticação do IAM está desativada para instâncias de banco de dados. Se quiser ativar a autenticação do IAM, conclua as seguintes etapas:

  1. Primeiro, abra o console do Amazon RDS.
  2. E logo após, selecione a instância.
  3. Selecione Modificar.
  4. Em Autenticação do Banco de Dados, selecione Senha.
  5. Selecione a autenticação de banco de dados do IAM.
  6. Caso queira atualizar suas configurações, selecione Continuar.
  7. A fim de modificar a instância, selecione Aplicar.

Observação: caso escolha Aplicar imediatamente ao atualizar as configurações do cluster, todas as modificações pendentes serão aplicadas imediatamente, e não durante uma janela de manutenção. Essa ação poderá causar uma interrupção prolongada em sua instância do Amazon RDS para MySQL. Para obter mais informações, consulte Configuração de modificações do cronograma.

Usuário de banco de dados mal configurado

A AWSAuthenticationPlugin gerencia a autenticação do IAM para sua instância do Amazon RDS para MySQL. Para confirmar se esse plug-in se conecta ao seu perfil do IAM, execute o seguinte comando:

select user,plugin,host from mysql.user where user like '%db-user-name%';

Observação: substitua db-user-name pelo nome de usuário de seu banco de dados.

Exemplo de saída:

+------+-------------------------+------+|
user | plugin | host |
+------+-------------------------+------+
| root | AWSAuthenticationPlugin | % |
+------+-------------------------+------+
1 row in set (0.00 sec)

Caso o perfil do IAM utilize um host específico, então deve-se utilizar esse mesmo nome de host. Além disso, verifique se possui as permissões adequadas para acessar o banco de dados especificado.

Para visualizar as permissões concedidas a um usuário, utilize a seguinte sintaxe de comando:

show grants for user;

Observação: substitua user pelo nome de usuário.

Para conceder privilégios a outro usuário, utilize a seguinte sintaxe de comando:

grant select on mydb.mytable to user;

Observação: substitua mydb pelo nome da instância de banco de dados, mytable pelo nome da tabela e user pelo nome de usuário.

Para mais informações, consulte Instrução GRANT no site do MySQL.

Cadeia de conexão incorreta

Para conectar-se ao banco de dados Amazon RDS para MySQL, utilize a opção --enable-cleartext-plugin na cadeia de conexão. A sintaxe --enable-cleartext-plugin atuará como um token de autenticação e deve-se utilizá-la para conectar-se com o banco de dados e ao configurar o usuário de banco de dados.

Exemplo de cadeia de conexão:

$ mysql -h <endpoint> -P 3306 --enable-cleartext-plugin --user=RDSConnect --password=$

Informações relacionadas

Como posso permitir que os usuários se autentiquem em uma instância de banco de dados do Amazon RDS para MySQL utilizando suas credenciais do Amazon IAM?

Autenticação de banco de dados do IAM