Como permitir que os usuários se autentiquem em uma instância de banco de dados Amazon RDS para MySQL usando suas credenciais do Amazon IAM?
Desejo me conectar a uma instância de banco de dados MySQL do Amazon Relational Database Service (Amazon RDS). Desejo usar as credenciais do AWS Identity and Access Management (AWS IAM) em vez de usar métodos de autenticação nativos.
Resolução
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solucionar erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Para se conectar a uma instância ou cluster de banco de dados do Amazon RDS, use credenciais de usuário ou perfil do IAM e um token de autenticação.
Observação: use uma conexão MySQL não criptografada somente quando seu cliente e servidor estiverem na mesma nuvem privada virtual (VPC) e a rede for confiável.
Pré-requisito
Você deve executar uma instância de banco de dados que ofereça suporte à autenticação de banco de dados do IAM e uma instância do Amazon Elastic Compute Cloud (Amazon EC2) para se conectar ao banco de dados.
Para verificar a configuração necessária para a autenticação do IAM, use o runbook AWSSupport-TroubleshootRDSIAMAuthentication do AWS Systems Manager Automation. Você também pode usar o runbook para solucionar problemas de conectividade com a instância do Amazon RDS ou o cluster Aurora.
Ative a autenticação de banco de dados do IAM na instância de banco de dados do RDS
Você também pode usar o console do Amazon RDS, a AWS Command Line Interface (AWS CLI) ou a API do Amazon RDS para ativar a autenticação do banco de dados do IAM. Se você usar o console do Amazon RDS para modificar a instância do banco de dados, escolha Aplicar imediatamente para ativar a autenticação de banco de dados do IAM. Para obter mais informações, consulte Instâncias de banco de dados do Amazon RDS.
Observação: Se você escolher Aplicar imediatamente, todas as modificações pendentes também serão aplicadas imediatamente. Para obter mais informações, consulte Configuração de modificações do cronograma.
Crie uma conta de usuário do banco de dados que use um token de autenticação da AWS
Para conectar-se à instância de banco de dados ou ao endpoint do cluster, execute o comando a seguir.
$ mysql -h {database or cluster endpoint} -P {port number database is listening on} -u {master db username} -p
Observação: use sua senha principal para fazer login.
Para criar uma conta de usuário do banco de dados que use um token de autenticação da AWS em vez de uma senha, execute o seguinte comando:
CREATE USER {dbusername} IDENTIFIED WITH AWSAuthenticationPlugin as 'RDS';
Por padrão, o usuário do banco de dados não tem privilégios. O usuário do banco de dados aparece como GRANT USAGE quando você executa SHOW GRANTS FOR {dbusername}. Para exigir que uma conta de usuário se conecte por meio de SSL, execute o seguinte comando:
ALTER USER {dbusername} REQUIRE SSL;
Para fechar o MySQL, execute o comando exit. Em seguida, saia da instância de banco de dados.
Adicione uma política do IAM que mapeie o usuário do banco de dados para o perfil do IAM
Conclua as seguintes etapas:
- Abra o console do IAM.
- No painel de navegação, selecione Políticas.
- Selecione Criar política.
- Insira uma política que permita a ação rds-db:connect para o usuário necessário. Para obter mais informações sobre como criar essa política, consulte Criar e usar uma política do IAM para acesso do banco de dados do IAM.
Observação: certifique-se de inserir os detalhes dos recursos do seu banco de dados na seção Recursos. - Escolha Avançar.
- Escolha Avançar.
- Em Nome, insira um nome de política.
- Selecione Criar política.
Crie um perfil do IAM que permita o acesso ao Amazon RDS
Conclua as seguintes etapas:
- Abra o console do IAM.
- No painel de navegação, escolha Perfis.
- Na seção Tipo de entidade confiável, escolha Criar perfil.
- Selecione Serviço da AWS.
- Na seção Caso de uso, em Caso de serviço ou usuário, escolha EC2.
- Em Caso de uso, escolha EC2 e, em seguida, escolha Avançar.
- Na barra de pesquisa, encontre a política do IAM que você criou anteriormente na seção Adicionar uma política do IAM que mapeie o usuário do banco de dados.
- Escolha Avançar.
- Em Nome do perfil, insira um nome para esse perfil do IAM.
- Selecione Criar perfil.
Anexe o perfil do IAM à instância do Amazon EC2
Conclua as seguintes etapas:
- Abra o console do Amazon EC2.
- Selecione a instância do EC2 que você usa para se conectar ao Amazon RDS.
- Anexe seu perfil do IAM recém-criado à instância do EC2.
- Conecte-se à sua instância do EC2 por SSH.
Gere um token de autenticação da AWS para identificar o perfil do IAM
Depois de se conectar à sua instância do Amazon EC2, execute o seguinte comando generate-db-auth-token da AWS CLI para gerar um token de autenticação:
$ aws rds generate-db-auth-token --hostname {db or cluster endpoint} --port 3306 --username {db username}
Observação: se você receber erros ao executar comandos da AWS CLI, consulte Solucionar erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Copie e armazene esse token de autenticação para uso posterior. Ou use um AWS SDK para .NET para gerar um token.
Baixe o arquivo do pacote de certificados raiz SSL
Para baixar um pacote de certificados para todas as regiões AWS, consulte Pacotes de certificados para todas as regiões AWS.
Use as credenciais de perfil do IAM e o token de autenticação para se conectar à instância do banco de dados do RDS
Depois de baixar o arquivo do certificado, execute o comando a seguir para se conectar à instância de banco de dados por meio de SSL:
RDSHOST="rdsmysql.abcdefghijk.us-west-2.rds.amazonaws.com" TOKEN="$(aws rds generate-db-auth-token --hostname $RDSHOST --port 3306 --region us-west-2 --username {db username})" mysql --host=$RDSHOST --port=3306 --ssl-ca=/sample_dir/global-bundle.pem --enable-cleartext-plugin --user=jane_doe --password=$TOKEN
Observação: se você usa um cliente MariaDB, não inclua a opção --enable-cleartext-plugin.
Use as credenciais de perfil do IAM e certificados SSL para conectar-se à instância do banco de dados do RDS
Depois de baixar o arquivo do certificado, conecte-se à instância de banco de dados por meio de SSL.
Informações relacionadas
Autenticação de banco de dados do IAM para MariaDB, MySQL e PostgreSQL
Vídeos relacionados
Conteúdo relevante
- feita há 25 diaslg...
- Resposta aceitafeita há 10 diaslg...
- feita há 12 diaslg...
- feita há 12 diaslg...
- AWS OFICIALAtualizada há 3 anos
- AWS OFICIALAtualizada há 2 anos