Saltar al contenido

¿Por qué aparece el error «Access Denied» cuando uso la autenticación de IAM para intentar conectarme a Amazon RDS para MySQL?

4 minutos de lectura
0

Quiero usar la autenticación de AWS Identity and Access Management (IAM) para conectarme a mi instancia de Amazon Relational Database Service (Amazon RDS) para MySQL. Sin embargo, aparece un error «Access Denied».

Descripción corta

Pueden aparecer mensajes de error debido a la falta de permisos de rol de IAM, a la desactivación de la autenticación de IAM, a una mala configuración del usuario de la base de datos o a un error en la cadena de conexión. Es posible que se muestre un mensaje de error parecido al siguiente:

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

Utiliza el runbook AWSSupport-TroubleshootRDSIAMAuthentication para verificar automáticamente la configuración requerida para la autenticación de IAM con una instancia de Amazon RDS y, a continuación, utiliza las resoluciones para resolver este error.

Resolución

Los permisos de rol de IAM son insuficientes

Para usar la autenticación de bases de datos de IAM para conectarte a tu instancia de Amazon RDS para MySQL, debes tener acceso a la acción rds-db:connect. Para obtener más información, consulta Creación y uso de una política de IAM para el acceso a bases de datos de IAM.

Si usas políticas de control de servicios (SCP), asegúrate de que tu política permita las conexiones a la instancia de la base de datos. Para obtener más información, consulta Creación de políticas organizativas con AWS Organizations.

Activación de la autenticación de IAM

De forma predeterminada, la autenticación de IAM está desactivada para las instancias de bases de datos. Para activar la autenticación de IAM, sigue estos pasos:

  1. Abre la consola de Amazon RDS.
  2. Selecciona la instancia.
  3. Selecciona Modificar.
  4. En Autenticación de bases de datos, elige Contraseña.
  5. Selecciona la autenticación de bases de datos de IAM.
  6. Para actualizar los ajustes de configuración, selecciona Continuar.
  7. Para modificar la instancia, elige Aplicar.

Nota: Si eliges Aplicar inmediatamente al actualizar los parámetros de configuración del clúster, todas las modificaciones pendientes se aplicarán inmediatamente en lugar de durante un periodo de mantenimiento. Esta acción puede provocar una interrupción prolongada de la instancia de Amazon RDS para MySQL. Para obtener más información, consulta Configuración de la programación de modificaciones.

Usuario de base de datos mal configurado

AWSAuthenticationPlugin gestiona la autenticación de IAM para tu instancia de Amazon RDS para MySQL. Para confirmar que este complemento se conecta a tu rol de IAM, ejecuta el siguiente comando:

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

Nota: Sustituye db-user-name por el nombre de usuario de la base de datos.

Resultado de ejemplo:

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

Si el rol de IAM usa un host específico, debes usar ese nombre de host. Además, asegúrate de tener permisos para acceder a la base de datos especificada.

Para ver los permisos concedidos a un usuario, utiliza el siguiente comando:

show grants for user;

Nota: Sustituye user por el nombre de usuario.

Para conceder privilegios a otro usuario, utiliza el siguiente comando:

grant select on mydb.mytable to user;

Nota: Sustituye mydb por el nombre de la instancia de la base de datos, mytable por el nombre de la tabla y user por tu nombre de usuario.

Para obtener más información, consulta Instrucción GRANT en el sitio web de MySQL.

La cadena de conexión es incorrecta

Para conectarte a la base de datos Amazon RDS para MySQL, utiliza la opción --enable-cleartext-plugin en la cadena de conexión. La sintaxis --enable-cleartext-plugin actúa como un token de autenticación y debes usarla para la conexión a la base de datos y al configurar el usuario de la base de datos.

Ejemplo de cadena de conexión:

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

Información relacionada

¿Cómo puedo permitir que los usuarios se autentiquen en una instancia de base de datos de Amazon RDS para MySQL con sus credenciales de IAM?

Autenticación de bases de datos de IAM