Gire automáticamente las claves IAM de acceso de los usuarios a escala con AWS Organizations and AWS Secrets Manager - Recomendaciones de AWS

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

importante

Como 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

Almacenar IAM las credenciales en una cuenta de miembro

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

Almacenar IAM las credenciales en la cuenta de administración

Los diagramas muestran el siguiente flujo de trabajo:

  1. Un EventBridge evento inicia una función account_inventory Lambda cada 24 horas.

  2. 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. 

  3. La función account_inventory Lambda inicia una función access_key_auto_rotation Lambda para cada ID de AWS cuenta y le pasa los metadatos para su procesamiento adicional.

  4. 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. 

  5. 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.

  6. 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.

  7. 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 marca StoreSecretsInCentralAccount está establecida en True), las credenciales se almacenan en Secrets Manager, en la cuenta de administración. 

  8. 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. 

  9. 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 Lambda access_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 claves y se enumeran en la sección Código. En AWS Organizations, puede utilizarla CloudFormation StackSetspara implementar la ASA-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. Las plantillas se implementan de la siguiente manera.

Plantilla

Implementar en

Notas

ASA-iam-key-auto-rotation-and-notifier-solution.yaml

Cuenta de implementación

Esta es la plantilla principal de la solución.

ASA-iam-key-auto-rotation-iam-assumed-roles.yaml

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.

ASA-iam-key-auto-rotation-list-accounts-role.yaml

Cuenta central/gestión

Utilice esta plantilla para mantener un inventario de las cuentas en AWS Organizations.

ASA-iam-key-auto-rotation-vpc-endpoints.yaml

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 RunLambdaInVPC el parámetro en True en la plantilla principal).

Epics

TareaDescripciónHabilidades 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 y, a continuación, elija el bucket de S3 para la implementación. Si desea implementar la solución para varias cuentas en AWS Organizations, inicie sesión en la cuenta de administración de su organización.

Arquitecto de la nube

Clonar el repositorio.

Clona el repositorio de rotación de GitHub IAM claves en tu escritorio local.

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: asa/asa-iam-rotation

nota

Puede 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 iam-auto-key-rotation-enforcement.html (que se encuentra en la carpeta template) según sus necesidades. Sustituya [Department Name Here] al final de la plantilla por el nombre de su departamento.

Arquitecto de la nube
TareaDescripciónHabilidades requeridas

Inicie la CloudFormation plantilla para la rotación de claves.

  1. Inicie la plantilla ASA-iam-key-auto-rotation-and-notifier-solution.yaml en la cuenta de implementación. Para obtener más información, consulte Selección de una plantilla de pila en la CloudFormation documentación.

  2. Especifique los valores de los parámetros, entre los que se incluyen:

    • CloudFormation Nombre del depósito de S3 (S3BucketName): el nombre del depósito de S3 de despliegue que contiene el código Lambda.

    • CloudFormation Prefijo del bucket de S3 (S3BucketPrefix): prefijo del bucket de S3.

    • Nombre del IAM rol asumido (IAMRoleName): el nombre del rol que asumirá la función key-rotation Lambda al girar las teclas.

    • IAMNombre del rol de ejecución (ExecutionRoleName): el nombre del rol de IAM ejecución que utiliza la función key-rotation Lambda.

    • Nombre de la función de ejecución de inventario (InventoryExecutionRoleName): nombre de la función de IAM ejecución que utiliza la función account_inventory Lambda.

    • Marca de ejecución en seco (modo auditoría) (DryRunFlag): establézcalo en True para activar el modo de auditoría (predeterminado). Configúrelo en False para activar el modo de aplicación.

    • Cuenta para enumerar las cuentas de la organización (OrgListAccount): el ID de cuenta de la cuenta central o de administración que se utilizará para enumerar las cuentas de la organización.

    • Nombre del rol de la lista de cuentas (OrgListRole): el nombre del rol que se utilizará para enumerar las cuentas de la organización.

    • Marca de almacenamiento de secretos para la cuenta central (StoreSecretsInCentralAccount): se establece en True para almacenar los secretos en la cuenta central. Configúrelo en False para almacenar los secretos en la cuenta correspondiente.

    • Regiones para replicar las credenciales (CredentialReplicationRegions): las AWS regiones en las que desea replicar las credenciales (Secrets Manager), separadas por comas; por ejemplo,us-east-2,us-west-1,us-west-2. Omita la región en la que está creando la pila.

    • Ejecutar Lambda en VPC (RunLambdaInVpc): establézcalo en True para ejecutar las funciones de Lambda en un lugar especificado. VPC Debe tener los VPC puntos finales creados y conectar una NAT puerta de enlace a la subred que contiene la función Lambda. Para más información, consulte el artículo de re:Post sobre esta opción.

    • VPCID para las funciones de Lambda (VpcId), VPCCIDRpara la regla del grupo de seguridad (VpcCidr) y el ID de subred para las funciones de Lambda (SubnetId): proporcione información sobre la subred y VPCCIDR, si se establece en True. RunLambdaInVpc

    • Dirección de correo electrónico del administrador (AdminEmailAddress): una dirección de correo electrónico válida a la que enviar notificaciones.

    • AWSID de organización (AWSOrgID): el identificador único de su organización. Este identificador comienza con o- y va seguido de entre 10 y 32 letras en minúscula o dígitos.

    • Nombre del archivo de plantilla de correo electrónico [Modo auditoría] (EmailTemplateAudit) y [Modo obligatorio] (EmailTemplateEnforce): nombre del archivo de la HTML plantilla de correo electrónico que el notifier módulo enviará para los modos de auditoría y cumplimiento.

    • SMTPNombre del SSM parámetro de usuario (SMTPUserParamName) y nombre del SSM parámetro de SMTP contraseña (SMTPPasswordParamName): información de usuario y contraseña del Protocolo simple de transferencia de correo (SMTP). 

Arquitecto de la nube

Inicie la CloudFormation plantilla para los roles asumidos.

  1. En la AWS CloudFormation consola, inicie la ASA-iam-key-auto-rotation-iam-assumed-roles.yaml plantilla de cada cuenta en la que desee rotar las claves. Si tiene más de una cuenta, puede implementar la CloudFormation plantilla principal en su cuenta de administración como una pila e implementar la ASA-iam-key-auto-rotation-iam-assumed-roles.yaml plantilla con los conjuntos de CloudFormation pilas en todas las cuentas requeridas. Para obtener más información, consulte Trabajar con AWS CloudFormation StackSets ella en la CloudFormation documentación.

  2. Especifique los valores de los siguientes parámetros:

    • Nombre del IAM rol asumido (IAMRoleName): nombre del IAM rol que asumirá la función Lambdaaccess_key_auto_rotation. Puede mantener el valor predeterminado.

    • IAMNombre del rol de ejecución (ExecutionRoleName): el IAM rol que asumirá el rol de subcuenta para ejecutar la función Lambda.

    • ID de AWS cuenta principal (PrimaryAccountID): el ID de AWS cuenta en el que se implementará la plantilla principal. 

    • IAMGrupo de exención (IAMExemptionGroup): el nombre del IAM grupo que se utiliza para facilitar IAM las cuentas que desea excluir de la rotación automática de claves.

Arquitecto de la nube

Abre la CloudFormation plantilla para el inventario de cuentas.

  1. Inicie la plantilla ASA-iam-key-auto-rotation-list-accounts-role.yaml en la cuenta central o de administración

  2. Especifique los valores de los siguientes parámetros:

    • Nombre de IAM rol asumido (IAMRoleName): nombre del IAM rol que asumirá la access_key_auto_rotation función Lambda.

    • IAMNombre de la función de ejecución de la cuenta Lambda (AccountExecutionRoleName): nombre de la IAM función que asumirá la función Lambdanotifier.

    • IAMNombre de la función de ejecución para la rotación Lambda (RotationExecutionRoleName): nombre de la IAM función que asumirá la función Lambdaaccess_key_auto_rotation.

    • ID de AWS cuenta principal (PrimaryAccountID): el ID de AWS cuenta en el que se implementará la plantilla principal.

Arquitecto de la nube

Inicie la CloudFormation plantilla para los VPC puntos finales.

Esta tarea es opcional.

  1. Inicie la plantilla ASA-iam-key-auto-rotation-vpc-endpoints.yaml en la cuenta de implementación. 

  2. Especifique los valores de los siguientes parámetros:

    • VPCID (pVpcId), ID de subred (pSubnetId) y CIDRrango para VPC (pVPCCidr): proporcionan información sobre la VPC subred y. CIDR

    • Establezca el parámetro de cada VPC punto final en True. Si ya tiene puntos de conexión, puede elegir False.

Arquitecto de la nube

Recursos relacionados