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.
Cambie automáticamente las claves de acceso de los usuarios de IAM a escala con AWS Organizations y AWS Secrets Manager
Creado por Tracy Hickey (AWS), Gaurav Verma (AWS), Laura Seletos (AWS), Michael Davie (AWS) y Arvind Patel (AWS)
Resumen
importanteComo práctica recomendada, AWS recomienda utilizar las funciones de AWS Identity and Access Management (IAM) en lugar de usuarios de IAM con credenciales a largo plazo, como claves de acceso. El enfoque documentado en este patrón está destinado únicamente a las implementaciones heredadas que requieren credenciales de API de AWS de larga duración. Para estas implementaciones, le recomendamos que considere opciones para usar credenciales a corto plazo, como los perfiles de instancia de Amazon Elastic Compute Cloud (Amazon EC2) o los roles de IAM Anywhere. El enfoque de este artículo es solo para los casos en los que no pueda cambiar a usar credenciales de corta duración de forma inmediata y necesite que las credenciales de larga duración se roten según un cronograma. Con este enfoque, usted es responsable de actualizar periódicamente el código o la configuración de su aplicación antigua para utilizar las credenciales de API rotadas. |
Las claves de acceso son credenciales a largo plazo para un usuario de IAM. La rotación periódica de sus credenciales de IAM ayuda a evitar que un conjunto comprometido de claves de acceso de IAM acceda a los componentes de su cuenta de AWS. La rotación de las credenciales de IAM también es una parte importante de las prácticas recomendadas de seguridad en IAM.
Este patrón le ayuda a rotar automáticamente las claves de acceso de IAM mediante CloudFormation plantillas de AWS, que se proporcionan en el repositorio de rotación de claves de GitHub IAM
El patrón admite la implementación en una o varias cuentas. Si utiliza AWS Organizations, esta solución identifica todas las cuentas de AWS de su IDs organización y se escala de forma dinámica a medida que se eliminan las cuentas o se crean nuevas cuentas. La función centralizada de AWS Lambda utiliza un rol de IAM asumido para ejecutar localmente las funciones de rotación en varias cuentas que seleccione.
Las nuevas claves de acceso de IAM se generan cuando las claves de acceso existentes tienen 90 días de antigüedad.
Las nuevas claves de acceso se almacenan en secreto en AWS Secrets Manager. Una política basada en recursos permite que solo la entidad principal de IAM especificada acceda al secreto y lo recupere. Si decide almacenar las claves en la cuenta de administración, las claves de todas las cuentas se almacenan en la cuenta de administración.
La dirección de correo electrónico asignada al propietario de la cuenta de AWS en la que se crearon las nuevas claves de acceso recibe una notificación.
Las claves de acceso anteriores se desactivan a los 100 días y, a continuación, se eliminan a los 110 días.
Se envía una notificación centralizada por correo electrónico al propietario de la cuenta de AWS.
Las funciones de Lambda y Amazon realizan estas acciones CloudWatch automáticamente. A continuación, puede recuperar el nuevo par de claves de acceso y sustituirlas en el código o las aplicaciones. Los períodos de rotación, eliminación y desactivación se pueden personalizar.
Requisitos previos y limitaciones
Al menos una cuenta de AWS activa.
AWS Organizations, configuración y puesta en marcha (consulte el tutorial).
Permisos para consultar AWS Organizations desde su cuenta de administración. Para obtener más información, consulte AWS Organizations y roles vinculados a servicios en la documentación de AWS Organizations.
Un director de IAM que tiene permisos para lanzar la CloudFormation plantilla de AWS y los recursos asociados. Para obtener más información, consulte Otorgar permisos autogestionados en la CloudFormation documentación de AWS.
Un bucket de Amazon Simple Storage Service (Amazon S3) para implementar los recursos.
Amazon Simple Email Service (Amazon SES) salió del entorno aislado. Para obtener más información, consulte Salida del entorno aislado de Amazon SES en la documentación de Amazon SES.
Si decide ejecutar Lambda en una nube privada virtual (VPC), debe crear los siguientes recursos antes de ejecutar la plantilla principal: CloudFormation
Una VPC.
Una subred
Puntos de conexión para Amazon SES, AWS Systems Manager, AWS Security Token Service (AWS STS), Amazon S3 y AWS Secrets Manager. (Puede ejecutar la plantilla de punto final que se proporciona en el repositorio de rotación de claves de GitHub IAM
para crear estos puntos de enlace).
El usuario y la contraseña del Protocolo simple de transferencia de correo (SMTP) almacenados en los parámetros de AWS Systems Manager (parámetros SSM). Los parámetros deben coincidir con los parámetros de la CloudFormation plantilla principal.
Arquitectura
Pila de tecnología
Amazon CloudWatch
Amazon EventBridge
IAM
AWS Lambda
AWS Organizations
Amazon S3
Arquitectura
Los siguientes diagramas muestran los componentes y flujos de trabajo de este patrón. La solución admite dos escenarios para almacenar las credenciales: en una cuenta de miembro y en la cuenta de administración.
Opción 1: almacenar las credenciales en una cuenta de miembro

Opción 2: almacenar las credenciales en la cuenta de administración

Los diagramas muestran el siguiente flujo de trabajo:
Un EventBridge evento inicia una función
account_inventory
Lambda cada 24 horas.Esta función de Lambda 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_inventory
inicia una función de Lambdaaccess_key_auto_rotation
para cada ID de cuenta de AWS y le pasa los metadatos para su procesamiento adicional.La función de Lambda
access_key_auto_rotation
utiliza un rol de IAM asumido para acceder al ID de 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.Si la antigüedad de la clave de acceso de IAM no ha superado el umbral de las prácticas recomendadas, 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 umbral de las prácticas recomendadas, la función de Lambda
access_key_auto_rotation
determina qué acción de rotación se debe realizar.Cuando es necesario realizar alguna acción, la función de Lambda
access_key_auto_rotation
crea y actualiza un secreto en AWS Secrets Manager si se genera una clave nueva. También se crea una política basada en recursos que sólo permite a la entidad principal de seguridad IAM especificada acceder al secreto y recuperarlo. En el caso de la opción 1, las credenciales se almacenan en Secrets Manager en la cuenta correspondiente. En el caso de la opción 2 (si la marcaStoreSecretsInCentralAccount
está establecida en True), las credenciales se almacenan en Secrets Manager, en la cuenta de administración.Se inicia una función de Lambda
notifier
para notificar la actividad de rotación al propietario de la cuenta. Esta función recibe el ID de la cuenta de AWS, el nombre de la cuenta, el correo electrónico de la cuenta y las acciones de rotación que se realizaron.La función de Lambda
notifier
consulta el bucket de S3 de implementación en busca de una plantilla de correo electrónico y la actualiza dinámicamente con los metadatos de actividad pertinentes. Luego, el correo electrónico se envía a la dirección de correo electrónico del propietario de la cuenta.
Notas:
Esta solución es compatible con la resiliencia en varias zonas de disponibilidad. Sin embargo, no admite la resiliencia en varias regiones de AWS. Para obtener soporte en varias regiones, puede implementar la solución en la segunda región y mantener desactivada la EventBridge regla de rotación de claves. A continuación, puede activar la regla cuando desee ejecutar la solución en la segunda región.
Puede ejecutar esta solución en modo auditoría. En el modo de auditoría, las claves de acceso de IAM no se modifican, pero se envía un correo electrónico para notificar a los usuarios. Para ejecutar la solución en modo auditoría, defina la marca
DryRunFlag
en True cuando ejecute la plantilla de rotación de claves o en la variable de entorno de la función de Lambdaaccess_key_auto_rotation
.
Automatizar y escalar
Las CloudFormation plantillas que automatizan esta solución se proporcionan en el repositorio de rotación de claves de GitHub IAMASA-iam-key-auto-rotation-iam-assumed-roles.yaml
CloudFormation plantilla en varias cuentas en lugar de implementar la solución de forma individual en cada cuenta de miembro.
Herramientas
Servicios de AWS
Amazon le CloudWatch ayuda a monitorizar las métricas de sus recursos de AWS y las aplicaciones que ejecuta en AWS en tiempo real.
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.
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 Organizations es un servicio de administración de cuentas que le permite agrupar varias cuentas de AWS en una organización que usted crea y administra de manera centralizada.
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 Storage Service (Amazon S3) es un servicio de almacenamiento de objetos basado en la nube que le ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.
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.
Amazon Simple Notification Service (Amazon SNS) le permite coordinar y administrar el intercambio de mensajes entre publicadores y clientes, incluidos los servidores web y las direcciones de correo electrónico.
Amazon Virtual Private Cloud (Amazon VPC) le permite lanzar recursos de AWS en una red virtual que haya definido. Esta red virtual es similar a la red tradicional que utiliza en su propio centro de datos, con los beneficios de usar la infraestructura escalable de AWS.
Los puntos de enlace de Amazon VPC proporcionan una interfaz para conectarse a los servicios impulsados por AWS PrivateLink, incluidos muchos servicios de AWS. Para cada subred que especifique de su VPC, se crea una interfaz de red de punto de conexión en la subred y se le asigna una dirección IP privada del intervalo de direcciones de la subred.
Código
CloudFormation Las plantillas de AWS, los scripts de Python y la documentación de runbook necesarios están disponibles en el repositorio de rotación de claves de GitHub IAM
Plantilla | Implementar en | Notas |
| Cuenta de implementación | Esta es la plantilla principal de la solución. |
| Cuentas de uno o varios miembros en las que desee rotar las credenciales | Puede utilizar conjuntos de CloudFormation pilas para implementar esta plantilla en varias cuentas. |
| Cuenta central/gestión | Utilice esta plantilla para mantener un inventario de las cuentas en AWS Organizations. |
| Cuenta de implementación | Utilice esta plantilla para automatizar la creación de puntos de conexión solo si desea ejecutar las funciones de Lambda en una VPC (establezca el parámetro |
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Elija su bucket de S3 de implementación. | Inicie sesión en la consola de administración de AWS de su cuenta, abra la consola de Amazon S3 | Arquitecto de la nube |
Clonar el repositorio. | Clona el repositorio de rotación de claves de GitHub IAM | Arquitecto de la nube |
Carguar archivos en el bucket de S3. | Suba los archivos clonados a su bucket de S3. Use la siguiente estructura de carpetas predeterminada para copiar y pegar todos los archivos y directorios clonados: notaPuede personalizar esta estructura de carpetas en las CloudFormation plantillas. | Arquitecto de la nube |
Modifique la plantilla de correo electrónico. | Modifique la plantilla de correo electrónico | Arquitecto de la nube |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Inicie la CloudFormation plantilla para la rotación de claves. |
| Arquitecto de la nube |
Inicie la CloudFormation plantilla para los roles asumidos. |
| Arquitecto de la nube |
Inicie la CloudFormation plantilla para el inventario de cuentas. |
| Arquitecto de la nube |
Inicie la CloudFormation plantilla para los puntos finales de la VPC. | Esta tarea es opcional.
| Arquitecto de la nube |
Recursos relacionados
Prácticas recomendadas de seguridad en IAM (documentación de IAM)
AWS Organizations y roles vinculados al servicio (documentación sobre AWS Organizations)
Selección de una plantilla de pila (documentación) CloudFormation
Trabajar con AWS CloudFormation StackSets (CloudFormation documentación)