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.
Controle los conjuntos de permisos para varias cuentas mediante Account Factory for Terraform
Anand Krishna Varanasi y Siamak Heshmati, Amazon Web Services
Resumen
Este patrón le ayuda a integrar AWS Control Tower Account Factory Terraform (AFT) con el AWS IAM Identity Centerfin de configurar los permisos de varios Cuentas de AWS a escala. Este enfoque utiliza AWS Lambda funciones personalizadas para automatizar las asignaciones de conjuntos de permisos Cuentas de AWS que se administran como una organización. Esto agiliza el proceso porque no requiere la intervención manual del equipo de ingeniería de la plataforma. Esta solución puede mejorar la eficiencia, la seguridad y la coherencia operativas. Promueve un proceso de incorporación seguro y estandarizado AWS Control Tower, lo que lo hace indispensable para las empresas que priorizan la agilidad y la confiabilidad de su infraestructura de nube.
Requisitos previos y limitaciones
Requisitos previos
Cuentas de AWS, gestionado mediante AWS Control Tower. Para obtener más información, consulte Primeros pasos con AWS Control Tower.
Account Factory for Terraform, implementado en una cuenta dedicada en su entorno. Para obtener más información, consulte Deploy AWS Control Tower Account Factory para Terraform.
Una instancia de IAM Identity Center, configurada en su entorno. Para obtener más información, consulte Primeros pasos con IAM Identity Center.
Un grupo de centros de identidad de IAM activo, configurado. Para obtener más información, consulte Añadir grupos a su. Directorio de IAM Identity Center
Python versión 3.9 o posterior, instalada
Limitaciones
Esta solución solo se puede usar con cuentas que se administren mediante AWS Control Tower. Esta solución se implementa mediante Account Factory for Terraform.
Este patrón no incluye instrucciones para configurar la federación de identidades con una fuente de identidad. Para obtener más información sobre cómo completar esta configuración, consulte los tutoriales sobre las fuentes de identidad del IAM Identity Center en la documentación del IAM Identity Center.
Arquitectura
Descripción general de AFT
AFT establece una canalización de Terraform que le ayuda a aprovisionar y personalizar sus cuentas. AWS Control Tower AFT sigue un GitOps modelo que automatiza los procesos de aprovisionamiento de cuentas. AWS Control Tower Usted crea un archivo Terraform de solicitud de cuenta y lo deposita en el repositorio. Esto inicia el flujo de trabajo de AFT para el aprovisionamiento de cuentas. Una vez completado el aprovisionamiento de la cuenta, AFT puede ejecutar automáticamente pasos de personalización adicionales. Para obtener más información, consulte la arquitectura AFT en la AWS Control Tower documentación.
AFT proporciona los siguientes repositorios principales:
aft-account-request
— Este repositorio contiene código de Terraform para crear o actualizar. Cuentas de AWSaft-account-customizations
— Este repositorio contiene código de Terraform para crear o personalizar recursos por cuenta.aft-global-customizations
— Este repositorio contiene el código de Terraform para crear o personalizar recursos para todas las cuentas, a escala.aft-account-provisioning-customizations
— Este repositorio administra las personalizaciones que se aplican solo a cuentas específicas creadas y administradas por AFT. Por ejemplo, puede utilizar este repositorio para personalizar las asignaciones de usuarios o grupos en el Centro de Identidad de IAM o para automatizar el cierre de cuentas.
Descripción general de la solución
Esta solución personalizada incluye una máquina de AWS Step Functions estados y una AWS Lambda función que asigna conjuntos de permisos a usuarios y grupos para varias cuentas. La máquina de estados implementada mediante este patrón funciona junto con la máquina de aft_account_provisioning_customizations
estados AFT preexistente. Un usuario envía una solicitud para actualizar las asignaciones de usuarios y grupos del IAM Identity Center cuando Cuenta de AWS se crea una nueva cuenta o después de crearla. Para ello, insertan un cambio en el aft-account-request
repositorio. La solicitud para crear o actualizar una cuenta inicia una transmisión en Amazon DynamoDB Streams. Esto inicia la función Lambda, que actualiza los usuarios y grupos del IAM Identity Center para el destino. Cuentas de AWS
A continuación se muestra un ejemplo de los parámetros que puede proporcionar en la función Lambda para la asignación de conjuntos de permisos a los usuarios y grupos de destino:
custom_fields = { "InstanceArn" = "<Organization ID>", "PermissionSetArn" = "<Permission set ARN>", "PrincipalId" = "<Principal ID>", }
Los parámetros de esta declaración son los siguientes:
InstanceArn
— El nombre del recurso de Amazon (ARN) de la organizaciónPermissionSetArn
— El ARN del conjunto de permisosPrincipalId
— El identificador de un usuario o grupo del Centro de Identidad de IAM al que se aplicará el conjunto de permisos
nota
Debe crear el conjunto de permisos, los usuarios y los grupos de destino antes de ejecutar esta solución.
Si bien el InstanceArn
valor debe permanecer coherente, puede modificar la función Lambda para asignar varios conjuntos de permisos a varias identidades de destino. Los parámetros de los conjuntos de permisos deben terminar en PermissionSetArn
y los parámetros de los usuarios y grupos deben terminar enPrincipalId
. Debe definir ambos atributos. A continuación se muestra un ejemplo de cómo definir varios conjuntos de permisos y dirigirse a usuarios y grupos:
custom_fields = { "InstanceArn" = "<Organization ID>", "AdminAccessPermissionSetArn" = "<Admin privileges permission set ARN>", "AdminAccessPrincipalId" = "<Admin principal ID>", "ReadOnlyAccessPermissionSetArn" = "<Read-only privileges permission set ARN>", "ReadOnlyAccessPrincipalId" = "<Read-only principal ID>", }
El siguiente diagrama muestra un step-by-step flujo de trabajo sobre cómo la solución actualiza los conjuntos de permisos para los usuarios y grupos del objetivo Cuentas de AWS a escala. Cuando el usuario inicia una solicitud de creación de cuenta, AFT inicia la máquina de estados aft-account-provisioning-framework
Step Functions. Esta máquina de estados inicia la extract-alternate-sso
función Lambda. La función Lambda asigna conjuntos de permisos a los usuarios y grupos del destino. Cuentas de AWS Estos usuarios o grupos pueden proceder de cualquier fuente de identidad configurada en el Centro de identidades de IAM. Algunos ejemplos de fuentes de identidad son Okta, Active Directory o Ping Identity.

El diagrama muestra el siguiente flujo de trabajo cuando se crean cuentas nuevas:
Un usuario envía un
custom_fields
cambio alaft-account-request
repositorio.AWS CodePipeline inicia un AWS CodeBuild trabajo que registra los metadatos definidos por el usuario en la tabla de
aft-request-audit
Amazon DynamoDB. Esta tabla tiene atributos para registrar los metadatos definidos por el usuario. Elddb_event_name
atributo define el tipo de operación AFT:Si el valor es
INSERT
, la solución asigna los permisos establecidos a las identidades de destino cuando Cuenta de AWS se crea la nueva.Si el valor es
UPDATE
, la solución asigna los permisos establecidos a las identidades de destino después de crearlas Cuenta de AWS .
Amazon DynamoDB Streams inicia la función Lambda.
aft_alternate_sso_extract
La función
aft_alternate_sso_extract
Lambda asume una función AWS Identity and Access Management (IAM) en la AWS Control Tower cuenta de administración.La función Lambda asigna los conjuntos de permisos a los usuarios y grupos de destino mediante una llamada a la API AWS SDK para Python (Boto3) create_account_assignment
al Centro de identidades de IAM. Recupera el conjunto de permisos y las asignaciones de identidad de la tabla de aft-request-audit
Amazon DynamoDB.Cuando se completa el flujo de trabajo de Step Functions, los conjuntos de permisos se asignan a las identidades de destino.
Automatizar y escalar
AFT funciona a escala mediante el Servicios de AWS uso de CodePipeline DynamoDB y Lambda, que son altamente escalables. AWS CodeBuild Para una automatización adicional, puede integrar esta solución con un sistema de gestión de incidencias o tickets, como Jira. Para obtener más información, consulte la sección Información adicional de este patrón.
Herramientas
Servicios de AWS
Account Factory for Terraform (AFT) es la herramienta principal de esta solución. El
aft-account-provisioning-customizations
repositorio contiene el código de Terraform para crear personalizaciones Cuentas de AWS, como asignaciones personalizadas para usuarios o grupos del IAM Identity Center.Amazon DynamoDB es un servicio de base de datos de NoSQL completamente administrado que ofrece un rendimiento rápido, predecible y escalable.
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 Step Functionses un servicio de organización sin servidor que le ayuda a combinar AWS Lambda funciones y otras Servicios de AWS para crear aplicaciones críticas para la empresa.
Otras herramientas
Repositorio de código
El repositorio de código para AFT está disponible en el repositorio GitHub AWS Control Tower Account Factory for Terraform
Prácticas recomendadas
Comprenda el modelo de responsabilidad AWS compartida
. Siga las recomendaciones de seguridad para AWS Control Tower. Para obtener más información, consulte Seguridad en AWS Control Tower.
Siga el principio de privilegio mínimo Para obtener más información, consulte Aplicar permisos de privilegio mínimo.
Cree conjuntos de permisos y funciones de IAM específicos y específicos para grupos y unidades de negocio.
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Crear un rol de IAM. | En la cuenta AWS Control Tower de administración, usa Terraform para crear un rol de IAM. Este rol tiene acceso multicuenta y una política de confianza que permite el acceso federado desde el proveedor de identidades. También tiene permisos para conceder acceso a otras cuentas mediante. AWS Control Tower La función Lambda asumirá esta función. Haga lo siguiente:
| AWS DevOps, arquitecto de nube |
Personalice la solución para su entorno. |
| AWS DevOps, arquitecto de nube |
Implemente la solución. |
| AWS DevOps, arquitecto de nube |
Configure una conexión a un repositorio de código. | Configure una conexión entre el repositorio de código donde almacenará los archivos de configuración y su Cuenta de AWS. Para obtener instrucciones, consulta la sección sobre cómo añadir proveedores de fuentes de terceros a las canalizaciones que se CodeConnections indica en la AWS CodePipeline documentación. | AWS DevOps, arquitecto de nube |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Inicie AFT Pipeline para implementar una nueva cuenta. | Siga las instrucciones de Aprovisione una nueva cuenta con AFT para iniciar la canalización que crea una nueva Cuenta de AWS en su AWS Control Tower entorno. Espere a que se complete el proceso de creación de la cuenta. | AWS DevOps, arquitecto de nube |
Valide los cambios. |
| AWS DevOps, arquitecto de nube |
Solución de problemas
Problema | Solución |
---|---|
La asignación del conjunto de permisos no funciona. | Asegúrese de que el ARN del grupo, el identificador de la organización y los parámetros Lambda sean correctos. Para ver ejemplos, consulte la sección de descripción general de la solución de este patrón. |
La actualización del código en el repositorio no inicia la canalización. | Este problema está relacionado con la conectividad entre tu repositorio Cuenta de AWS y el tuyo. En el AWS Management Console, valide que la conexión esté activa. Para obtener más información, consulte GitHub las conexiones en la AWS CodePipeline documentación. |
Información adicional
Integración con una herramienta de gestión de tickets
Puede optar por integrar esta solución con una herramienta de gestión de incidencias o tickets, como Jira o ServiceNow. El siguiente diagrama muestra un ejemplo de flujo de trabajo para esta opción. Puede integrar la herramienta de gestión de tickets con los repositorios de soluciones AFT mediante los conectores de su herramienta. Para ver los conectores de Jira, consulte Integrar Jiraaft-account-request
GitHub repositorio. Puede diseñar cualquier flujo de trabajo personalizado que cumpla con los requisitos de su caso de uso.

En el diagrama, se muestra el siguiente flujo de trabajo:
Los usuarios solicitan una asignación de conjuntos de permisos personalizada en una herramienta de administración de tickets, como Jira.
Una vez aprobado el caso, se inicia un flujo de trabajo para actualizar la asignación del conjunto de permisos. (Opcional) Puedes usar complementos para la automatización personalizada de este paso.
Los operadores envían el código de Terraform con los parámetros del conjunto de permisos actualizados al
aft-account-request
repositorio, a una rama de desarrollo o funcionalidad.GitHub Las acciones se inician AWS CodeBuild mediante una llamada a OpenID Connect (OIDC). CodeBuild realiza escaneos de seguridad de infraestructura como código (IaC) mediante herramientas como tfsec y checkov.
Advierte a los operadores de cualquier violación de seguridad. Si no se encuentra ninguna infracción, GitHub Actions crea una solicitud de extracción automática y asigna una revisión del código a los propietarios del código. También crea una etiqueta para la solicitud de extracción.
Si el propietario del código aprueba la revisión del código, se inicia otro flujo de trabajo de GitHub Actions. Comprueba los estándares de las solicitudes de extracción, entre los que se incluyen:
Si el título de la solicitud de extracción cumple con los requisitos.
Si el cuerpo de la solicitud de extracción contiene números de caso aprobados.
Si la solicitud de extracción está correctamente etiquetada.
Si las solicitudes de extracción cumplen con los estándares, GitHub Actions inicia el flujo de trabajo del producto AFT. Utiliza el inicio de la
ct-aft-account-request
canalización AWS CodePipeline. Esta canalización inicia la máquina de estadosaft-account-provisioning-framework
personalizados en Step Functions. Esta máquina de estados funciona como se describió anteriormente en la sección de descripción general de la solución de este patrón.