Blog de Amazon Web Services (AWS)
Conéctese de forma segura a Amazon RDS para PostgreSQL con AWS Identity Center y Active Directory
Por Adrià Morgado, arquitecto senior de infraestructura de nube en AWS y Jose Sánchez Romero, arquitecto senior de infraestructura de nube en AWS.
En el entorno empresarial actual, la integración de sistemas es clave no solo para optimizar la eficiencia operativa, sino también para asegurar la gestión y protección adecuada de los datos. En una publicación anterior, mostramos cómo conectarse de forma segura a Amazon RDS para PostgreSQL con AWS Session Manager y autenticación de IAM.
Sin embargo, muchas organizaciones buscan centralizar y simplificar la autenticación y autorización a sus bases de datos, con el objetivo principal de reducir la complejidad operativa y mejorar la seguridad.
En este artículo, exploraremos cómo implementar una solución que combina Active Directory y AWS IAM Identity Center para lograr una conexión segura a sus bases de datos RDS. Esta solución integrada, proporciona a los usuarios una experiencia de acceso fluida a los recursos empresariales, al mismo tiempo que ofrece al equipo de gestión un control centralizado y una visibilidad clara sobre la administración de identidades y el acceso a los datos.
El proceso se iniciará con la configuración del directorio principal de usuarios en Active Directory. Luego, integraremos este directorio en AWS IAM Identity Center, que servirá de intermediario entre Active Directory y los recursos en la nube, facilitando el inicio de sesión único y la gestión de identidades. Finalmente, estableceremos la conexión entre Identity Center y Amazon RDS para PostgreSQL, garantizando que los usuarios accedan a la base de datos con un alto nivel de seguridad y control.
Requisitos previos
Para esta publicación debe tener las siguientes herramientas y servicios:
- Acceso a la consola de administración de AWS.
- Según el motor de base de datos que elija, necesitará uno de los siguientes clientes: MySQL (para MySQL y MariaDB) o psql (PostgreSQL).
- Una VPC existente a través de Amazon Virtual Private Cloud (Amazon VPC) con al menos una subred privada.
- Una instancia de Amazon Elastic Compute Cloud (Amazon EC2) que utilizaremos como host bastión.
- Una instancia de Amazon RDS existente y un grupo de seguridad para dicha base de datos (en esta publicación utilizamos Amazon RDS para PostgreSQL, pero la solución también funciona para los demás motores de RDS).
- AWS IAM Identity Center debe estar habilitado en su organización de AWS. Visite cómo Habilitar AWS IAM Identity Center para más información.
- Un directorio AWS Microsoft AD gestionado o en su defecto un directorio autoadministrado de Active Directory. Para más detalles acerca de cómo crear un directorio Microsoft AD, visite AWS Directory Service.
Arquitectura de la solución
En el siguiente diagrama se detallan los componentes que intervienen en la arquitectura y los pasos necesarios para establecer una conexión segura a Amazon RDS con AWS Identity Center y Active Directory.
Los diferentes pasos del flujo de trabajo son los siguientes:
- Inicie una sesión en el portal de acceso de AWS (URL disponible en AWS IAM Identity Center) con sus credenciales (usuario y contraseña).
- AWS IAM Identity Center redirige la solicitud al servicio de autenticación de AWS IAM Identity Center en función del directorio asociado a la dirección de correo electrónico del usuario. En nuestro caso, utilizaremos AWS Managed Active Directory como fuente de identidad. Una vez autenticado, el usuario tiene acceso de inicio de sesión único a cualquiera de las cuentas que aparecen en el portal.
- Una vez haya iniciado sesión en su cuenta de AWS, conéctese al host bastión a través del punto de conexión de Amazon EC2 Instance Connect.
- Una vez el túnel esté establecido, y desde la ventana de terminal que se abrirá, llame con sus credenciales a Amazon RDS para obtener el token de autenticación a la base de datos.
- Conéctese a la base de datos mediante el token de autenticación de la base de datos generado por Amazon RDS.
Como práctica recomendada para la seguridad a nivel de red, recomendamos lanzar las instancias de Amazon RDS en subredes privadas por varias razones de seguridad, entre ellas, reducir la superficie de un posible atacante o proteger contra accesos no autorizados desde fuentes externas.
Para permitir el acceso de los usuarios a estos recursos privados en una red, es necesario disponer de un host bastión a través del cual los usuarios se conecten para acceder a la base de datos. Aunque generalmente los bastiones se encuentran en una subred pública para permitir el acceso desde Internet, existen alternativas que permiten conectarse de forma segura a una instancia de EC2 configurada en una red privada, proporcionando una capa adicional de seguridad al entorno de su VPC. Para esta solución utilizaremos el punto de conexión de EC2 Instance Connect, estableciendo un túnel privado desde el equipo hasta el punto final mediante las credenciales de la entidad de IAM.
Configuración paso a paso
Conexión con un directorio Microsoft Active Directory
El origen de identidad en AWS IAM Identity Center define dónde se administran sus usuarios y grupos de Active Directory. Tras configurar su origen de identidad, usted puede buscar a sus usuarios o grupos de Active Directory para concederles acceso a las cuentas de AWS o aplicaciones.
En esta sección le guiamos a través de los pasos necesarios para configurar una conexión de un directorio AWS Managed Microsoft Active Directory con AWS IAM Identity Center. Si usted ya ha configurado dicha conexión con un directorio Microsoft Active Directory, pase a la siguiente sección.
Para configurar su fuente de identidad en AWS Identity Center:
- Abra la consola de AWS IAM Identity Center.
- Elija Configuración.
- En la página de Configuración, elija la pestaña Fuente de identidad, Acciones, y a continuación, Cambiar fuente de identidad.
- Seleccione Active Directory en Elegir origen de identidad, y a continuación seleccione Siguiente.
- En Conectar Active Directory, elija su directorio AWS Managed Microsoft AD, y a continuación, pulse Siguiente.
- En Confirmar el cambio,escriba Aceptar, y a continuación, elija Cambiar fuente de Identidad.
Configuración de AWS IAM Identity Center
Crear un conjunto de permisos para el grupo de usuarios
Para que el usuario pueda conectarse a la base de datos necesita tener acceso a un host bastión que utilice de puente para establecer dicha conexión.
Para ello, y en AWS IAM Identity center, vamos a crear un conjunto de permisos para dotar al usuario de los privilegios necesarios para conectarse al host bastión y desde allí a la base de datos Amazon RDS para PostgreSQL.
Antes de crear el conjunto de permisos, deberemos crear las políticas de AWS IAM administradas por el cliente:
- Abra la consola de IAM.
- En el panel de navegación, elija Políticas.
- Elija Crear Políticas, y en la sección Editor de políticas, seleccione la opción JSON.
- Introduzca ahora el siguiente documento de políticas JSON. Esta política de IAM permitirá al usuario que ha iniciado sesión en AWS Identity Center, conectarse a su instancia de base de datos.
-
- region – La región de AWS de la instancia de base de datos.
- account-id – El número de cuenta de AWS de la instancia de base de datos.
- DBInstanceResourceID – El identificador de la instancia de base de datos. Para buscar el ID de recurso de la instancia de base de datos en la consola de Amazon RDS, elija la instancia de base de datos para ver sus detalles. A continuación, elija la pestaña Configuración y el ID del recurso se mostrará en la sección Configuración.
- Elija Revisar la política e introduzca un nombre para la política. En nuestro caso utilizaremos
dbaccesspost
. - Si lo desea, puede introducir una descripción.
- Seleccione Crear política.
Siguiendo de nuevo los pasos anteriores, ahora crearemos una segunda política llamada dbaaccessec2
. Esta política nos permitirá conectarnos al host bastión a través de EC2 Instance Connect. Para ello utilizaremos el siguiente documento JSON:
Reemplaze los siguientes elementos debidamente:
- region – La región de AWS de la instancia de base de datos.
- account-id – El número de cuenta de AWS de la instancia de base de datos.
- instance-id – El identificador de la instancia host bastión.
Una vez hayamos creado las políticas de IAM, procederemos a crear un conjunto de permisos en AWS Identity Center. Para ello complete los siguientes pasos:
- Abra la consola AWS IAM de Identity Center.
- En Permisos para varias cuentas, elija ahora Conjunto de permisos.
- Elija Crear Conjunto de permisos.
- En Tipo de conjunto de permisos seleccione Conjunto de permisos personalizado.
- En Política para un conjunto de permisos personalizado, elegimos Políticas Administradas por el cliente. Ahora introducimos el nombre de las políticas que deseemos añadir al conjunto de permisos. En nuestro caso, añadiremos los nombres de las dos políticas IAM administradas creadas anteriormente,
dbaccesspost
ydbaaccessec2
. Seleccione Siguiente.
- Escriba ahora el Nombre del conjunto de permisos. En nuestro ejemplo, lo llamaremos
dbapostgresqlaccess
. Opcionalmente puede añadir una descripción o modificar los valores de la duración de sesión o el estado de retransmisión.
- Elija Siguiente, y en la página Revisar y crear, revise las selecciones que ha realizado, y a continuación seleccione Crear.
Aprovisionamiento de usuarios y grupos dentro del directorio de Active Directory
- Acceda a su directorio de Active Directory y proceda a crear un grupo de usuarios llamado
dbs
.
- Cree un usuario (en nuestro ejemplo
dbajosanrno
) dentro del directorio de Active Directory, y asócielo al grupo creado anteriormente,dbs
.
Sincronización con IAM Identity Center
Con AWS IAM Identity Center y la sincronización con Active Directory, usted puede utilizar AWS IAM Identity Center para asignar a los usuarios y grupos de Active Directory el acceso a las aplicaciones o cuentas de AWS. Todas las identidades asignadas se sincronizarán automáticamente en AWS IAM Identity Center.
Para sincronizar los usuarios y el grupo de usuarios creado anteriormente en el directorio de Active Directory, siga estos pasos:
- Abra la consola de AWS IAM Identity Center.
- Seleccione Configuración.
- Dentro de la pestaña Origen de la identidad, elija Acciones y, a continuación, Administrar sincronización.
- Ahora elija Usuarios, y a continuación, seleccione Añadir usuarios y grupos.
- En la pestaña Usuarios, en Usuario, introduzca el nombre de usuario exacto creado en el paso anterior (en nuestro caso
dbajosanrno
) y seleccione Añadir. - Seleccione Enviar.
- En la página Usuarios, deberá aparecer el usuario que especificó anteriormente. Es posible que el proceso tarde algún tiempo.
Realice ahora el mismo proceso para añadir el grupo de usuarios creado en la sección anterior, dbs
.
Asigne el acceso de los usuarios a cuentas de AWS
Siga los siguientes pasos para asignar el acceso de inicio de sesión único a usuarios y grupos del directorio de Active Directory.
- Abra la consola AWS IAM de Identity Center.
- En el panel de navegación, en Permisos para varias cuentas, elija Cuentas de AWS.
- Seleccione ahora la casilla de verificación situada junto a la cuenta o cuentas de AWS a las que desee asignar el acceso de inicio de sesión.
- Seleccione Asignar usuarios o grupos.
- Seleccione ahora el grupo de usuarios (en nuestro caso,
dbs
) y elija Siguiente.
- Seleccione el conjunto de permisos en la sección Asignar conjuntos de permisos. En nuestro ejemplo, seleccionaremos
dbapostgresqlaccess
. Seleccione Siguiente.
- Revisamos los usuarios, grupos y los conjuntos de permisos seleccionados. Ahora seleccionamos Enviar.
Control de acceso basado en atributos
Para poder configurar el control de acceso es necesario asignar los tags que serán transferidos a través de la solicitud SAML. En este caso utilizamos como tag el atributo Username
, que será el usuario que tendrá que estar dado de alta en la base de datos. Para que la autenticación funcione, el Username
procedente del sistema de autenticación debe coincidir con el usuario de base de datos.
Para configurar los atributos:
- Abra la consola AWS IAM de Identity Center.
- Elija Configuración en el panel de opciones, y seleccione la pestaña Atributos para el control de acceso. A continuación, elija Administrar atributos.
- Seleccione ahora Añadir atributo e introduzca los detalles de clave y valor.
- Elija Guardar Cambios.
Inicie sesión en el portal de AWS acceso
Ahora accedemos al portal de AWS acceso con las credenciales del AWS Identity Center.
Para ello seguiremos los siguientes pasos:
- Abra la consola de AWS IAM Identity Center.
- En el panel de navegación elija Panel. En el resumen de la configuración, seleccione la URL del portal de AWS acceso.
- Inicie ahora sesión, introduciendo el usuario y la contraseña.
- Una vez dentro, navegue a la consola de Amazon EC2 y seleccione Instancias.
- Elija la instancia que actúa como host bastión y conéctese a ella usando la función EC2 Instance Connect. Para ello utilizaremos el usuario
ec2-user
, que es el único autorizado en base a la definición de la política de IAM creada anteriormente (dbaaccessec2
).
No cierre la sesión de SSH.
Configuración de la base de datos Amazon RDS para PostgreSQL
Conectándose a la base de datos
Una vez realizada la configuración ya estamos en condiciones de acceder a nuestra base de datos.
- Acceda al portal de AWS acceso y obtenga unas credenciales de acceso temporales.
- Desde la sesión de SSH que usted abrió en la sección anterior a través de Amazon EC2 Instance Connect, configure las variables de entorno de AWS:
Exporte también como variable de entorno, el nombre del host para conexión a la base de datos:
- Genere el token de autenticación de base de datos para el usuario de la base de datos, en nuestro caso
dbajosanrno
. - Inicie ahora la conexión a la base de datos.
Consulte la sección “Conéctese a su instancia de base de datos RDS para PostgreSQL con la autenticación de IAM” en la publicación mencionada anteriormente para obtener más detalles sobre los pasos a seguir. - Verifique que el acceso funciona correctamente.
Verificación del paso de parámetros desde Active Directory a AWS Identity Center
Para asegurarnos de que los parámetros se están transmitiendo correctamente entre Active Directory y AWS Identity Center, podemos revisar la traza de auditoría de AWS CloudTrail. En esta traza, podremos observar que al invocar el método AssumeRoleWithSAML
, se intercambia el parámetro clave-valor mapeado dentro del bloque de datos principalTags
.
El principalTag
es el valor que se debe seleccionar en la política de acceso para que la política pueda identificar al usuario basado en el tag. Como se mostró anteriormente, en este caso se utiliza como key Username
para que la política reconozca al usuario correspondiente.
Aunque la selección de la key es flexible, ésta debe ser consistente y coincidir exactamente tanto en la configuración del mapeo en AWS Identity Center como en la definición de la política de acceso a la base de datos.
Eliminar los recursos innecesarios
Asegúrese de eliminar cualquier recurso que haya lanzado en su cuenta de AWS siguiendo los pasos anteriores.
Para eliminar las políticas administradas por el cliente de IAM (consola)
- Abra la consola de IAM.
- En el panel de navegación, elija Políticas.
- Seleccione el botón de radio situado junto a la política administrada por el cliente que desee eliminar. Puede utilizar el cuadro de búsqueda para filtrar la lista de políticas (
dbaccesspost
ydbaaccessec2
en nuestro ejemplo). - Seleccione Acciones y Eliminar.
- Siga las instrucciones para confirmar que desea eliminar la política, y seleccione Eliminar.
Para eliminar un conjunto de permisos en Identity Center (consola)
- Abra la consola AWS IAM de Identity Center.
- En Permisos para varias cuentas, elija ahora Conjunto de permisos.
- Seleccione la casilla de verificación situada junto al nombre del conjunto que desea eliminar (en nuestro ejemplo,
dbapostgresqlaccess
). - Seleccione Eliminar en la parte superior.
- En el cuadro de diálogo de confirmación, seleccione Eliminar.
Conclusión
En muchas compañías y organizaciones, un sistema central de autenticación basado en Active Directory (AD) es una solución común para gestionar usuarios. Active Directory actúa como el punto central donde los administradores controlan el perfil de los usuarios. Sin embargo, para una gestión completa de autenticación y autorización en aplicaciones y sistemas, es necesario integrar AD con todas las plataformas y servicios relevantes.
En esta publicación, hemos explorado cómo simplificar la gestión de la autenticación y autorización para bases de datos Amazon RDS PostgreSQL. Al integrar Active Directory con AWS IAM Identity Center y añadir usuarios directamente a la base de datos, logramos una solución que no solo optimiza el acceso, sino que también refuerza la seguridad. Este enfoque proporciona una integración robusta y sin fricciones, garantizando que la administración de usuarios sea segura, eficiente y acorde con las necesidades modernas de su organización.
Si tiene alguna pregunta, comentario o sugerencia, deje un comentario.