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 gestionar el acceso mediante el inicio de sesión único a las aplicaciones en la nube y las aplicaciones en la nube. Cuentas de AWS Sin embargo, la gestión manual de los conjuntos de permisos del 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 sobrecargas administrativas.
Esta solución le permite administrar los conjuntos de permisos mediante la infraestructura como código (IaC) mediante un proceso de integración y entrega continuas (CI/CD) creado con tecnología nativa. Servicios de AWS 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.
Este enfoque ofrece las siguientes ventajas:
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 el entorno crece AWS
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 Administración delegada en la documentación del Centro de identidades de IAM.
Un repositorio del sistema de control de versiones (VCS) para gestionar el código principal. Para ver un ejemplo, consulte el GitHub repositorio
de la 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 realizar llamadas a ecosistemas de terceros.
Algunas Servicios de AWS no están disponibles en todos Regiones de AWS. Para ver la disponibilidad regional, consulta AWS Servicios por región
. Para conocer puntos de enlace específicos, consulte Puntos de enlace y cuotas del servicio y elija el enlace para el servicio.
Arquitectura
El siguiente diagrama muestra los componentes y el flujo de trabajo de este patrón.

AWS Control Tower flujo de eventos
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 uno u otro servicio se realiza en el momento de la implementación mediante una 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 del AWS Control Tower ciclo de vida:
CreateManagedAccount
— Cuando se crea una nueva cuentaUpdateManagedAccount
— 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 múltiples procesos posteriores que son intrínsecos a la AFT. Una vez finalizado el flujo de trabajo de personalización de la cuenta AFT, publica un mensaje en el tema dedicado al aft-notifications
Amazon Simple Notification Service (Amazon SNS). Ese tema activa la aft-new-account-forward-event
AWS Lambda función que implementa esta solución. La función Lambda envía el evento al bus de eventos de la cuenta de la solución, donde se utiliza para iniciar la canalización.
La infraestructura como canalización de código
La cartera de soluciones funciona como un mecanismo de despliegue 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 despliegue 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 entorno. AWS En particular, el oleoducto funciona sin ninguna compuerta 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 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 realizar operaciones integrales de administración de permisos, que incluyen:
Cree nuevos conjuntos de permisos.
Actualice los conjuntos de permisos existentes.
Elimine los 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 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 AWS permission-sets
de Terraform. Este módulo puede gestionar dinámicamente los conjuntos de permisos en el Centro de Identidad de IAM, basándose en plantillas de conjuntos de permisos.
Gestión del control de fuentes
Las plantillas de conjuntos 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 realizar cambios en estas plantillas siguiendo los procesos de gestión de cambios organizativos. Estas confirmaciones son el principal desencadenante del proceso 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 del repositorio, consulta Información adicional.
Herramientas
Servicios de AWS
AWS CodeBuildes un servicio de compilación totalmente gestionado que le ayuda a compilar el código fuente, ejecutar pruebas unitarias y producir artefactos listos para su despliegue.
AWS CodeConnectionspermite que AWS los recursos y servicios, por ejemplo CodePipeline, se conecten a repositorios de código externos, por ejemplo. GitHub
AWS CodePipelinele ayuda a modelar y configurar rápidamente las diferentes etapas de una versión de software y a automatizar los pasos necesarios para publicar los cambios de software de forma continua.
AWS Command Line Interface (AWS CLI) es una herramienta de código abierto que le ayuda a interactuar Servicios de AWS mediante los comandos de su consola de 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 finales 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 enviar notificaciones automáticas para los eventos de administración de cuentas, lo que garantiza que las partes relevantes 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 le 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.
Usa una herramienta de análisis de código estático, como Checkov
, para escanear tu código y resolver los problemas de seguridad. Siga el principio de privilegios mínimos y conceda los permisos mínimos necesarios para realizar 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 |
---|---|---|
Cree los recursos de 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 |
---|---|---|
Cree un repositorio dedicado. | En esta tarea se presupone que estás 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 |
Prepare 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 ·─ salida.tf ·─ proveedors.jinja ⇒ ─ plantillas Copia el contenido, conserva los | DevOps ingeniero |
Confirme sus 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 |
---|---|---|
Descarga el contenido. | Descargue (clone) el contenido del repositorio | DevOps ingeniero |
Cumpla con las variables. | Cree un
Para obtener información sobre opciones de variables adicionales, consulta el archivo variables.tf | DevOps ingeniero |
Ajuste la configuración del backend de Terraform. | En el
Si lo prefiere, puede usar su propia configuración de backend de Terraform. | DevOps ingeniero |
Ajuste la configuración del proveedor de Terraform. | En el
| DevOps ingeniero |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Seleccione el Cuenta de AWS. | Le recomendamos que implemente la solución en la cuenta de administrador delegado del IAM Identity Center. Sin embargo, también puede implementarla en la cuenta de AWS Organizations administración. Para iniciar sesión en la cuenta seleccionada en la misma región que la instancia del IAM Identity Center, utilice la AWS CLI. Asegúrese de que la función de IAM que está utilizando tiene permiso para asumir la función especificada para el | Administrador de AWS |
Ejecute Terraform manualmente. | Para inicializar, planificar y aplicar las configuraciones, ejecute los siguientes comandos de Terraform en el orden que se muestra:
| DevOps ingeniero |
Compruebe los resultados de la implementación. | En la cuenta de administrador delegado del IAM Identity Center, compruebe que se haya creado la | 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 del conjunto de permisos. Para obtener instrucciones detalladas, consulte Actualizar una conexión pendiente en la documentación de la consola de Developer Tools. | AWS DevOps |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Ejecute la canalización mediante AWS Control Tower 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 |
Cambia el código para ejecutar la canalización. | Una vez que cambies el código y lo confirmes en la | AWS DevOps |
Ejecute la canalización manualmente. | Para iniciar la canalización manualmente, utiliza la función Release Change de AWS CodePipeline. | AWS DevOps |
Solución de problemas
Problema | Solución |
---|---|
Acceso denegado | Compruebe que dispone de los permisos necesarios para implementar la solución. |
CodeConnections problemas |
|
Problemas de ejecución de Pipeline |
|
Problemas de despliegue de 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
El siguiente ejemplo 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 Conjuntos de AWS permisos
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
.