Quiero conectarme a una instancia de base de datos de Amazon Relational Database Service (Amazon RDS) para MySQL. Quiero usar las credenciales de AWS Identity and Access Management (IAM) en lugar de utilizar métodos de autenticación nativos.
Solución
Nota: Si se muestran errores al usar comandos de Interfaz de la línea de comandos de AWS (AWS CLI), consulta Troubleshoot AWS CLI errors. Además, asegúrate de utilizar la versión más reciente de AWS CLI.
Para conectarte a una instancia de base de datos o clúster de Amazon RDS, usa credenciales de rol o de usuario de IAM y un token de autenticación.
Nota: Utiliza una conexión de MySQL sin cifrar solo cuando el cliente y el servidor estén en la misma nube virtual privada (VPC) y la red sea de confianza.
Requisito previo
Debes lanzar una instancia de base de datos que admita la autenticación de bases de datos de IAM y una instancia de Amazon Elastic Compute Cloud (Amazon EC2) para conectarte a la base de datos.
Para verificar la configuración requerida para la autenticación de IAM, utiliza el runbook de Automatización de AWS Systems Manager AWSSupport-TroubleshootRDSIAMAuthentication. También puedes usar el manual para solucionar problemas de conectividad con la instancia de Amazon RDS o el clúster de Aurora.
Activación de la autenticación de base de datos de IAM en la instancia de base de datos de RDS
Puedes usar la consola de Amazon RDS, lInterfaz de la línea de comandos de AWS (AWS CLI) o la API de Amazon RDS para activar la autenticación de bases de datos de IAM. Si utilizas la consola de Amazon RDS para modificar la instancia de base de datos, selecciona Aplicar inmediatamente para activar la autenticación de la base de datos de IAM. Para obtener más información, consulta ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.DBInstance.html) Instancias de base de datos de Amazon RDS[.
Nota: Si eliges Aplicar inmediatamente, cualquier modificación pendiente también se aplicará inmediatamente. Para obtener más información, consulta Modificación de una instancia de base de datos de Amazon RDS.
Creación de una cuenta de usuario de base de datos que utilice un token de autenticación de AWS
Para conectarte al punto de enlace de la instancia de base de datos o del clúster, usa el siguiente comando.
$ mysql -h {database or cluster endpoint} -P {port number database is listening on} -u {master db username} -p
Nota: Usa tu contraseña principal para iniciar sesión.
Para crear una cuenta de usuario de base de datos que utilice un token de autenticación de AWS en lugar de una contraseña, usa el siguiente comando:
CREATE USER {dbusername} IDENTIFIED WITH AWSAuthenticationPlugin as 'RDS';
De forma predeterminada, el usuario de la base de datos no tiene privilegios. El usuario de la base de datos aparece como GRANT USAGE cuando usas SHOW GRANTS FOR {dbusername}. Para solicitar que una cuenta de usuario se conecte mediante SSL, usa el siguiente comando:
ALTER USER {dbusername} REQUIRE SSL;
Para cerrar MySQL, usa el comando exit. A continuación, cierra la sesión en la instancia de base de datos.
Adición de una política de IAM que asigne el usuario de la base de datos al rol de IAM
Sigue estos pasos:
- Abre la consola de IAM.
- En el panel de navegación, elige Políticas.
- Selecciona Crear política.
- Introduce una política que permita usar la acción rds-db:connect en el usuario requerido. Para obtener más información sobre la creación de esta política, consulta Creación y uso de una política de IAM para el acceso a bases de datos de IAM.
Nota: Asegúrate de introducir los detalles de los recursos de tu base de datos en la sección Recursos.
- Selecciona Siguiente.
- Selecciona Siguiente.
- En Nombre, introduce un nombre de política.
- Selecciona Crear política.
Creación de un rol de IAM que permita el acceso a Amazon RDS
Sigue estos pasos:
- Abre la consola de IAM.
- En la página de navegación, selecciona Roles.
- En la sección de tipo de Entidad de confianza, elige Crear rol.
- Selecciona Servicio de AWS.
- En la sección Caso de uso, para Caso de servicio o de usuario, elige EC2.
- En Caso de uso, elige EC2 y, a continuación, selecciona Siguiente.
- En la barra de búsqueda, busca la política de IAM que creaste anteriormente en la sección Adición de una política de IAM que asigne el usuario de la base de datos al rol de IAM.
- Selecciona Siguiente.
- En Nombre del rol, introduce un nombre para este rol de IAM.
- Selecciona Crear rol.
Asociación del rol de IAM a la instancia de Amazon EC2
Sigue estos pasos:
- Abre la consola de Amazon EC2.
- Selecciona la instancia de EC2 que utilizas para conectarte a Amazon RDS.
- Asocia el rol de IAM recién creado a la instancia de EC2.
- Conéctate a la instancia de EC2 mediante SSH.
Generación de un token de autenticación de AWS para identificar el rol de IAM
Tras conectarte a tu instancia de Amazon EC2, usa el comando de AWS CLI generate-db-auth-token para generar un token de autenticación.
$ aws rds generate-db-auth-token --hostname {db or cluster endpoint} --port 3306 --username {db username}
Nota: Si se muestran errores al usar comandos de AWS CLI, consulta Troubleshoot AWS CLI errors. Además, asegúrate de utilizar la versión más reciente de AWS CLI.
Copia y almacena este token de autenticación para usarlo más adelante. O bien, utiliza AWS SDK para.NET para generar un token.
Descarga del archivo de agrupación de certificados raíz SSL
Para descargar una agrupación de certificados para todas las regiones de AWS, consulta Agrupaciones de certificados para todas las regiones de AWS.
Uso de las credenciales del rol de IAM y el token de autenticación para conectarse a la instancia de base de datos de RDS
Tras descargar el archivo del certificado, usa el siguiente comando para conectarte a la instancia de base de datos con 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
Nota: Si usas un cliente MariaDB, no incluyas la opción --enable-cleartext-plugin.
Uso de las credenciales de rol de IAM y los certificados SSL para conectarse a la instancia de base de datos de RDS
Tras descargar el archivo del certificado, conéctate a la instancia de base de datos con SSL.
Información relacionada
Autenticación de bases de datos de IAM para MariaDB, MySQL y PostgreSQL
¿Cuáles son los privilegios mínimos necesarios para que un usuario pueda crear, eliminar, modificar, hacer copias de seguridad y recuperar una instancia de base de datos de Amazon RDS?