Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Centralización de la administración de claves de acceso de IAM en AWS Organizations mediante Terraform
Aarti Rajput, Chintamani Aphale, T.V.R.L.Phani Kumar Dadi, Pratap Kumar Nanda, Pradip kumar Pandey y Mayuri Shinde, Amazon Web Services
Resumen
Hacer cumplir las normas de seguridad para las claves y contraseñas es una tarea esencial para todas las organizaciones. Una regla importante es rotar las claves de AWS Identity and Access Management (IAM) a intervalos regulares para reforzar la seguridad. Por lo general, las claves de acceso de AWS se crean y configuran localmente cuando los equipos quieren acceder a AWS desde la interfaz de la línea de comandos de AWS (AWS CLI) o desde aplicaciones ajenas a AWS. Para mantener una seguridad sólida en toda la organización, las claves de seguridad antiguas deben cambiarse o eliminarse una vez que se haya cumplido el requisito o a intervalos regulares. El proceso de gestionar la rotación de claves en varias cuentas de una organización lleva mucho tiempo y es tedioso. Este patrón lo ayudará a automatizar el proceso de rotación mediante Generador de cuentas para Terraform (AFT) y los servicios de AWS.
El patrón le ofrece las ventajas siguientes:
Administra la clave de acceso IDs y las claves de acceso secretas de todas las cuentas de su organización desde una ubicación central.
Rota automáticamente las variables de entorno
AWS_ACCESS_KEY_IDyAWS_SECRET_ACCESS_KEY.Exige la renovación de las credenciales de los usuarios si estas se ven comprometidas.
El patrón usa Terraform para implementar funciones de AWS Lambda, reglas de EventBridge Amazon y roles de IAM. Una EventBridge regla se ejecuta a intervalos regulares y llama a una función Lambda que enumera todas las claves de acceso de los usuarios en función del momento en que se crearon. Las funciones de Lambda adicionales crean un nuevo ID de clave de acceso y una clave de acceso secreta, si la clave antigua es anterior al período de rotación que se haya definido (por ejemplo, 45 días); a continuación, se notifica a un administrador de seguridad mediante Amazon Simple Notification Service (Amazon SNS) y Amazon Simple Email Service (Amazon SES). Los secretos se crean en AWS Secrets Manager para ese usuario, la clave de acceso secreta antigua se almacena en Secrets Manager y se configuran los permisos para acceder a la clave antigua. Para garantizar que la clave de acceso anterior ya no se utilice, se deshabilita después de un período de inactividad (por ejemplo, 60 días; en nuestro ejemplo, serán 15 días después de rotar las claves). Tras un período de almacenamiento inactivo (en nuestro ejemplo, 90 días o 45 días después de rotar las claves), las claves de acceso antiguas se eliminan de AWS Secrets Manager. Para obtener información detallada sobre la arquitectura y el flujo de trabajo, consulte la sección Arquitectura.
Requisitos previos y limitaciones
Una zona de aterrizaje para su organización creada mediante AWS Control Tower (versión 3.1 o posterior)
Generador de cuentas para Terraform (AFT)
, configurado con tres cuentas: La cuenta de administración de la organización
administra toda la organización desde una ubicación central. La cuenta de administración AFT
aloja la canalización de Terraform e implementa la infraestructura en la cuenta de implementación. La cuenta de implementación
implementa esta solución completa y administra las claves de IAM desde una ubicación central.
La versión 0.15.0 o posterior de Terraform para aprovisionar la infraestructura en la cuenta de implementación.
Dirección de correo electrónico configurada en Amazon Simple Email Service (Amazon SES)
. (Recomendado) Para mejorar la seguridad, implemente esta solución en una subred privada (cuenta de implementación) dentro de una nube privada virtual (VPC)
. Puede proporcionar los detalles de la VPC y la subred al personalizar las variables (consulte Personalizar los parámetros de la canalización de código en la sección Epics).
Arquitectura
Repositorios de AFT
Este patrón utiliza el Generador de cuentas para Terraform (AFT) para crear todos los recursos de AWS necesarios y la canalización de código para implementar los recursos en una cuenta de implementación. La canalización de código se ejecuta en dos repositorios:
La personalización global contiene el código de Terraform que se aplicará a todas las cuentas registradas en AFT.
Las personalizaciones de la cuenta contienen el código de Terraform que se ejecutará en la cuenta de implementación.
Detalles del recurso
Los CodePipeline trabajos de AWS crean los siguientes recursos en la cuenta de implementación:
EventBridge Regla de AWS y regla configurada
Función de Lambda
account-inventoryFunción de Lambda
IAM-access-key-rotationFunción de Lambda
NotificationBucket de Amazon Simple Storage Service (Amazon S3) que contiene una plantilla de correo electrónico
Política de IAM obligatoria
Arquitectura

En el siguiente diagrama se ilustra lo siguiente:
Una EventBridge regla llama a la función
account-inventoryLambda cada 24 horas.La función
account-inventoryLambda consulta a AWS Organizations una lista de todas las cuentas IDs, nombres de cuentas y correos electrónicos de cuentas de AWS.La función de Lambda
account-inventoryinicia una función de LambdaIAM-access-key-auto-rotationpara cada cuenta de AWS y le pasa los metadatos para su procesamiento adicional.La función de Lambda
IAM-access-key-auto-rotationutiliza un rol de IAM asumido para acceder a la cuenta de AWS. El script de Lambda ejecuta una auditoría de todos los usuarios y sus claves de acceso de IAM en la cuenta.El umbral de rotación de la clave de IAM (período de rotación) se configura como una variable de entorno cuando se implementa la función de Lambda
IAM-access-key-auto-rotation. Si se modifica el período de rotación, la función de LambdaIAM-access-key-auto-rotationse vuelve a implementar con una variable de entorno actualizada. Puede configurar los parámetros para establecer el período de rotación, el período de inactividad de las claves antiguas y el búfer inactivo tras el cual se eliminarán las claves antiguas (consulte Personalización de los parámetros de la cadena de códigos en la sección Epics).La función de Lambda
IAM-access-key-auto-rotationvalida la antigüedad de la clave de acceso en función de su configuración. Si la antigüedad de la clave de acceso de IAM no ha excedido el período de rotación definido, la función de Lambda no realiza ninguna otra acción.Si la antigüedad de la clave de acceso de IAM ha superado el período de rotación que ha definido, la función de Lambda
IAM-access-key-auto-rotationcree una clave nueva y rote la clave existente.La función de Lambda guarda la clave anterior en Secrets Manager y limita los permisos al usuario cuyas claves de acceso no cumplan con los estándares de seguridad. La función de Lambda también crea una política basada en recursos que sólo permite a la entidad principal de IAM especificada acceder al secreto y recuperarlo.
La función de Lambda
IAM-access-key-rotationllama a la función de LambdaNotification.La función de Lambda
Notificationconsulta el bucket de S3 en busca de una plantilla de correo electrónico y genera dinámicamente mensajes de correo electrónico con los metadatos de actividad relevantes.La función de Lambda
Notificationsolicita a Amazon SES que tome medidas adicionales.Amazon SES envía un correo electrónico a la dirección de correo electrónico del propietario de la cuenta con la información pertinente.
Tools (Herramientas)
Servicios de AWS
AWS Identity and Access Management (IAM) le permite administrar de forma segura el acceso a los recursos de AWS mediante el control de quién está autenticado y autorizado a utilizarlos. Este patrón requiere roles y permisos de IAM.
AWS Lambda es un servicio de computación que ayuda a ejecutar código sin necesidad de aprovisionar ni administrar servidores. Ejecuta el código solo cuando es necesario y amplía la capacidad de manera automática, por lo que solo pagará por el tiempo de procesamiento que utilice.
AWS Secrets Manager le permite reemplazar las credenciales codificadas en el código, incluidas las contraseñas, con una llamada a la API de Secrets Manager para recuperar el secreto mediante programación.
Amazon Simple Email Service (Amazon SES) facilita poder enviar y recibir correos electrónicos a través de los dominios y direcciones de correo electrónico propios.
Otras herramientas
Terraform
es una herramienta de infraestructura como código (IaC) HashiCorp que le ayuda a crear y administrar recursos locales y en la nube.
Repositorio de código
Las instrucciones y el código de este patrón están disponibles en el repositorio de rotación de claves de acceso de GitHub IAM
Prácticas recomendadas
Para más información de IAM, consulte Prácticas recomendadas de seguridad en la documentación de IAM.
Para obtener información sobre la rotación de claves, consulte las pautas para actualizar las claves de acceso en la documentación de IAM.
Epics
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Clonar el repositorio. |
| DevOps ingeniero |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Configure la cuenta de arranque. | Como parte del proceso de arranque de AFT
| DevOps ingeniero |
Configure las personalizaciones globales. | Como parte de la configuración de la carpeta AFT
| DevOps ingeniero |
Configure las personalizaciones de cuentas. | Como parte de la configuración de la carpeta AFT
| DevOps ingeniero |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Personalice los parámetros de la canalización de códigos que no sean de Terraform para todas las cuentas. | Cree un archivo llamado | DevOps ingeniero |
Personalice los parámetros de la canalización del código para la implementación de la cuenta. | Cree un archivo llamado Especifique los valores de los parámetros en función de los requisitos de su organización, incluidos los siguientes (consulte el archivo del repositorio de Github
| DevOps ingeniero |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Valide la solución. |
| DevOps ingeniero |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Personalice la fecha de notificación por correo electrónico. | Si desea enviar notificaciones por correo electrónico un día específico antes de deshabilitar la clave de acceso, puede actualizar la función de Lambda
| DevOps ingeniero |
Resolución de problemas
| Problema | Solución |
|---|---|
El trabajo de Lambda | Si ve este problema, debe validar los permisos:
|
Recursos relacionados
Prácticas recomendadas de Terraform
(documentación de Terraform) Prácticas recomendadas de seguridad en IAM (documentación de IAM)
Prácticas recomendadas para la rotación de claves (documentación de IAM)