Escalado de personalizaciones de zonas de aterrizaje en AWS

By Masoom Tulsiani, Cloud Solution Architect, Rackspace Technology

Introducción

A medida que las organizaciones adoptan estrategias multicuenta para soportar cargas de trabajo en la nube a escala, los equipos de ingeniería de plataformas se ven sometidos a una presión cada vez mayor para automatizar el aprovisionamiento de cuentas y, al mismo tiempo, satisfacer las necesidades de seguridad y cumplimiento. AWS Control Tower ayuda proporcionando una arquitectura de zona de aterrizaje coherente con barandillas integradas, pero para muchos equipos, la necesidad de escalar configuraciones personalizadas en cuentas requiere un enfoque más flexible de infraestructura como código.

Ahí es donde entra en juego AWS Control Tower Account Factory for Terraform (AFT).

AFT permite a los equipos de plataforma administrar el aprovisionamiento y la personalización de cuentas mediante Terraform, lo que lleva la automatización y los flujos de trabajo de GitOps a los entornos de AWS Control Tower. Si necesita integrar proveedores de identidad externos, aprovisionar VPC personalizadas o aplicar controles de seguridad en docenas, o cientos, de cuentas de AWS, AFT ofrece una forma estructurada y escalable de satisfacer esas necesidades sin sacrificar la gobernanza.

Este blog explora cómo AFT y el acelerador de zona de aterrizaje (LZA) pueden ayudarle a escalar las personalizaciones de la zona de aterrizaje de AWS, evitar los problemas de los enfoques ad hoc y crear una base conforme y ampliable para la arquitectura en la nube de su organización.

Comprender el desafío: escalar personalizaciones en AWS Control Tower

Aunque AWS Control Tower proporciona una base sólida para entornos multicuenta, escalar más allá de la configuración lista para usar puede presentar desafíos. A medida que los equipos individuales requieren funciones específicas de red, seguridad o identidad, los ingenieros de plataformas a menudo luchan por encontrar un equilibrio entre flexibilidad y estandarización.

Áreas comunes de personalización

Las zonas de aterrizaje de empresas suelen requerir cambios en una o varias de las siguientes categorías:

  • Gestión de identidades y accesos (IAM): Integración con proveedores de identidades externos, conjuntos de permisos personalizados y políticas de funciones detalladas.
  • Seguridad y conformidad: Herramientas de seguridad adicionales, normas de cifrado y políticas de control de servicios (SCP) personalizadas.
  • Redes: Configuraciones VPC personalizadas, esquemas de direccionamiento IP, uso de Transit Gateway y reglas de firewall centralizadas.
  • Registro y gobernanza: Reglas de AWS Config a medida, configuraciones de CloudTrail, estrategias de etiquetado de recursos y catálogos de productos preaprobados.

Compromisos entre flexibilidad y control

Personalizar una zona de aterrizaje para satisfacer los requisitos de la empresa a menudo significa desviarse de los planos y barandillas proporcionados por AWS. Aunque necesario, esto introduce varios riesgos:

  • Implantaciones fragmentadas: Las configuraciones a medida aumentan la complejidad y dificultan futuras actualizaciones o auditorías.
  • Políticas incoherentes entre cuentas: Sin una aplicación centralizada, las políticas de seguridad y gobernanza pueden desviarse.
  • Gastos operativos: Implantar o gestionar manualmente las personalizaciones en todas las cuentas es propenso a errores y requiere mucho tiempo.

Las organizaciones de sectores regulados se enfrentan a una presión adicional para alinear las configuraciones personalizadas con marcos de cumplimiento como HIPAA, PCI-DSS o GDPR. Esto hace que la automatización, la repetibilidad y la visibilidad sean fundamentales en cualquier estrategia de personalización de la zona de aterrizaje.

Resumen de la solución: Automatización de la provisión de cuentas con AFT

 

AWS Control Tower Account Factory for Terraform (AFT) ayuda a los equipos de la plataforma a automatizar el aprovisionamiento de cuentas y los flujos de trabajo de personalización mediante Terraform. AFT funciona desde una cuenta de gestión dedicada y sigue un modelo basado en GitOps, que permite la creación de cuentas, el etiquetado y la personalización en función de los cambios de código en el control de versiones.

Así es como funciona el conducto AFT:

  1. Envío de solicitudes de cuentas - Las solicitudes se envían a un repositorio de versiones controladas y se incorporan al proceso en orden de llegada.
  2. Aprovisionamiento de cuentas - AFT aprovisiona cada cuenta dentro de la cuenta de administración de la Torre de control de AWS, incluyendo los metadatos y roles IAM requeridos.
  3. Personalizaciones globales - Una canalización de personalización aplica configuraciones estándar de Terraform a todas las cuentas aprovisionadas.
  4. Personalizaciones específicas - Para cuentas con necesidades de configuración específicas, la AFT puede aplicar cambios específicos basados en los parámetros de la solicitud. (Nota: para las cuentas existentes, la personalización debe iniciarse manualmente)

Principales características de la AFT

  • Aprovisionamiento de infraestructura como código de cuentas de AWS
  • Flujos de trabajo basados en GitOps integrados con AWS CodePipeline
  • Etiquetado automático y almacenamiento de metadatos
  • Soporte para personalizaciones globales y específicas de cuentas
  • Auditoría y rastreo integrados mediante DynamoDB y AWS Step Functions
  • Compatibilidad parcial con la importación de cuentas existentes de la Torre de Control

Esta automatización no sólo acelera la incorporación de nuevas cuentas, sino que también refuerza la coherencia, la trazabilidad y el cumplimiento de las políticas en todo su entorno de nube.

Elegir el marco de personalización de la zona de aterrizaje adecuado

Además de AFT, AWS ofrece otras herramientas para ampliar y personalizar los entornos de las torres de control, entre las que destacan Landing Zone Accelerator (LZA) y Customizations for AWS Control Tower (CfCT). Cada solución tiene puntos fuertes diferentes en función de la escala de su organización, los requisitos de cumplimiento y las herramientas preferidas.

He aquí una comparación de alto nivel:

< entidad-drupal data-align="left" data-embed-button="media_entity_embed" data-entity-embed-display="view_mode:media.full" data-entity-type="media" data-entity-uuid="ffc70d81-8bc0-42e9-b646-2faec089e354" data-langcode="en"> < /drupal-entity>

Limitaciones de la AFT a tener en cuenta

Aunque AFT ofrece grandes ventajas de automatización y personalización, también tiene algunas advertencias:

  • El desaprovisionamiento no está soportado de forma nativa - eliminar una cuenta del pipeline no limpia completamente los recursos.
  • La asignación de usuarios SSO es obligatoria durante el aprovisionamiento.
  • La integración de IdP externos requiere un esfuerzo de personalización adicional.
  • La creación de cuentas es asíncrona: los flujos de trabajo se detienen hasta que se completa la provisión.
  • Las tuberías o herramientas de zona de aterrizaje existentes deben retirarse antes de cambiar a AFT.
  • Los conjuntos de permisos SSO para cuentas nuevas requieren automatización personalizada (aún no hay soporte integrado).

La arquitectura de la AFT

Para admitir el aprovisionamiento y la personalización automatizados de cuentas, AWS Control Tower Account Factory for Terraform (AFT) implementa varios servicios nativos de AWS como parte de su arquitectura. Estos recursos se administran desde una cuenta de administración de AFT dedicada y siguen un diseño modular basado en eventos que se integra estrechamente con AWS CodePipeline, DynamoDB, Step Functions e IAM.

El núcleo de la solución es un canal de GitOps basado en Terraform que detecta cambios en el control de versiones, activa flujos de trabajo de aprovisionamiento y aplica personalizaciones basadas en la estructura del repositorio y los parámetros de entrada.

< entidad-drupal data-align="left" data-embed-button="media_entity_embed" data-entity-embed-display="view_mode:media.full" data-entity-type="media" data-entity-uuid="ffc70d81-8bc0-42e9-b646-2faec089e354" data-langcode="en"> < /drupal-entity>

Funciones y cuentas principales

AFT se basa en múltiples roles IAM a través de cuentas para orquestar de forma segura el aprovisionamiento y la personalización:

  • AWSAFTAdmin: Desplegado en la cuenta de gestión AFT, este rol permite al pipeline asumir otros roles AFT y coordinar operaciones entre cuentas.
  • Servicio AWSAFTS: Gestiona las acciones relacionadas con el aprovisionamiento de nuevas cuentas de AWS.
  • AWSAFTExecution: Creado dentro de cada cuenta aprovisionada. Este rol otorga a AFT permiso para aplicar personalizaciones basadas en Terraform y acceder a la cartera de Account Factory.

La función AWSAFTAdmin es fundamental para la orquestación entre cuentas. Asume el rol AWSAFTExecution en las cuentas de destino -incluidas las cuentas de auditoría, archivo de registro y miembro- para realizar acciones de personalización y aplicar líneas base de configuración.

El diagrama siguiente ilustra cómo interactúan estas funciones en las cuentas de administración, auditoría, archivo de logs y miembro en un entorno de AWS Control Tower:

< entidad-drupal data-align="left" data-embed-button="media_entity_embed" data-entity-embed-display="view_mode:media.full" data-entity-type="media" data-entity-uuid="ffc70d81-8bc0-42e9-b646-2faec089e354" data-langcode="en"> < /drupal-entity>

Cómo se integra CodePipeline con Terraform y DynamoDB

AWS CodePipeline creado por AFT monitoriza los repositorios controlados por versiones en busca de cambios en las configuraciones de solicitud y personalización de cuentas. Cuando se detecta un cambio, como la creación de una nueva solicitud de cuenta, la canalización lanza un trabajo CodeBuild que aplica la configuración Terraform correspondiente.

Como parte de este proceso, AFT genera un elemento DynamoDB que contiene la especificación de la cuenta y los metadatos. Esto permite a la AFT rastrear y auditar la actividad de aprovisionamiento y aplicar configuraciones coherentes en todos los entornos.

Un ejemplo es el proyecto aft-global-customizations-terraform, que incluye un archivo backend.tf para configurar la gestión remota de estados para Terraform mediante S3 y DynamoDB. Esto garantiza un bloqueo de estado fiable y un almacenamiento seguro de las definiciones de infraestructura durante los despliegues globales de personalización.

Ejemplo: configuración backend.tf utilizada por CodeBuild en el proyecto de personalizaciones globales AFT:

< entidad-drupal data-align="left" data-embed-button="media_entity_embed" data-entity-embed-display="view_mode:media.full" data-entity-type="media" data-entity-uuid="ffc70d81-8bc0-42e9-b646-2faec089e354" data-langcode="en"> < /drupal-entity>

Personalización de la AFT mediante repositorios modulares

AFT utiliza un enfoque modular para la automatización, basándose en un conjunto de repositorios respaldados por Git que se asignan a diferentes etapas del ciclo de vida de la cuenta. AWS CodePipeline monitoriza estos repositorios y los utiliza para automatizar los flujos de trabajo de aprovisionamiento y personalización.

Repositorios de módulos clave de la AFT

  • aft-account-request: Este repositorio es el punto de entrada para el aprovisionamiento. Contiene los archivos de configuración que definen las nuevas solicitudes de cuentas de AWS, incluidos metadatos como la colocación de OU, etiquetas y parámetros de personalización.
  • aft-global-customizations: Se utiliza para definir recursos basados en Terraform o Python que deben desplegarse a través de todas las cuentas de aprovisionadas a través de AFT. Esto garantiza una configuración de base coherente para las herramientas de seguridad, redes o cumplimiento de normativas.
  • aft-account-customizations: Este repositorio permite personalizaciones específicas para cuentas individuales. El comportamiento personalizado se activa en función del parámetro account_customizations_name especificado en la solicitud de cuenta, lo que permite variaciones por cuenta (por ejemplo, sandbox frente a producción).
  • aft-account-provisioning-customizations: Centrado en la personalización de la canalización de aprovisionamiento en sí, este repositorio define la lógica ejecutada por AWS Step Functions durante la creación de la cuenta. Admite la integración con sistemas externos a través de AWS Lambda, ECS o Fargate, y puede comunicarse con otros sistemas a través de Amazon SNS o SQS para una orquestación más avanzada.

 

Juntos, estos módulos proporcionan a los equipos de la plataforma un control detallado sobre cómo se crean, configuran y gestionan las cuentas de AWS, todo ello en un entorno totalmente automatizado y controlado por versiones.

Oleoducto AFT

< entidad-drupal data-align="left" data-embed-button="media_entity_embed" data-entity-embed-display="view_mode:media.full" data-entity-type="media" data-entity-uuid="ffc70d81-8bc0-42e9-b646-2faec089e354" data-langcode="en"> < /drupal-entity>

Automatización de cuentas paso a paso dentro del pipeline AFT

Una vez que se envía una nueva solicitud de cuenta a través del repositorio aft-account-request, la canalización AFT automatiza cada paso del proceso de aprovisionamiento y personalización. Esto garantiza que cada cuenta se entrega en un estado coherente, seguro y totalmente conforme, lista para soportar las cargas de trabajo de AWS de su organización.

Etapas del proceso AFT

 

  1. Validación de la solicitud de cuenta La canalización comprueba que los parámetros de entrada cumplen las políticas de formato y gobernanza requeridas antes de que comience la provisión.
  2. Recupere los metadatos de la cuenta Una vez creada la cuenta, AFT captura los detalles clave, como el ID de la cuenta de AWS, para utilizarlos en la automatización posterior.
  3. Almacenar metadatos en DynamoDB Los datos de la cuenta se escriben en una tabla de DynamoDB en la cuenta de gestión de AFT, lo que permite la trazabilidad y la auditabilidad.
  4. Cree el rol IAM AWSAFTExecution Este rol se implementa en la nueva cuenta, otorgando a AFT los permisos necesarios para realizar personalizaciones y acceder al portafolio de Account Factory.
  5. Aplicar etiquetas de cuenta Las etiquetas definidas en la solicitud -como entorno, propietario o centro de costes- se aplican para apoyar la gobernanza y la visibilidad de la facturación.
  6. Aplicar opciones de funciones de AFT Las opciones de configuración predeterminadas establecidas durante la implementación de AFT (por ejemplo, eliminar VPC predeterminadas, habilitar eventos de datos de CloudTrail) se aplican a la nueva cuenta.
  7. Ejecutar personalizaciones de aprovisionamiento Una máquina de estado Step Functions activa un flujo de trabajo Terraform desde el repositorio aft-account-provisioning-customizations. Estas definiciones de infraestructura se aplican durante el aprovisionamiento para cumplir requisitos de configuración específicos.
  8. Crear una canalización de personalización a nivel de cuenta Se genera una AWS CodePipeline dedicada para cada cuenta nueva con el fin de admitir más personalizaciones globales o específicas.
  9. Invocar la canalización de personalizaciones de cuentas Las configuraciones adicionales, como las políticas de IAM, las VPC, las herramientas de seguridad o los SCP, se aplican a través de la canalización definida en aft-account-customizations.
  10. Enviar notificaciones de éxito o fracaso Se publica una notificación en un tema de Amazon SNS, indicando si el proceso de aprovisionamiento y personalización de la cuenta se completó con éxito o encontró problemas.

Al automatizar estos diez pasos, AFT ofrece una canalización de extremo a extremo que agiliza la creación de cuentas de AWS al tiempo que mantiene la conformidad con los límites de la Torre de Control y las normas de la organización.

Funciones paso a paso para orquestar el flujo de trabajo de aprovisionamiento

 

Como parte de la canalización de AFT, AWS Step Functions desempeña un papel fundamental en la coordinación del proceso de aprovisionamiento de cuentas. La máquina de estados actúa como motor de orquestación para tareas secuenciales como la creación de roles, el etiquetado, la personalización y la configuración de canalizaciones.

Cada paso de la máquina de estados corresponde a una operación distinta en el ciclo de vida de una cuenta de AWS recién aprovisionada. Este flujo estructurado hace que el marco AFT sea más resistente, auditable y modular.

La imagen de abajo ilustra la arquitectura de la máquina de estados utilizada por el proceso de aprovisionamiento de cuentas a posteriori:

< entidad-drupal data-align="left" data-embed-button="media_entity_embed" data-entity-embed-display="view_mode:media.full" data-entity-type="media" data-entity-uuid="ffc70d81-8bc0-42e9-b646-2faec089e354" data-langcode="en"> < /drupal-entity>

Visión general del flujo de trabajo de la máquina de estados

  1. Validación de la entrada de solicitud de cuenta Garantiza que todos los parámetros requeridos están presentes y se ajustan a la política.
  2. Recuperar detalles de la cuenta Captura los metadatos de la nueva cuenta, incluido el ID de la cuenta.
  3. Almacenar metadatos en DynamoDB Escribe información de la cuenta en la tabla DynamoDB de la cuenta de gestión de AFT.
  4. Create AWSAFTExecution IAM role Despliega el rol en la nueva cuenta, permitiendo a AFT realizar personalizaciones.
  5. Aplicar etiquetas de cuenta Añade etiquetas de metadatos para identificación, facturación y automatización.
  6. Aplicar opciones de características Activa cualquier indicador de características definido durante la configuración de AFT (por ejemplo, eliminación de VPC, eventos de datos de CloudTrail).
  7. Ejecutar personalizaciones de aprovisionamiento Ejecuta la lógica de personalización definida en el repositorio del marco de aprovisionamiento.
  8. Crear CodePipeline para personalizaciones Pone en marcha un pipeline dedicado para configuraciones posteriores al aprovisionamiento.
  9. Invocar la canalización de personalización Activa tareas específicas de infraestructura, seguridad o gobernanza.
  10. Enviar notificación SNS Publica un mensaje de éxito o fallo en un tema SNS para la supervisión del estado.

Este modelo basado en máquinas estatales convierte a AFT en una solución robusta y escalable para gestionar el aprovisionamiento de cuentas a escala empresarial.

Tablas DynamoDB utilizadas por AFT

 

Como parte de la implementación de AFT, se crean cinco tablas DynamoDB en la cuenta de gestión de AFT. Estas tablas almacenan metadatos, rastrean las solicitudes de provisión de cuentas y apoyan la automatización y auditabilidad de los flujos de trabajo de la AFT.

A continuación se muestran las tablas principales de DynamoDB asociadas con AFT:

< entidad-drupal data-align="left" data-embed-button="media_entity_embed" data-entity-embed-display="view_mode:media.full" data-entity-type="media" data-entity-uuid="ffc70d81-8bc0-42e9-b646-2faec089e354" data-langcode="en"> < /drupal-entity>

 

==> Ir a la tabla aft-request -> Haga clic en Exportar y arroyos

Contiene las funciones lambda que se activan cuando se actualizan las tablas de DynamoDB.

< entidad-drupal data-align="left" data-embed-button="media_entity_embed" data-entity-embed-display="view_mode:media.full" data-entity-type="media" data-entity-uuid="ffc70d81-8bc0-42e9-b646-2faec089e354" data-langcode="en"> < /drupal-entity>

Los activadores se utilizan para invocar la función Lambda cada vez que se modifica un elemento DD.

< entidad-drupal data-align="left" data-embed-button="media_entity_embed" data-entity-embed-display="view_mode:media.full" data-entity-type="media" data-entity-uuid="ffc70d81-8bc0-42e9-b646-2faec089e354" data-langcode="en"> < /drupal-entity>

 

 

Los Activadores son:

aft-account-request-action-trigger - implementación real de nuevas cuentas

aft-account-request-audit-trigger - prepara la auditoría

SQS

Las siguientes colas SQS (Tipo: FIFO) se crean como parte de aft-account-request:

< entidad-drupal data-align="left" data-embed-button="media_entity_embed" data-entity-embed-display="view_mode:media.full" data-entity-type="media" data-entity-uuid="ffc70d81-8bc0-42e9-b646-2faec089e354" data-langcode="en"> < /drupal-entity>

Funciones escalonadas

 

< entidad-drupal data-align="left" data-embed-button="media_entity_embed" data-entity-embed-display="view_mode:media.full" data-entity-type="media" data-entity-uuid="ffc70d81-8bc0-42e9-b646-2faec089e354" data-langcode="en"> < /drupal-entity>

A continuación se muestra la máquina de estados del marco aft-account-provisioning.

< entidad-drupal data-align="left" data-embed-button="media_entity_embed" data-entity-embed-display="view_mode:media.full" data-entity-type="media" data-entity-uuid="ffc70d81-8bc0-42e9-b646-2faec089e354" data-langcode="en"> < /drupal-entity>

Personalizaciones AFT

AWS Control Tower Account Factory for Terraform (AFT) admite de forma nativa personalizaciones globales y específicas de cuentas, lo que facilita la creación y administración automatizadas de recursos de AWS de base para cuentas aprovisionadas o importadas en AFT. Durante el proceso de ejecución de la canalización, los proveedores de Terraform se instancian dinámicamente para cada cuenta a través de una plantilla Jinja, lo que garantiza la aplicación de configuraciones tanto globales como específicas de la cuenta de una manera ágil y coherente.

Personalización de la cuenta de AWS creada a través de AFT Después de desplegar una nueva cuenta utilizando AFT, puede implementar personalizaciones para satisfacer los requisitos específicos de su organización. AFT soporta las siguientes capacidades de personalización:

 

  1. Configuraciones personalizadas.
    • Defina plantillas personalizadas que apliquen funciones específicas de IAM, políticas de control de servicios (SCP) o configuraciones de seguridad a las cuentas recién creadas.
  2. Módulos Terraform para recursos personalizados:
    • Cree módulos Terraform adicionales para aprovisionar recursos como VPC, instancias EC2 y buckets S3 dentro de la cuenta recién creada.
  3. Políticas automatizadas de cumplimiento y gobernanza:
    • Aproveche la integración de AFT con AWS Control Tower para aplicar las mejores prácticas de seguridad, aplicando controles preventivos o detectivos a través de guardrails y SCPs.
  4. Automatización posterior a la provisión:

Personalice el proceso posterior al aprovisionamiento para incluir tareas operativas como el etiquetado de cuentas, las configuraciones de registro o las implementaciones de pilas de CloudFormation. Estas tareas pueden automatizarse utilizando scripts Terraform como parte de su canalización AFT.

Personalización AFT: Funciones y políticas de IAM

Puede incluir funciones y políticas de IAM personalizadas en el repositorio aft-account-customizations .

Ejemplo: Para incluir una política personalizada de IAM, colóquela en la siguiente ruta relativa: aft-account-customizations//terraform/iam.tf

< entidad-drupal data-align="left" data-embed-button="media_entity_embed" data-entity-embed-display="view_mode:media.full" data-entity-type="media" data-entity-uuid="ffc70d81-8bc0-42e9-b646-2faec089e354" data-langcode="en"> < /drupal-entity>

Personalización AFT - VPC

El módulo AFT incluye un parámetro aft_enable_vpc que determina si la Torre de control de AWS aprovisiona recursos de cuenta dentro de una VPC en la cuenta de administración de AFT. Por defecto, este parámetro se establece en true.

Si se establece en false, AFT se despliega sin crear recursos de red privados como NAT Gateways o VPC endpoints.

Puede crear una VPC personalizada como parte de las personalizaciones específicas de la cuenta colocando la configuración de Terraform en la siguiente ruta relativa: aft-account-customizations/SANDBOX/terraform/vpc.tf

< entidad-drupal data-align="left" data-embed-button="media_entity_embed" data-entity-embed-display="view_mode:media.full" data-entity-type="media" data-entity-uuid="ffc70d81-8bc0-42e9-b646-2faec089e354" data-langcode="en"> < /drupal-entity>

Roles AFT IAM para SSO

 

  • AWSAFTAdmin - Creado durante el despliegue de AFT en la cuenta de gestión de AFT.
  • La canalización aft-account-provisioning utiliza este rol para asumir el rol AWSAFTExecution en la cuenta de administración y adjuntar un conjunto de permisos a un grupo AWS SSO existente.

Un archivo iam.tf admite este comportamiento utilizando los siguientes recursos de Terraform:

  • aws_ssoadmin_account_assignment
  • aws_ssoadmin_permission_set_inline_policy

Estos recursos hacen referencia al ARN del grupo SSO de destino.

< entidad-drupal data-align="left" data-embed-button="media_entity_embed" data-entity-embed-display="view_mode:media.full" data-entity-type="media" data-entity-uuid="ffc70d81-8bc0-42e9-b646-2faec089e354" data-langcode="en"> < /drupal-entity>

 

Ejemplo: Configuración del Centro de Identidades de AWS IAM con Terraform

El siguiente ejemplo muestra cómo configurar el Centro de identidades de AWS IAM mediante Terraform, incluida la creación de conjuntos de permisos y la adjunción de políticas en línea.

< entidad-drupal data-align="left" data-embed-button="media_entity_embed" data-entity-embed-display="view_mode:media.full" data-entity-type="media" data-entity-uuid="ffc70d81-8bc0-42e9-b646-2faec089e354" data-langcode="en"> < /drupal-entity>

Algunos clientes requieren la capacidad de adjuntar conjuntos de permisos a cuentas de AWS recién vendidas como parte del proceso de aprovisionamiento de cuentas.

El siguiente diagrama ilustra un caso de uso de un cliente que muestra cómo se adjunta un conjunto de permisos personalizados a un grupo SSO existente durante la creación de una cuenta a través del flujo de trabajo AFT aft-account-provisioning .

  • Esta solución gestiona la adjunción de conjuntos de permisos a un grupo SSO como parte de las etapas de aprovisionamiento y personalización de AFT.
  • Utiliza los siguientes recursos de Terraform:
    • aws_ssoadmin_account_assignment
    • aws_ssoadmin_permission_set_inline_policy

Para más detalles, consulte la documentación de Terraform Registry.

Roles AFT IAM para la integración SSO

  • AWSAFTAdmin - Creado durante el despliegue de AFT en la cuenta de gestión de AFT.
  • La canalización aft-account-provisioning utiliza este rol para asumir el rol AWSAFTExecution en la cuenta de administración y adjuntar un conjunto de permisos a un grupo AWS SSO existente.

Esta configuración se define en un archivo iam.tf utilizando los siguientes recursos de Terraform:

  • aws_ssoadmin_account_assignment
  • aws_ssoadmin_permission_set_inline_policy

Estos recursos hacen referencia al ARN del grupo SSO para completar la asignación.

< entidad-drupal data-align="left" data-embed-button="media_entity_embed" data-entity-embed-display="view_mode:media.full" data-entity-type="media" data-entity-uuid="ffc70d81-8bc0-42e9-b646-2faec089e354" data-langcode="en"> < /drupal-entity>

Secuencia de flujo de trabajo para adjuntar un conjunto de permisos SSO

  1. El proceso aft-account-request se activa cuando se envía una nueva solicitud de cuenta.
  2. A continuación, se ejecuta la canalización aft-account-provisioning , que utiliza una máquina de estado de AWS Step Functions para administrar el flujo de trabajo de aprovisionamiento.
  3. Durante el aprovisionamiento, la canalización utiliza la función AWSAFTAdmin para asumir la función AWSAFTExecution en la cuenta de administración y adjuntar un conjunto de permisos al grupo AWS SSO existente.

Este proceso se define en el archivo iam.tf utilizando los siguientes recursos de Terraform:

  • aws_ssoadmin_account_assignment
  • aws_ssoadmin_permission_set_inline_policy

Hacen referencia al ARN del grupo SSO de destino.

Integración con Microsoft Entra ID

AFT también admite configuraciones SSO que se integran con proveedores de identidad externos como Microsoft Entra ID (anteriormente Azure AD).

5. Estrategia de aplicación

Configuración de la fábrica de cuentas de la torre de control de AWS para Terraform (AFT)

Para configurar AFT en su entorno AWS, comience por crear un archivo main.tf que llame al módulo AFT. Este módulo agiliza el aprovisionamiento y la personalización de cuentas de AWS dentro de Control Tower, garantizando un proceso de infraestructura como código coherente y automatizado.

Deberá proporcionar seis parámetros esenciales al configurar el módulo:

  1. ct_management_account_id: El ID de su cuenta de administración de AWS Control Tower.
  2. log_archive_account_id: El ID de su cuenta de Log Archive.
  3. audit_account_id: El ID de su cuenta de Auditoría.
  4. aft_management_account_id: El ID de su cuenta de gestión AFT.
  5. ct_home_region: La región de AWS en la que se implementa AWS Control Tower.
  6. tf_backend_secondary_region: La región secundaria para la replicación del backend.

Los parámetros opcionales incluyen:

  • terraform_distribution (por defecto: Terraform de código abierto)
  • vcs_provider (por defecto: AWS CodeCommit) 

Estas opciones pueden personalizarse para adaptarse a los requisitos de su entorno.

< entidad-drupal data-align="left" data-embed-button="media_entity_embed" data-entity-embed-display="view_mode:media.full" data-entity-type="media" data-entity-uuid="ffc70d81-8bc0-42e9-b646-2faec089e354" data-langcode="en"> < /drupal-entity>

 

Plantilla de CloudFormation para el rol AWSControlTowerExecution

El siguiente ejemplo muestra una plantilla de CloudFormation utilizada para configurar el rol IAM AWSControlTowerExecution en una cuenta de destino. Esto permite que la cuenta de administración asuma el rol a través de AWS STS durante las operaciones de stack set:

< entidad-drupal data-align="left" data-embed-button="media_entity_embed" data-entity-embed-display="view_mode:media.full" data-entity-type="media" data-entity-uuid="ffc70d81-8bc0-42e9-b646-2faec089e354" data-langcode="en"> < /drupal-entity>

Requisitos previos para inscribir cuentas existentes en AWS Control Tower

Antes de inscribir cuentas de AWS existentes (como cuentas de auditoría o de archivo de logs) en la Torre de control, debe asegurarse de que AWS Config esté completamente limpio. De este modo se evitan conflictos durante la instalación de senderos y guardarraíles gestionados por la Torre de Control.

Visión general de AWS Config

AWS Config utiliza un registrador de configuración para realizar un seguimiento de los cambios en las configuraciones de recursos. Un registrador de configuración debe estar activo antes de que AWS Config pueda registrar cambios en los recursos. Cada región de AWS de una cuenta admite un único grabador y canal de entrega.

Pasos para preparar las cuentas existentes:

  1. Disable AWS Config Si la cuenta tiene recursos AWS Config existentes, deben eliminarse por completo antes de la inscripción.
  2. Elimine el registrador de configuración existente y el canal de entrega Este paso garantiza que la Torre de Control pueda crear y gestionar sus propias rutas sin interferencias.

Utilice la CLI de AWS para eliminar el registrador de configuración predeterminado:

bash

CopiarEditar

aws configservice delete-configuration-recorder --configuration-recorder-name default

En cada región (por ejemplo, eu-central-1), suprima lo siguiente:

  • Grabador de configuración por defecto (la Torre de Control creará uno nuevo)
  • Canal de entrega por defecto

Por ejemplo, los usuarios de PowerShell pueden utilizar Remove-CFGConfigurationRecorder para eliminar el registrador. Tras la eliminación, AWS deja de realizar un seguimiento de los cambios de configuración, pero todavía se puede acceder a los datos registrados anteriormente mediante Get-ResourceConfigHistory. Tenga en cuenta que los datos históricos ya no serán visibles en la consola AWS Config.

Encontrará más información en la guía de resolución de problemas de la torre de control .

Recursos adicionales

Para obtener instrucciones más detalladas sobre cómo detener AWS Config y limpiar los recursos existentes, consulte la documentación oficial de AWS:

Notas importantes:

  • Tras borrar el grabador de configuración, AWS deja de grabar los cambios de configuración, pero se conservan los datos grabados anteriormente. Puede seguir recuperando estos datos históricos mediante el cmdlet Get-ResourceConfigHistory , aunque ya no estarán disponibles a través de la consola de AWS Config.
  • Para eliminar un canal de entrega mediante PowerShell, primero debe detener el registrador de configuración. Utilice Stop-CFGConfigurationRecorder antes de ejecutar Remove-CFGDeliveryChannel.

 

Ejemplo: Comprobar y eliminar canales de distribución existentes

Utilice la CLI de AWS o PowerShell para enumerar y eliminar los canales de entrega existentes antes de la inscripción en la Torre de control. Esto asegura que no haya conflictos cuando la Torre de Control aprovisione su propio registrador de configuración y canal de entrega.

< entidad-drupal data-align="left" data-embed-button="media_entity_embed" data-entity-embed-display="view_mode:media.full" data-entity-type="media" data-entity-uuid="ffc70d81-8bc0-42e9-b646-2faec089e354" data-langcode="en"> < /drupal-entity>

Comprobar si se ha eliminado el canal de entrega

< entidad-drupal data-align="left" data-embed-button="media_entity_embed" data-entity-embed-display="view_mode:media.full" data-entity-type="media" data-entity-uuid="ffc70d81-8bc0-42e9-b646-2faec089e354" data-langcode="en"> < /drupal-entity>

 

Rol IAM requerido y relación de confianza

Para inscribir una cuenta de AWS existente en Control Tower, la cuenta ya debe contener la función IAM AWSControlTowerExecution .

Antes de intentar la inscripción, asegúrese de que la siguiente función y relación de confianza están configuradas en la cuenta de destino:

  • Nombre del rol: AWSControlTowerExecution
  • Permisos: Adjunta la política administrada de AWS AdministratorAccess
  •  Relación. 

    json

    CopiarEditar

       {   

     " Versión": "2012-10-17",

     " Declaración": [

       {   

         "     Efecto": "Permitir",

         "     Principal": {

           "       AWS": "arn:aws:iam:::root"

         },     

         "     Acción": "sts:AssumeRole",

         "     Condición": {}

    }

    ]

    }

Esta relación de confianza permite a la cuenta de gestión de la Torre de Control asumir la función y gestionar los recursos de la cuenta inscrita.

Para más información, consulte la documentación oficial de AWS .

Política requerida: AWSServiceCatalogEndUserFullAccess

Para inscribir cuentas mediante la consola de la Torre de control de AWS, debe iniciar sesión como usuario (no como cuenta raíz) con los siguientes permisos:

  • Política AWSServiceCatalogEndUserFullAccess
  • Acceso de administrador para utilizar la consola de la Torre de control de AWS

No se admiten credenciales de usuario raíz para esta operación.

Universidad Tecnológica de Munster

 

La Universidad Tecnológica de Munster (MTU) es una de las universidades técnicas más prestigiosas de Irlanda. Lidera la innovación en computación cuántica con el lanzamiento de QCloud, el primer entorno de computación cuántica en nube de Irlanda. Este proyecto ofrece a los investigadores acceso a recursos de computación cuántica y contribuye a acelerar la investigación científica en Irlanda y otros países.

MTU se asoció con Rackspace Technology para diseñar e implementar una infraestructura AWS segura y escalable que respalde la iniciativa QCloud.

Desafío

MTU necesitaba una zona de aterrizaje de AWS segura y rentable para embarcar a varias universidades y, al mismo tiempo, admitir una amplia gama de cargas de trabajo cuánticas. Entre los principales retos figuran:

  • Diseño de una zona de aterrizaje de AWS escalable con permisos IAM granulares
  • Compatibilidad con cargas de trabajo cuánticas basadas en EC2 y en AWS Braket
  • Aplicación de controles presupuestarios a nivel de proyecto y aislamiento a nivel de cuenta

Qué aportó Rackspace

Rackspace diseñó e implementó una zona de aterrizaje multi-OU con AWS Control Tower Account Factory for Terraform (AFT). El entorno incluía flujos de trabajo de personalización de cuentas, control de costes centralizado y un libro de ejecución para gestionar el aprovisionamiento de universidades adicionales.

Componentes entregados incluidos:

  • Zona de aterrizaje de la torre de control de AWS y canal de personalización de AFT
  • Libro de ejecución de Terraform para la configuración de AFT y la incorporación de cuentas
  • Provisión de cuentas presupuestarias con seguimiento centralizado de costes
  • Arquitectura escalable y multicuenta compatible con cargas de trabajo de EC2 y AWS Braket

Resultado

 

  • Incorporación de universidades externas en el marco OCRE de GÉANT UE
  • Gestión centralizada de usuarios, costes e infraestructuras para todas las instituciones participantes
  • Fomento de la colaboración nacional e internacional entre equipos de investigación

______________________________________________________________________________

Buenas prácticas para la implantación de AFT

Las siguientes buenas prácticas pueden ayudarle a desplegar, gestionar y escalar las zonas de aterrizaje basadas en AFT de forma más eficaz:

 

  1. Modularizar las configuraciones de Terraform Descomponer los módulos para la creación de cuentas, la personalización y la gobernanza.
  2. Utilice el control de versiones para todo el código Almacene las configuraciones de Terraform en Git para permitir la colaboración y la auditabilidad.
  3. Adopte un flujo de trabajo GitOps Utilice Git como fuente de verdad y active canalizaciones a partir de los cambios en los repositorios.
  4. Definir configuraciones de referencia Utilizar AFT para hacer cumplir las normas de IAM, seguridad y redes.
  5. Implemente el acceso de mínimo privilegio Limite las funciones y políticas de administración a lo estrictamente necesario.
  6. Supervise y audite cuentas Habilite AWS Config, CloudTrail y GuardDuty para obtener visibilidad y conformidad.
  7. Utilice el proceso de aprovisionamiento de cuentas AFT Automatice el aprovisionamiento de nuevas cuentas con la aplicación de políticas integrada.
  8. Aplique una estrategia de etiquetado Aplique etiquetas de recursos y cuentas coherentes para la asignación de costes y la automatización.
  9. Gestión segura del estado Almacene el estado de Terraform en S3 con cifrado y utilice DynamoDB para el bloqueo.
  10. Automatice las personalizaciones de cuentas Utilice canalizaciones de AFT para aplicar SCP, StackSets y configuraciones específicas del entorno.
  11. Implemente CI/CD para Terraform Valide y despliegue los cambios automáticamente mediante canalizaciones CI/CD.
  12. Gestione el ciclo de vida de las cuentas Automatice el desmantelamiento y la limpieza de cuentas para minimizar los riesgos.
  13. Utilice la segmentación de entornos Cree cuentas separadas para dev, test y prod para aislar las cargas de trabajo.
  14. Desactive los puntos finales de la VPC cuando no los necesite Reduzca los costes innecesarios desactivando los puntos finales de la VPC que no utilice.
  15. Eliminar los recursos existentes de AWS Config antes de la inscripción

Elimine los registradores de configuración y los canales de entrega a través de CLI para evitar conflictos.

Consideraciones sobre los precios

A continuación se muestra una muestra de los costes de referencia relacionados con la torre de control de AWS para un entorno de cliente que utiliza AFT en la región eu-central-1 . Los costes reales variarán en función del volumen de trabajo, la actividad de la API y la estructura de la cuenta.

Ejemplo de costes mensuales y utilización de recursos

  1. Amazon CloudWatch
    • ~0,03 dólares en total
    • 0,0094 $ por cada 1.000 métricas solicitadas (GetMetricData API)
  2. Catálogo de servicios de AWS
    • ~0,09 $ (las primeras 1.000 llamadas a la API están incluidas en el nivel gratuito)
    • Ejemplo: 1.200 llamadas a la API = 0,14
  3. Configuración de AWS
    • 4.010 elementos de configuración registrados = ~9,84 dólares
    • Tarifa: 0,00282 $ por artículo (región de Irlanda)
  4. AWS CloudTrail
    • ~34 $ al mes (con todas las regiones activadas)
    • 0,00002 $ por evento pagado
    • Sugerencia: Habilitar CloudTrail sólo en regiones seleccionadas para reducir costes
    • Ejemplo: 8.000 eventos = ~0,16
  5. Pasarelas NAT
    • 2 puertas NAT públicas en la VPC de gestión de AFT = ~60 $/mes
    • AFT crea dos VPCs por defecto con NAT Gateway adjunto
  6. Puntos finales de la VPC
    • 24 puntos finales PrivateLink creados como parte de la VPC de gestión AFT
    • Coste estimado: entre 175 y 200 dólares al mes
    • 23 de ellos son puntos finales de tipo interfaz
  7. Amazon S3 (estado de Terraform e instantáneas)
    • Ejemplo de uso: 119.2 MB (por debajo del nivel gratuito de 1 GB)
    • Coste actual: ~0,02
  8. AFT CodePipelines
    • 3-4 pipelines (por ejemplo, ct-aft-account-request, ct-aft-customization, ct-aft-account-provisioning-customizations)
    • Coste total: ~6 $/mes
  9. AWS KMS (cifrado)
    • 2 claves KMS utilizadas por la AFT = ~5 $/mes
  10. Amazon DynamoDB
  • 5 tablas en la cuenta de gestión/fábrica de cuentas AFT
  • Coste estimado: <3 $ actualmente; hasta ~29 $/mes si se escala a 1 GB

Uso actual: <50 KB en total, ~120 bytes por elemento de media

Agilizar la gestión del ciclo de vida de las cuentas con AFT

AWS Control Tower Account Factory for Terraform (AFT) ofrece un marco potente para que las organizaciones que adoptan Infrastructure as Code administren cuentas de AWS a escala. No sólo simplifica el aprovisionamiento de cuentas, sino que también admite la personalización avanzada, la automatización y la aplicación de políticas, todo ello dentro de los límites de AWS Control Tower.

En esta guía, usted exploró cómo crear nuevas cuentas usando AFT y aplicar personalizaciones tanto globales como a nivel de cuenta. Al integrar Terraform en el ciclo de vida de las cuentas, las organizaciones pueden construir una base en la nube más eficiente, repetible y segura que respalde el crecimiento sin sacrificar la gobernanza.

 

 

Fuentes y referencias citadas en esta entrada de blog:

https://aws.amazon.com/blogs/mt/deploy-and-customize-aws-accounts-using-account-factory-for-terraform-in-aws-control-tower/

https://docs.aws.amazon.com/config/latest/developerguide/stop-start-recorder.html

https://medium.com/cloud-native-daily/automate-aws-sso-using-terraform-2f219a45c16f

https://aws.amazon.com/blogs/mt/import-existing-aws-control-tower-accounts-to-account-factory-for-terraform/

https://docs.aws.amazon.com/controltower/latest/userguide/existing-config-resources.html

https://medium.com/cloud-native-daily/automate-aws-sso-using-terraform-2f219a45c16f

Obtenga más información sobre nuestros servicios de AWS