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.
Implemente Account Factory for Terraform (AFT) mediante una canalización de arranque
Creado por Vinicius Elias (AWS) y Edgar Costa Filho (AWS)
Repositorio de código: aft-bootstrap-pipeline | Entorno: producción | Tecnologías: gestión y gobierno; infraestructura |
Carga de trabajo: código abierto | Servicios de AWS: AWS CodeBuild CodeCommit; AWS CodePipeline; AWS Control Tower; AWS Organizations |
Resumen
Este patrón proporciona un método sencillo y seguro para implementar AWS Control Tower Account Factory for Terraform (AFT) desde la cuenta de administración de AWS Organizations. El núcleo de la solución es una AWS CloudFormation plantilla que automatiza la configuración de AFT mediante la creación de una canalización de Terraform, que está estructurada para adaptarse fácilmente a la implementación inicial o a las actualizaciones posteriores.
La seguridad y la integridad de los datos son las principales prioridades AWS, por lo que el archivo de estado de Terraform, que es un componente fundamental que rastrea el estado de la infraestructura y las configuraciones administradas, se almacena de forma segura en un depósito de Amazon Simple Storage Service (Amazon S3). Este depósito está configurado con varias medidas de seguridad, como el cifrado del lado del servidor y políticas para bloquear el acceso público, a fin de garantizar que el estado de Terraform esté protegido contra el acceso no autorizado y las filtraciones de datos.
La cuenta de administración organiza y supervisa todo el entorno, por lo que es un recurso fundamental en él. AWS Control Tower Este patrón sigue las AWS mejores prácticas y garantiza que el proceso de implementación no solo sea eficiente, sino que también se alinee con los estándares de seguridad y gobernanza, a fin de ofrecer una forma integral, segura y eficiente de implementar la AFT en su entorno. AWS
Para obtener más información sobre AFT, consulte la AWS Control Tower documentación.
Requisitos previos y limitaciones
Requisitos previos
Un entorno básico de AWS múltiples cuentas con las siguientes cuentas como mínimo: cuenta de administración, cuenta de Log Archive, cuenta de auditoría y una cuenta adicional para la administración de AFT.
Un AWS Control Tower entorno establecido. La cuenta de administración debe estar configurada correctamente, ya que la CloudFormation plantilla se implementará en ella.
Los permisos necesarios en la cuenta AWS de administración. Necesitará permisos suficientes para crear y administrar recursos, como depósitos, AWS Lambda funciones AWS Identity and Access Management (IAM) y AWS CodePipeline proyectos de S3.
Familiaridad con Terraform. Es importante comprender los conceptos básicos y el flujo de trabajo de Terraform porque la implementación implica generar y administrar las configuraciones de Terraform.
Limitaciones
Tenga en cuenta las cuotas de AWS recursos de su cuenta. La implementación podría crear varios recursos y, si se produjeran cuotas de servicio, se podría impedir el proceso de implementación.
La plantilla está diseñada para versiones específicas de Terraform y. Servicios de AWS La actualización o el cambio de versiones pueden requerir modificaciones en la plantilla.
Versiones de producto
Terraform, versión 1.5.7 o posterior
AFT versión 1.11.1 o posterior
Arquitectura
Pila de tecnología de destino
AWS CloudFormation
AWS CodeBuild
AWS CodeCommit
AWS CodePipeline
Amazon EventBridge
IAM
AWS Lambda
Amazon S3
Arquitectura de destino
El siguiente diagrama ilustra la implementación analizada en este patrón.
El flujo de trabajo consta de tres tareas principales: crear los recursos, generar el contenido y ejecutar la canalización.
Crear los recursos
La CloudFormation plantilla que se proporciona con este patrón
Un CodeCommit repositorio para almacenar el código de arranque de AFT Terraform
Un depósito de S3 para almacenar el archivo de estado de Terraform asociado a la implementación de AFT
¿ CodePipeline Una canalización
Dos CodeBuild proyectos para implementar el plan Terraform y aplicar comandos en diferentes etapas del proceso
Funciones y servicios de IAM CodeBuild CodePipeline
Un segundo depósito de S3 para almacenar los artefactos relacionados con el tiempo de ejecución de la canalización
Una EventBridge regla para capturar los cambios del CodeCommit repositorio en la
main
sucursalOtra función de IAM para la regla EventBridge
Además, si estableces el Generate AFT Files
parámetro de la CloudFormation plantilla entrue
, la plantilla crea los siguientes recursos adicionales para generar el contenido:
Un depósito de S3 para almacenar el contenido generado y utilizarlo como fuente del CodeCommit repositorio
Una función Lambda para procesar los parámetros dados y generar el contenido apropiado
Una función de IAM para ejecutar la función Lambda
Un recurso CloudFormation personalizado que ejecuta la función Lambda cuando se implementa la plantilla
Generar el contenido
Para generar los archivos de arranque AFT y su contenido, la solución utiliza una función Lambda y un bucket S3. La función crea una carpeta en el depósito y, a continuación, crea dos archivos dentro de la carpeta: main.tf
y. backend.tf
La función también procesa los CloudFormation parámetros proporcionados y rellena estos archivos con código predefinido, sustituyendo los valores de los parámetros respectivos.
Para ver el código que se utiliza como plantilla para generar los archivos, consulte el GitHub repositorio
main.tf
module "aft" { source = "github.com/aws-ia/terraform-aws-control_tower_account_factory?ref=<aft_version>" # Required variables ct_management_account_id = "<ct_management_account_id>" log_archive_account_id = "<log_archive_account_id>" audit_account_id = "<audit_account_id>" aft_management_account_id = "<aft_management_account_id>" ct_home_region = "<ct_home_region>" # Optional variables tf_backend_secondary_region = "<tf_backend_secondary_region>" aft_metrics_reporting = "<false|true>" # AFT Feature flags aft_feature_cloudtrail_data_events = "<false|true>" aft_feature_enterprise_support = "<false|true>" aft_feature_delete_default_vpcs_enabled = "<false|true>" # Terraform variables terraform_version = "<terraform_version>" terraform_distribution = "<terraform_distribution>" }
backend.tf
terraform { backend "s3" { region = "<aft-main-region>" bucket = "<s3-bucket-name>" key = "aft-setup.tfstate" } }
Durante la creación del CodeCommit repositorio, si estableces el Generate AFT Files
parámetro entrue
, la plantilla utilizará el depósito de S3 con el contenido generado como fuente de la main
rama para rellenar automáticamente el repositorio.
Ejecutando la canalización
Una vez creados los recursos y configurados los archivos de arranque, se ejecuta la canalización. La primera etapa (Fuente) busca el código fuente de la rama principal del repositorio, y la segunda etapa (Compilación) ejecuta el comando Terraform plan y genera los resultados para su revisión. En la tercera etapa (aprobación), el proceso espera a que se lleve a cabo una acción manual para aprobar o rechazar la última etapa (implementación). En la última etapa, la canalización ejecuta el apply
comando Terraform utilizando como entrada el resultado del plan
comando Terraform anterior. Por último, un rol multicuenta y los permisos de la cuenta de administración se utilizan para crear los recursos de AFT en la cuenta de administración de AFT.
Herramientas
Servicios de AWS
AWS CloudFormationle ayuda a configurar los recursos de AWS, aprovisionarlos de forma rápida y coherente y gestionarlos durante todo su ciclo de vida en todas las cuentas y regiones 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 implementación.
AWS CodeCommites un servicio de control de versiones que te ayuda a almacenar y gestionar de forma privada los repositorios de Git sin necesidad de gestionar tu propio sistema de control de código fuente.
AWS CodePipelinete 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 Lambdaes un servicio informático que ejecuta el código en respuesta a eventos y administra automáticamente los recursos informáticos, lo que proporciona una forma rápida de crear una aplicación moderna y sin servidor para la producción.
AWS SDK for Python (Boto3)
es un kit de desarrollo de software que le ayuda a integrar su aplicación, biblioteca o script de Python con los servicios de AWS.
Otras herramientas
Terraform
es una herramienta de infraestructura como código (IaC) que le permite crear, cambiar y versionar la infraestructura de forma segura y eficiente. Esto incluye componentes de bajo nivel, como instancias de procesamiento, almacenamiento y redes, y componentes de alto nivel, como entradas de DNS y funciones de SaaS. Python
es un lenguaje de programación potente y fácil de aprender. Cuenta con estructuras de datos eficientes de alto nivel y proporciona un enfoque simple pero efectivo para la programación orientada a objetos.
Repositorio de código
El código de este patrón está disponible en el repositorio bootstrap Pipeline de GitHub AFT
Para ver el repositorio AFT oficial, consulte AWS Control Tower Account Factory for Terraform
Prácticas recomendadas
Al implementar AFT mediante la CloudFormation plantilla proporcionada, le recomendamos que siga las mejores prácticas para garantizar una implementación segura, eficiente y exitosa. Las pautas y recomendaciones clave para implementar y operar la AFT incluyen las siguientes.
Revisión exhaustiva de los parámetros: revise y comprenda cuidadosamente cada parámetro de la CloudFormation plantilla. La configuración precisa de los parámetros es crucial para la correcta configuración y funcionamiento de la AFT.
Actualizaciones periódicas de la plantilla: mantenga la plantilla actualizada con las últimas AWS funciones y versiones de Terraform. Las actualizaciones periódicas le ayudan a aprovechar las nuevas funciones y a mantener la seguridad.
Control de versiones: fije la versión de su módulo AFT y, si es posible, utilice una implementación AFT independiente para realizar las pruebas.
Alcance: utilice AFT únicamente para implementar barandas y personalizaciones de infraestructura. No lo use para implementar su aplicación.
Revestimiento y validación: la canalización AFT requiere una configuración de Terraform validada y revestida. Ejecute lint, valide y pruebe antes de enviar la configuración a los repositorios de AFT.
Módulos de Terraform: cree código de Terraform reutilizable como módulos y especifique siempre las versiones de Terraform y del AWS proveedor para que se adapten a los requisitos de su organización.
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Prepare el AWS Control Tower entorno. | Instálelo y AWS Control Tower configúrelo en su AWS entorno para garantizar una administración y un gobierno centralizados para su Cuentas de AWS. Para obtener más información, consulte Primeros pasos AWS Control Tower en la AWS Control Tower documentación. | Administrador de la nube |
Inicie la cuenta de administración de AFT. | Utilice AWS Control Tower Account Factory para lanzar una nueva Cuenta de AWS que sirva como su cuenta de administración de AFT. Para obtener más información, consulte Aprovisionar cuentas con AWS Service Catalog Account Factory en la AWS Control Tower documentación. | Administrador de la nube |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Inicie la CloudFormation plantilla. | En esta epopeya, despliega la CloudFormation plantilla proporcionada con esta solución para configurar la canalización de arranque de AFT en su cuenta AWS de administración. The Pipeline implementa la solución AFT en la cuenta de administración de AFT que configuraste en la epopeya anterior. Paso 1: Abre la consola AWS CloudFormation
Paso 2: Crea una pila nueva
Paso 3: Configurar los parámetros de la pila
Paso 4: Decida la generación de archivos
Paso 5: Rellena AWS Control Tower y AFT con los detalles de la cuenta
Paso 6: Configurar las opciones de AFT
Paso 7: Especificar las versiones
Paso 8: Revise y cree la pila
Paso 9: Supervise la creación de la pila
Paso 10: Verificar la implementación
| Administrador de la nube |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Rellene el repositorio bootstrap de AFT. | (Opcional) Tras implementar la CloudFormation plantilla, puede rellenar o validar el contenido del repositorio bootstrap de AFT recién creado y comprobar si la canalización se ha ejecutado correctamente. Si establece el Paso 1: Rellene el repositorio
Paso 2: Confirma y envía tus cambios
| Administrador de la nube |
Valide la canalización de arranque de AFT. | Paso 1: Ver la canalización
Paso 2: Aprobar los resultados del plan Terraform
Paso 3: espere a que se despliegue
Paso 4: Compruebe los recursos creados
| Administrador de la nube |
Resolución de problemas
Problema | Solución |
---|---|
La función Lambda personalizada incluida en la CloudFormation plantilla falla durante la implementación. | Compruebe la función Lambda en los CloudWatch registros de Amazon para identificar el error. Los registros proporcionan información detallada y pueden ayudar a identificar el problema específico. Confirme que la función Lambda tiene los permisos necesarios y que las variables de entorno se han configurado correctamente. |
Se producen errores en la creación o administración de los recursos debido a permisos inadecuados. | Revise las funciones y políticas de IAM asociadas a la función CodeBuild Lambda y otros servicios involucrados en la implementación. Confirme que tienen los permisos necesarios. Si hay problemas con los permisos, ajuste las políticas de IAM para conceder el acceso necesario. |
Estás utilizando una versión anticuada de la CloudFormation plantilla con versiones más recientes Servicios de AWS o de Terraform. | Actualiza la CloudFormation plantilla con regularidad para que sea compatible con las versiones más recientes AWS y las de Terraform. Consulte las notas de la versión o la documentación para ver si hay cambios o requisitos específicos de la versión. |
Servicio de AWS Las cuotas se alcanzan durante la implementación. | Antes de implementar la canalización, compruebe Servicio de AWS las cuotas de recursos, como los buckets de S3, las funciones de IAM y las funciones de Lambda. Solicita aumentos si es necesario. Para obtener más información, consulte Servicio de AWS las cuotas en el AWS sitio web. |
Se producen errores debido a parámetros de entrada incorrectos en la CloudFormation plantilla. | Compruebe todos los parámetros de entrada para ver si hay errores tipográficos o valores incorrectos. Confirme que los identificadores de recursos, como los identificadores de cuentas y los nombres de las regiones, sean correctos. |
Recursos relacionados
Para implementar este patrón correctamente, revise los siguientes recursos. Estos recursos proporcionan información y orientación adicionales que pueden ser invaluables para configurar y administrar la AFT mediante el uso AWS CloudFormation.
AWSdocumentación:
AWS Control Tower La guía del usuario ofrece información detallada sobre la configuración y la administración AWS Control Tower.
AWS CloudFormation la documentación proporciona información sobre las CloudFormation plantillas, las pilas y la administración de recursos.
Políticas y mejores prácticas de IAM:
Las prácticas recomendadas de seguridad en IAM explican cómo ayudar a proteger los AWS recursos mediante el uso de las funciones y políticas de IAM.
Terraform en: AWS
La documentación de Terraform AWS Provider
proporciona información completa sobre el uso de Terraform con. AWS
Servicio de AWS cuotas:
Servicio de AWS cuotas proporciona información sobre cómo ver Servicio de AWS las cuotas y cómo solicitar aumentos.