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.
Gire automáticamente las claves IAM de acceso de los usuarios a escala con AWS Organizations and AWS Secrets Manager
Creada por Tracy Hickey (AWS), Gaurav Verma (AWS), Laura Seletos (), Michael Davie (AWS) y Arvind Patel (AWS) AWS
Resumen
importanteComo práctica recomendada, se AWS recomienda utilizar funciones de AWS Identity and Access Management (IAM) en lugar de IAM usuarios con credenciales de larga duración, como claves de acceso. El enfoque documentado en este patrón está pensado únicamente para implementaciones antiguas que requieren credenciales de larga duración AWSAPI. Para estas implementaciones, le recomendamos que considere opciones para usar credenciales a corto plazo, como el uso de perfiles de instancia de Amazon Elastic Compute Cloud (AmazonEC2) o IAMRoles 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, eres responsable de actualizar periódicamente el código o la configuración de tu aplicación antigua para usar las credenciales rotadasAPI. |
Las claves de acceso son credenciales a largo plazo para un IAM usuario. La rotación periódica de IAM las credenciales ayuda a evitar que un conjunto de claves de IAM acceso comprometidas acceda a los componentes de su AWS cuenta. La rotación de IAM credenciales también es una parte importante de las mejores prácticas de seguridad en IAM.
Este patrón le ayuda a rotar automáticamente las claves de IAM acceso mediante AWS CloudFormation plantillas, que se proporcionan en el repositorio de rotación de GitHub IAM claves
El patrón admite la implementación en una o varias cuentas. Si usa AWS Organizations, esta solución identifica todas las AWS cuentas de IDs su organización y escala dinámicamente a medida que se eliminan cuentas o se crean cuentas nuevas. La función AWS Lambda centralizada utiliza un IAM rol asumido para ejecutar localmente las funciones de rotación en varias cuentas que seleccione.
Las nuevas claves de IAM acceso se generan cuando las claves de acceso existentes tienen 90 días de antigüedad.
Las nuevas claves de acceso se guardan en secreto en AWS Secrets Manager. Una política basada en recursos permite que solo el IAMdirector especificado 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 AWS cuenta 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 AWS cuenta.
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 AWS cuenta activa.
AWSOrganizations, configuradas y puestas en marcha (consulte el tutorial).
Permisos para consultar AWS Organizations desde tu cuenta de administración. Para obtener más información, consulte AWSOrganizaciones y funciones vinculadas a servicios en la documentación de AWS Organizations.
Un IAM director que tiene permisos para lanzar la AWS CloudFormation plantilla y los recursos asociados. Para obtener más información, consulte Otorgar permisos autogestionados en la AWS CloudFormation documentación.
Un bucket de Amazon Simple Storage Service (Amazon S3) para implementar los recursos.
Amazon Simple Email Service (AmazonSES) salió del entorno limitado. Para obtener más información, consulta Cómo salir del entorno de pruebas de SES Amazon en la SES documentación de Amazon.
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 AmazonSES, AWS Systems Manager, AWS Security Token Service (AWSSTS), Amazon S3 y AWS Secrets Manager. (Puede ejecutar la plantilla de puntos de enlace que se proporciona en el repositorio de rotación de GitHub IAM claves
para crear estos puntos de enlace).
El usuario y la contraseña del Simple Mail Transfer Protocol (SMTP) almacenados en AWS los parámetros (SSMparámetros) de Systems Manager. Los parámetros deben coincidir con los parámetros CloudFormation de la 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 AWS cuentasIDs, nombres de cuentas y correos electrónicos de cuentas.
La función
account_inventory
Lambda inicia una funciónaccess_key_auto_rotation
Lambda para cada ID de AWS cuenta y le pasa los metadatos para su procesamiento adicional.La función
access_key_auto_rotation
Lambda utiliza un IAM rol asumido para acceder al ID de la AWS cuenta. El script Lambda ejecuta una auditoría de todos los usuarios y sus claves de IAM acceso de la cuenta.Si la antigüedad de la clave de IAM acceso no ha superado el umbral de las mejores prácticas, la función Lambda no realiza ninguna otra acción.
Si la antigüedad de la clave de IAM acceso ha superado el umbral de las mejores prácticas, la función
access_key_auto_rotation
Lambda determina qué acción de rotación se debe realizar.Cuando es necesario realizar alguna acción, la función
access_key_auto_rotation
Lambda 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 permite que solo el IAM principal especificado acceda al secreto y lo recupere. 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 identificador de la AWS cuenta, 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 AWS regiones. 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 IAM acceso 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 GitHub IAM clavesASA-iam-key-auto-rotation-iam-assumed-roles.yaml
CloudFormation plantilla en varias cuentas en lugar de implementar la solución individualmente en cada cuenta de miembro.
Herramientas
Servicios de AWS
Amazon le CloudWatch ayuda a supervisar las métricas de sus AWS recursos y las aplicaciones en las que se ejecuta AWS en tiempo real.
AWSIdentity and Access Management (IAM) le ayuda a administrar de forma segura el acceso a sus AWS recursos al controlar quién está autenticado y autorizado a usarlos.
AWSLambda es un servicio informático que le ayuda a ejecutar código sin necesidad de aprovisionar o 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.
AWSOrganizations es un servicio de administración de cuentas que le ayuda a consolidar varias AWS cuentas en una organización que usted crea y administra de forma centralizada.
AWSSecrets Manager le ayuda a reemplazar las credenciales codificadas en su código, incluidas las contraseñas, con una API llamada a 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 (AmazonSES) le ayuda a enviar y recibir correos electrónicos utilizando sus propias direcciones de correo electrónico y dominios.
Amazon Simple Notification Service (AmazonSNS) le ayuda a coordinar y gestionar el intercambio de mensajes entre editores y clientes, incluidos los servidores web y las direcciones de correo electrónico.
Amazon Virtual Private Cloud (AmazonVPC) le ayuda a lanzar AWS recursos en una red virtual que haya definido. Esa 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.
VPCLos puntos de enlace de Amazon proporcionan una interfaz para conectarse a los servicios impulsados por AWS PrivateLink, incluidos muchos AWS servicios. Para cada subred que especifique desde la suyaVPC, se crea una interfaz de red de punto final en la subred y se le asigna una dirección IP privada del rango de direcciones de la subred.
Código
AWS CloudFormation Las plantillas, los scripts de Python y la documentación del manual necesarios están disponibles en el repositorio de rotación de GitHub IAM claves
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 | Puedes usar 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 finales solo si desea ejecutar las funciones Lambda en VPC un (establezca |
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Elija su bucket de S3 de implementación. | Inicie sesión en la consola AWS de administración de su cuenta, abra la consola de Amazon S3 | Arquitecto de la nube |
Clonar el repositorio. | Clona el repositorio de rotación de GitHub IAM claves | 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 |
Abre la CloudFormation plantilla para el inventario de cuentas. |
| Arquitecto de la nube |
Inicie la CloudFormation plantilla para los VPC puntos finales. | Esta tarea es opcional.
| Arquitecto de la nube |
Recursos relacionados
Prácticas recomendadas de seguridad en IAM (IAMdocumentación)
AWSOrganizaciones y funciones vinculadas a servicios (documentación de AWS Organizations)
Selección de una plantilla de pila (documentación) CloudFormation
Trabajar con AWS CloudFormation StackSets (CloudFormation documentación)