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.
Administre los conjuntos de AWS permisos de forma dinámica mediante Terraform
Vinicius Elias y Marcos Vinicius Pinto Jordao, Amazon Web Services
Resumen
AWS IAM Identity Center mejora AWS Identity and Access Management (IAM) al proporcionar un centro centralizado para administrar el acceso de inicio de sesión único a las aplicaciones en la nube Cuentas de AWS y las aplicaciones en la nube. Sin embargo, la administración manual de los conjuntos de permisos de IAM Identity Center puede resultar cada vez más compleja y propensa a errores a medida que su organización crece. Esta complejidad puede provocar posibles brechas de seguridad y sobrecarga administrativa.
Esta solución le permite administrar los conjuntos de permisos mediante la infraestructura como código (IaC) con una canalización de integración y entrega continuas (CI/CD) creada con Servicios de AWS nativos. Permite una integración perfecta del mecanismo de asignación de conjuntos de permisos con los eventos AWS Control Tower del ciclo de vida o con un entorno de Account Factory for Terraform (AFT). Este enfoque proporciona configuraciones de identidad dinámicas tanto para las nuevas como para las existentes Cuentas de AWS.
EventBridge Las reglas de Amazon supervisan Cuenta de AWS la creación y las actualizaciones, lo que ayuda a que las configuraciones de identidad permanezcan sincronizadas con la estructura de la organización. Tras crear o actualizar las cuentas en AWS Control Tower o en AFT, se activa la canalización. Evalúa un conjunto de archivos JSON con definiciones de conjuntos de permisos y reglas de asignación. Luego, la canalización aplica y sincroniza la configuración en todas las cuentas.
A continuación, se enumeran las ventajas de este enfoque:
Coherencia: elimina las desviaciones de configuración manual en toda AWS la organización
Auditabilidad: mantiene un historial completo de todos los cambios en la administración de identidades.
Escalabilidad: aplica automáticamente las configuraciones a medida que su AWS entorno crece
Seguridad: reduce los errores humanos en la asignación de permisos.
Cumplimiento: facilita el cumplimiento de los requisitos reglamentarios mediante cambios documentados y reglas de asignación.
Requisitos previos y limitaciones
Un entorno de múltiples cuentas con AWS Control Tower y AWS Organizations configuración. Opcionalmente, puede usar AFT con AWS Control Tower.
Un administrador delegado del IAM Identity Center Cuenta de AWS para recibir la solución. Para obtener más información, consulte Delegated administration en la documentación de IAM Identity Center.
Un repositorio del sistema de control de versiones (VCS) para gestionar el código principal. Para ver un ejemplo, consulte el repositorio de la GitHub solución.
AWS Recursos necesarios para la administración del backend de Terraform, como un bucket de Amazon Simple Storage Service (Amazon S3) y una tabla de Amazon DynamoDB.
Limitaciones
La canalización utiliza recursos AWS nativos y Terraform de código abierto. La canalización no está preparada para hacer llamadas a ecosistemas de terceros.
Algunos Servicios de AWS no están disponibles en todos Regiones de AWS. Para obtener información sobre la disponibilidad en regiones, consulte AWS Services by Region
. Para ver los puntos de conexión específicos, consulte Service endpoints and quotas y elija el enlace del servicio.
Arquitectura
En el siguiente diagrama se muestran los componentes y el flujo de trabajo de este patrón.

AWS Control Tower los eventos fluyen
La solución comienza con la integración de los eventos que provienen de AFT AWS Control Tower o de AFT. La elección entre un servicio u otro se lleva a cabo en el momento de la implementación mediante la definición de variables. Independientemente del método utilizado, la canalización se activa cada vez que se crea o actualiza una cuenta. La canalización reconcilia las políticas almacenadas en el repositorio de administración de conjuntos de permisos.
Los siguientes son los eventos AWS Control Tower del ciclo de vida:
CreateManagedAccount: cuando se crea una cuenta nueva.UpdateManagedAccount: cuando se actualiza una cuenta existente.
Enrutamiento de eventos
EventBridge sirve como servicio central de procesamiento de eventos, capturando los eventos generados en la AWS Control Tower cuenta. Cuando se producen eventos, los dirige de EventBridge forma inteligente a un bus de eventos centralizado en la cuenta de la solución. AWS Control Tower los eventos del ciclo de vida siguen patrones de enrutamiento distintos. Si se define AFT como la fuente del evento, la cuenta de administración de AFT gestiona los eventos en lugar de la AWS Control Tower cuenta. Esta arquitectura basada en eventos permite respuestas automatizadas a los cambios organizativos sin intervención manual.
Proceso de integración de AFT
Cuando los eventos AWS Control Tower del ciclo de vida llegan a la cuenta de administración de la AFT, activan automáticamente varios procesos posteriores que son intrínsecos a la AFT. Una vez que se completa el flujo de trabajo de personalización de la cuenta de AFT, publica un mensaje en el tema dedicado de Amazon Simple Notification Service (Amazon SNS) aft-notifications. Ese tema activa la aft-new-account-forward-event AWS Lambda función que implementa esta solución. La función de Lambda envía el evento al bus de eventos de la cuenta de la solución, donde se utiliza para iniciar la canalización.
Canalización de infraestructura como código
La canalización de soluciones funciona como un mecanismo de implementación totalmente automatizado. El AWS CodePipeline servicio monitorea continuamente el repositorio para detectar cambios. Al detectar nuevas confirmaciones, inicia automáticamente el flujo de trabajo de implementación e inicia un proceso secuencial que incluye las fases de validación y ejecución. El sistema ejecuta plan las operaciones de Terraform para identificar los cambios propuestos, seguidas de los apply comandos de Terraform para implementar esos cambios en el AWS entorno. En particular, la canalización se ejecuta sin ninguna puerta de aprobación manual. Este enfoque permite implementar rápidamente los cambios en la infraestructura y, al mismo tiempo, mantener la auditabilidad mediante los registros de la canalización y los archivos de estado de Terraform.
La canalización se aprovecha AWS CodeBuild para ejecutar las operaciones de Terraform en un entorno controlado con los permisos adecuados. Mediante este enfoque de IaC, la canalización puede efectuar operaciones integrales de administración de permisos, tales como las siguientes:
Creación de conjuntos de permisos nuevos.
Actualización de conjuntos de permisos existentes.
Eliminación de conjuntos de permisos innecesarios.
Gestione la asignación de estos permisos entre las cuentas y los grupos de las AWS organizaciones.
Para mantener la coherencia de la infraestructura y evitar cambios conflictivos, la solución implementa el sistema de administración de estados del backend de Terraform mediante un bucket de Amazon S3 y una tabla dedicada de Amazon DynamoDB. Este enfoque proporciona una ubicación de almacenamiento persistente para los archivos de estado de Terraform y mecanismos de bloqueo de estado para evitar modificaciones simultáneas en los mismos recursos.
El código principal de Terraform usa el módulo oficial de AWS permission-sets Terraform. Este módulo puede administrar dinámicamente los conjuntos de permisos en IAM Identity Center basándose en plantillas de conjuntos de permisos.
Administración de control de origen
Las plantillas del conjunto de permisos (archivos JSON) residen en un sistema de control de versiones externo, por ejemplo GitHub, que proporciona un repositorio centralizado para las configuraciones de administración de identidades. Este enfoque establece una fuente única de información fiable para las definiciones de conjuntos de permisos y, al mismo tiempo, permite el desarrollo colaborativo mediante prácticas estándar de revisión del código. Los usuarios autorizados pueden confirmar cambios en estas plantillas siguiendo los procesos de administración de cambios organizativos. Estas confirmaciones son el principal desencadenante de la canalización de implementación automatizada, que inicia el proceso de actualización de la infraestructura.
Para ver un ejemplo de cómo configurar los conjuntos de permisos mediante el archivo JSON en el repositorio, consulte Información adicional.
Tools (Herramientas)
Servicios de AWS
AWS CodeBuild es un servicio de compilación completamente administrado que le permite compilar código fuente, poner en marcha pruebas unitarias y producir artefactos listos para implementar.
AWS CodeConnectionspermite que AWS los recursos y servicios, por ejemplo CodePipeline, se conecten a repositorios de código externos, por ejemplo. GitHub
AWS CodePipeline permite diseñar y configurar rápidamente las diferentes etapas de un proceso de lanzamiento de software y automatizar los pasos necesarios para lanzar los cambios en el software de manera continua.
AWS Command Line Interface (AWS CLI) es una herramienta de código abierto que le ayuda a interactuar Servicios de AWS mediante comandos en el shell de la línea de comandos.
AWS Control Towerle ayuda a configurar y administrar un entorno de AWS múltiples cuentas, siguiendo las mejores prácticas prescriptivas.
Amazon DynamoDB es un servicio de base de datos de NoSQL completamente administrado que ofrece un rendimiento rápido, predecible y escalable.
Amazon EventBridge es un servicio de bus de eventos sin servidor que le ayuda a conectar sus aplicaciones con datos en tiempo real de diversas fuentes. Por ejemplo, AWS Lambda funciones, puntos de enlace de invocación HTTP que utilizan destinos de API o buses de eventos en otros. Cuentas de AWS
AWS Identity 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.
AWS IAM Identity Centerle ayuda a gestionar de forma centralizada el acceso mediante el inicio de sesión único (SSO) a todas sus aplicaciones y a las de la nube. Cuentas de AWS
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 Organizationses un servicio de administración de cuentas que le ayuda a consolidar múltiples cuentas Cuentas de AWS en una organización que puede crear y administrar de forma centralizada.
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. Permite las notificaciones push para los eventos de administración de cuentas, lo que garantiza que las partes pertinentes estén informadas de los cambios o acciones importantes que se produzcan en el sistema.
Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos basado en la nube que lo ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.
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
Prácticas recomendadas
Fije siempre las versiones de los módulos y proveedores de Terraform que se utilizan para ejecutar el código en producción.
Utilice una herramienta de análisis de código estático, como Checkov
, para analizar el código y, a continuación, resolver los problemas de seguridad. Siga el principio de privilegio mínimo y conceda los permisos mínimos necesarios para llevar a cabo una tarea. Para obtener más información, consulte Otorgar privilegio mínimo y Prácticas recomendadas de seguridad en la documentación de IAM.
Epics
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Crear los recursos del backend de Terraform. | Si aún no ha creado sus AWS recursos de backend de Terraform, siga estos pasos para crear un bucket de Amazon S3 (
| Administrador de AWS |
Cree un rol multicuenta. | Debe proporcionar una función de IAM multicuenta en la configuración del proveedor de
En este ejemplo, se utiliza la política de IAM AWS gestionada. AdministratorAccess Si lo prefiere, puede utilizar una política más específica. | Administrador de AWS |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Crear un repositorio dedicado. | En esta tarea se presupone que está utilizando GitHub. Cree un repositorio dedicado para almacenar el código principal de Terraform y los archivos JSON de la plantilla del conjunto de permisos. | DevOps ingeniero |
Preparar el código del conjunto de permisos. | Para obtener información sobre cómo estructurar los siguientes archivos, consulte el código de ejemplo ├── main.tf ├── outputs.tf ├── providers.jinja └── templates Copie el contenido, conserve los valores de | DevOps ingeniero |
Confirmar los cambios. | Confirme e inserte los cambios en el repositorio que creó anteriormente. Guarde el nombre del repositorio y su GitHub organización, por ejemplo, | DevOps ingeniero |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Descargar el contenido. | Descargue (clone) el contenido del repositorio | DevOps ingeniero |
Completar las variables. | Cree un archivo
Para obtener información sobre opciones de variables adicionales, consulta el archivo variables.tf | DevOps ingeniero |
Ajustar la configuración del backend de Terraform. | En el archivo
Si lo prefiere, puede usar su propia configuración de backend de Terraform. | DevOps ingeniero |
Ajustar la configuración del proveedor de Terraform. | En el archivo
| DevOps ingeniero |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Seleccione el Cuenta de AWS. | Le recomendamos implementar la solución en la cuenta de administrador delegado de IAM Identity Center. Sin embargo, también puede implementarlo en la cuenta AWS Organizations de administración. Para iniciar sesión en la cuenta seleccionada en la misma región que la instancia de IAM Identity Center, utilice la AWS CLI. Asegúrese de que el rol de IAM que está utilizando tiene permiso para asumir el rol que se especificó para el proveedor | Administrador de AWS |
Ejecutar Terraform manualmente. | Para inicializar, planificar y aplicar las configuraciones, ejecute los siguientes comandos de Terraform en el orden que aparecen:
| DevOps ingeniero |
Compruebe los resultados de la implementación. | En la cuenta de administrador delegado de IAM Identity Center, compruebe que se haya creado la canalización de | AWS DevOps |
Finalice la CodeConnections configuración. | Para finalizar la CodeConnections configuración, siga los siguientes pasos:
La canalización ahora debería tener acceso al repositorio de conjuntos de permisos. Para obtener instrucciones detalladas, consulte Update a pending connection en la documentación de la consola de herramientas para desarrolladores. | AWS DevOps |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Ejecute la canalización mediante AWS Control Tower las actualizaciones de AFT. | Una vez creada o modificada una cuenta mediante AWS Control Tower AFT (según el tipo de eventos del ciclo de vida que elijas), se inicia la canalización. | Administrador de AWS |
Cambiar el código para ejecutar la canalización. | Tras cambiar el código y confirmarlo en la ramificación | AWS DevOps |
Ejecutar la canalización manualmente. | Para iniciar la canalización manualmente, utilice la función de cambio de versión de AWS CodePipeline. | AWS DevOps |
Resolución de problemas
| Problema | Solución |
|---|---|
Acceso denegado | Compruebe que cuente con los permisos necesarios para implementar la solución. |
CodeConnections problemas |
|
Problemas de ejecución de las canalizaciones |
|
Problemas de implementación de los conjuntos de permisos |
|
Recursos relacionados
Servicio de AWS documentación
Administre Cuentas de AWS con conjuntos de permisos (documentación del IAM Identity Center)
Otros recursos
AWS Módulo de conjuntos de permisos
(Terraform)
Información adicional
Archivo JSON con un ejemplo de conjunto de permisos
En el siguiente ejemplo se muestra cómo configurar un conjunto de permisos mediante el archivo JSON del repositorio:
{ "Name": "ps-billing", // Permission set identifier "Comment": "Sample permission set for billing access", // Comment to document the purpose of the permission set "Description": "Billing access in AWS", // Detailed description "SessionDuration": "PT4H", // Session duration = 4 hours (ISO 8601 format) "ManagedPolicies": [ // List of AWS IAM managed policies "arn:aws:iam::aws:policy/job-function/Billing", "arn:aws:iam::aws:policy/job-function/SupportUser", "arn:aws:iam::aws:policy/AWSSupportAccess", "arn:aws:iam::aws:policy/job-function/ViewOnlyAccess" ], "CustomerPolicies": [], // References to IAM policies previously created "CustomPolicy": {}, // Inline IAM policy defined directly in the permission set "PermissionBoundary": { // AWS or customer managed IAM policy to be used as boundary "ManagedPolicy": "", "CustomerPolicy": "" }, "Assignments": [ // Define the assignment rules { "all_accounts": true, // Apply to ALL active AWS accounts in organization "principal": "G_BILLING_USERS", // Group/user name in Identity Center "type": "GROUP", // Can be "GROUP" or "USER" "account_id": [], // List of AWS account ID (empty since all_accounts=true) "account_ou": [], // List of AWS Organizational Unit IDs with target AWS accounts "account_tag": [] // List of tags (key:value) to match AWS Organization accounts tags } ] }
Para obtener más información, consulte el esquema JSON en la documentación del módulo AWS Permission Sets
Consejos
Puede usar los bloques de importación
de Terraform para importar un conjunto de permisos existente a la solución. Puede usar AFT para implementar la canalización del conjunto de AWS permisos en una cuenta delegada. Para obtener más información, consulte AFT Blueprints
.