Controle los conjuntos de permisos para varias cuentas mediante Account Factory for Terraform - 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.

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 

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 AWS

  • aft-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ón

  • PermissionSetArn— El ARN del conjunto de permisos

  • PrincipalId— 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.

Flujo de trabajo que consiste en actualizar los conjuntos de permisos al crear o actualizar una cuenta.

El diagrama muestra el siguiente flujo de trabajo cuando se crean cuentas nuevas:

  1. Un usuario envía un custom_fields cambio al aft-account-request repositorio.

  2. 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. El ddb_event_name atributo define el tipo de operación AFT:

    • Si el valor esINSERT, la solución asigna los permisos establecidos a las identidades de destino cuando Cuenta de AWS se crea la nueva.

    • Si el valor esUPDATE, la solución asigna los permisos establecidos a las identidades de destino después de crearlas Cuenta de AWS .

  3. Amazon DynamoDB Streams inicia la función Lambda. aft_alternate_sso_extract

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

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

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

  • Python es un lenguaje de programación informático de uso general.

  • 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

El repositorio de código para AFT está disponible en el repositorio GitHub AWS Control Tower Account Factory for Terraform. El código de este patrón está disponible en el repositorio Govern SSO Assignments para Cuentas de AWS usar Account Factory for Terraform (AFT).

Prácticas recomendadas

Epics

TareaDescripciónHabilidades 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:

  1. Descargue el AFTCrossAccountRole.tf archivo del repositorio de GitHub código.

  2. Modifique el AFTCrossAccountRole.tf archivo según sea necesario para su AWS entorno.

  3. En Terraform, introduzca los siguientes comandos para crear este rol de IAM:

    terraform init terraform plan terraform apply
  4. Valide que el rol se haya implementado correctamente y que tenga el acceso multicuenta esperado.

AWS DevOps, arquitecto de nube

Personalice la solución para su entorno.

  1. Ingresa el siguiente comando para clonar las asignaciones de Govern SSO para Cuentas de AWS usar el repositorio Account Factory for Terraform (AFT) en tu estación de trabajo local.

    git clone https://github.com/aws-samples/aft-custom-sso-assignment.git
  2. En la aft-account-provisioning-customizations/terraform carpeta, abra el archivo. variables.tf

  3. Modifique las variables según sea necesario para su entorno.

  4. Guarde y cierre el archivo variables.tf.

  5. Abre el account-request.tf archivo en tu aft-account-request repositorio.

  6. Modifique los custom_fields parámetros para definir los conjuntos de permisos y los usuarios y grupos objetivo. Para obtener más información, consulte la sección de arquitectura de este patrón.

  7. Guarde y cierre el archivo account-request.tf.

AWS DevOps, arquitecto de nube

Implemente la solución.

  1. En el repositorio clonado, copie el contenido de la terraform carpeta y péguelo en la terraform carpeta del aft-account-provisioning-customizations repositorio.

  2. En la cuenta de administración de AFT, inicie la ct-aft-account-provisioning-customizations canalización. Esto despliega la solución personalizada. Para obtener instrucciones, consulte Iniciar una canalización en CodePipeline.

  3. Valide que los recursos se hayan desplegado correctamente en la cuenta de administración de AFT.

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
TareaDescripciónHabilidades 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.

  1. Abra la consola de AWS IAM Identity Center.

  2. En la lista de cuentas, selecciona la cuenta recién creada.

  3. Valide que se hayan asignado los conjuntos de permisos para conceder acceso a los usuarios y grupos de destino.

AWS DevOps, arquitecto de nube

Solución de problemas

ProblemaSolució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 Jira con. GitHub Para ver los ServiceNow conectores, consulte Integrar con. GitHub Incluso puedes crear soluciones personalizadas que requieran que los usuarios proporcionen un identificador de ticket como parte de la aprobación de la pull request. Si se aprueba una solicitud para crear una nueva Cuenta de AWS mediante AFT, ese evento podría iniciar un flujo de trabajo que añada campos personalizados al aft-account-request GitHub repositorio. Puede diseñar cualquier flujo de trabajo personalizado que cumpla con los requisitos de su caso de uso.

Flujo de trabajo que utiliza GitHub Actions y una herramienta de gestión de tickets.

En el diagrama, se muestra el siguiente flujo de trabajo:

  1. Los usuarios solicitan una asignación de conjuntos de permisos personalizada en una herramienta de administración de tickets, como Jira.

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

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

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

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

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

  7. 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 estados aft-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.