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.
Control de 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 IAM Identity Center activo y configurado. Para obtener más información, consulte Añadir grupos a su Directorio de IAM Identity Center.
La versión 3.9 o posterior de Python 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 una federación de identidades con un origen de identidad. Para obtener más información sobre cómo completar esta configuración, consulte los tutoriales sobre los orígenes de identidad de IAM Identity Center en la documentación de IAM Identity Center.
Arquitectura
Descripción general de AFT
AFT configura una canalización de Terraform que lo ayuda a aprovisionar y personalizar varias cuentas de AWS Control Tower. AFT sigue un GitOps modelo que automatiza los procesos de aprovisionamiento de cuentas en. AWS Control Tower Usted crea un archivo de 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 AWS.aft-account-customizations: este repositorio contiene código Terraform para crear o personalizar recursos por cuenta.aft-global-customizations: este repositorio contiene código 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 con AFT. Por ejemplo, puede utilizar este repositorio para personalizar las asignaciones de usuarios o grupos en IAM Identity Center 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 estados aft_account_provisioning_customizations de AFT preexistente. Un usuario envía una solicitud para actualizar las asignaciones de usuarios y grupos del IAM Identity Center al crear una nueva Cuenta de AWS cuenta o después de crearla. Para ello, insertan un cambio en el repositorio de aft-account-request. 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 de 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 instrucción son los siguientes:
InstanceArn: el nombre de recurso de Amazon (ARN) de la organización.PermissionSetArn: el ARN del conjunto de permisos.PrincipalId: el identificador de un usuario o grupo de IAM Identity Center 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 valor InstanceArn debe permanecer coherente, puede modificar la función de 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 en PrincipalId. 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 que muestra 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 de Step Functions. Esta máquina de estados inicia la función de Lambda extract-alternate-sso. 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 origen de identidad configurado en IAM Identity Center. Algunos ejemplos de orígenes de identidad son Okta, Active Directory o Ping Identity.

El diagrama muestra el siguiente flujo de trabajo al crear cuentas nuevas:
Un usuario envía un cambio de
custom_fieldsal repositorio deaft-account-request.AWS CodePipeline inicia un AWS CodeBuild trabajo que registra los metadatos definidos por el usuario en la tabla de
aft-request-auditAmazon DynamoDB. Esta tabla tiene atributos para registrar metadatos definidos por el usuario. El atributoddb_event_namedefine el tipo de operación de AFT:Si el valor es
INSERT, la solución asigna los permisos establecidos a las identidades de destino cuando se crea la nueva. Cuenta de AWSSi 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 de Lambda
aft_alternate_sso_extract.La función
aft_alternate_sso_extractLambda 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 aft-request-auditde Amazon DynamoDB.Cuando se completa el flujo de trabajo de Step Functions, los conjuntos de permisos se asignan a las identidades de destino.
Automatización y escala
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.
Tools (Herramientas)
Servicios de AWS
Account Factory for Terraform (AFT) es la principal herramienta de esta solución. El
aft-account-provisioning-customizationsrepositorio 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 compartida de AWS
. 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 roles de IAM 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, utilice Terraform para crear un rol de IAM. Este rol tiene acceso entre cuentas 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 a través de ella. AWS Control Tower La función de Lambda asumirá este rol. 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 de 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 encuentra en la AWS CodePipeline documentación. | AWS DevOps, arquitecto de nube |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Inicie la canalización de AFT 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 la creación de la cuenta. | AWS DevOps, arquitecto de nube |
Valide los cambios. |
| AWS DevOps, arquitecto de nube |
Resolución de problemas
| Problema | Solución |
|---|---|
La asignación del conjunto de permisos no funciona. | Asegúrese de que el ARN del grupo, el ID de la organización y los parámetros de Lambda sean correctos. Para ver ejemplos, consulte la sección de Informació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 Consola de administración de AWS, 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 incidencias, como Jira o ServiceNow. En el diagrama siguiente se muestra un ejemplo de flujo de trabajo de esta opción. Puede integrar la herramienta de gestión de tickets con los repositorios de soluciones de 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) Puede utilizar 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 repositorio de
aft-account-requesten una ramificación de desarrollo o característica.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 infracción de seguridad. Si no se detecta ninguna infracción, GitHub Actions crea una solicitud de extracción automática y asigna una revisión del código a sus propietarios. 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, que 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-requestcanalización AWS CodePipeline. Esta canalización inicia la máquina de estadoaft-account-provisioning-frameworkpersonalizada en Step Functions. Esta máquina de estado funciona como se describió anteriormente en la sección de Información general de la solución de este patrón.