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.
Implementación y administración de los controles de AWS Control Tower mediante Terraform
Creado por Iker Reina Fuente (AWS) e Ivan Girardi (AWS)
Repositorio de código: Implemente y gestione los controles de la Torre de Control de AWS mediante Terraform | Entorno: producción | Tecnologías: seguridad, identidad y conformidad CloudNative; infraestructura; administración y gobierno |
Carga de trabajo: código abierto | Servicios de AWS: AWS Organizations; AWS Control Tower |
Resumen
Este patrón describe cómo utilizar los controles de la Torre de Control Tower de AWS, HashiCorp Terraform y la infraestructura como código (IaC) para implementar y administrar controles de seguridad preventivos, de detección y proactivos. Un control (también conocido como barrera de protección) es una regla de alto nivel que proporciona gobernanza continua para su entorno general de AWS Control Tower. Por ejemplo, puede usar controles para exigir registrarse en sus cuentas de AWS y, a continuación, configurar notificaciones automáticas si se producen eventos específicos relacionados con la seguridad.
AWS Control Tower ayuda a implementar controles preventivos, de detección y proactivos que regulen sus recursos de AWS y supervisen el cumplimiento en varias cuentas de AWS. Cada control aplica una única regla. En este patrón, debe utilizar la plantilla de IaC proporcionada para especificar qué controles desea implementar en su entorno.
Los controles de AWS Control Tower se aplican a toda una unidad organizativa (OU), y el control afecta a todas las cuentas de AWS de la OU. Por lo tanto, cuando los usuarios realicen cualquier acción en cualquier cuenta de su zona de aterrizaje, la acción queda sujeta a los controles que rigen la OU.
La implementación de los controles de AWS Control Tower ayuda a establecer una base de seguridad sólida para su AWS landing zone. Al usar este patrón para implementar los controles como IaC a través de Terraform, puede estandarizar los controles en su zona de aterrizaje e implementarlos y administrarlos de manera más eficiente.
Para implementar los controles de AWS Control Tower como IaC, también puede usar AWS Cloud Development Kit (AWS CDK) en lugar de Terraform. Para obtener más información, consulte Implementación y administración de los controles de la Torre de Control de AWS mediante AWS CDK y AWS CloudFormation.
Público objetivo
Este patrón se recomienda para los usuarios que tengan experiencia con AWS Control Tower, Terraform y AWS Organizations.
Requisitos previos y limitaciones
Requisitos previos
Cuentas de AWS activas administradas como una organización en AWS Organizations y en una zona de aterrizaje de AWS Control Tower. Para obtener instrucciones, consulte Crear una estructura de cuentas
(AWS Well-Architected Labs). Interfaz de la línea de comandos de AWS (AWS CLI) instalada y configurada.
Un rol de AWS Identity and Access Management (IAM) en la cuenta de administración que tiene permisos para implementar este patrón. Para obtener más información sobre los permisos necesarios y un ejemplo de política, consulte Permisos con privilegios mínimos para el rol de IAM en la sección de Información adicional de este patrón.
Permisos para asumir el rol de IAM en la cuenta de administración.
Aplique el control basado en la política de control de servicio (SCP) con el identificador CT.CLOUDFORMATION.PR.1. Este SCP debe estar activado para implementar controles proactivos. Para obtener instrucciones, consulte No permitir la administración de tipos de recursos, módulos y enlaces en el CloudFormation registro de AWS.
Terraform CLI, instalada
(documentación de Terraform). Terraform AWS Provider, configurado
(documentación de Terraform). Backend de Terraform, configurado
(documentación de Terraform).
Versiones de producto
AWS Control Tower versión 3.0 o posterior
Terraform versión 1.5 o posterior
Terraform AWS Provider versión 4.67 o posterior
Arquitectura
Arquitectura de destino
En esta sección se ofrece información general sobre esta solución y la arquitectura establecida en el código de ejemplo. El siguiente diagrama muestra los controles implementados en las distintas cuentas de la OU.
Los controles de AWS Control Tower se clasifican según su comportamiento y su orientación.
Existen tres tipos principales de comportamientos de control:
Los controles preventivos están diseñados para evitar que se produzcan acciones. Se implementan con políticas de control de servicio (SCP) en AWS Organizations. El estado de una medida de seguridad preventiva es uno de los siguientes: aplicado o no habilitado. Las medidas de seguridad preventivas se admiten en todas las regiones de AWS.
Los controles de Detective están diseñados para detectar eventos específicos cuando ocurren y registrar la acción CloudTrail. Se implementan con las reglas AWS Config. El estado de una medida de seguridad de detección es uno de los siguientes: limpio, infraccióno no habilitado. Los controles de detección solo se aplican en las regiones de AWS compatibles con AWS Control Tower.
Los controles proactivos analizan los recursos que AWS aprovisionaría CloudFormation y comprueban si cumplen con las políticas y los objetivos de su empresa. Los recursos que no sean conformes no se aprovisionarán. Se implementan con los CloudFormation ganchos de AWS. El estado de un control proactivo es PASS, FAIL o SKIP.
Las directrices de los controles se refieren a la práctica recomendada relativa a cómo aplicar cada control a las unidades organizativas. AWS Control Tower ofrece tres categorías de directrices: obligatorias, altamente recomendadas y opcionales. La directriz de un control es independiente de su comportamiento. Para obtener más información, consulte Directrices y comportamiento de control.
Herramientas
Servicios de AWS
AWS le CloudFormation 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 Config proporciona una visión detallada de los recursos de su cuenta de AWS y de cómo están configurados. Le ayuda a identificar cómo se relacionan los recursos entre sí y cómo han cambiado sus configuraciones a lo largo del tiempo.
AWS Control Tower le ayuda a configurar y regular un entorno de cuentas múltiples de AWS siguiendo las prácticas recomendadas prescriptivas.
AWS Organizations es un servicio de administración de cuentas que le permite agrupar varias cuentas de AWS en una organización que usted crea y administra de manera centralizada.
Otras herramientas
HashiCorp Terraform
es una herramienta de código abierto de infraestructura como código (IaC) que le ayuda a utilizar el código para aprovisionar y gestionar la infraestructura y los recursos de la nube.
Repositorio de código
El código de este patrón está disponible en el repositorio de Terraform para GitHub implementar y administrar los controles de la Torre de Control de AWS
Prácticas recomendadas
Los roles de IAM usados para implementar esta solución deben cumplir con el principio de privilegio mínimo (documentación de IAM).
Siga las prácticas recomendadas para los administradores de AWS Control Tower (documentación de AWS Control Tower).
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Clonar el repositorio. | En un shell de bash, ingrese el siguiente comando: Esto clona los controles de implementación y administración de la Torre de Control de AWS mediante el repositorio Terraform
| DevOps ingeniero |
Edite el archivo de configuración del backend de Terraform. |
| DevOps ingeniero, Terraform |
Edite el archivo de configuración del proveedor de Terraform. |
| DevOps ingeniero, Terraform |
Edite el archivo de configuración. |
| DevOps ingeniero, AWS general, Terraform |
Asuma el rol de IAM de la cuenta de administración | En la cuenta de administración, asuma el rol de IAM que tiene permisos para implementar el archivo de configuración de Terraform. Para obtener más información sobre los permisos necesarios y un ejemplo de política, consulte Permisos con privilegios mínimos para el rol de IAM en la sección de Información adicional. Para obtener más información sobre cómo asumir un rol de IAM en AWS CLI, consulte Uso de un rol de IAM en AWS CLI. | DevOps ingeniero, AWS general |
Implementación del archivo de configuración |
| DevOps ingeniero, AWS general, Terraform |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Ejecute el comando de destrucción. | Ingrese el comando siguiente para eliminar los recursos implementados por este patrón.
| DevOps ingeniero, AWS general, Terraform |
Resolución de problemas
Problema | Solución |
---|---|
Error de | El control que intenta activar ya está activado en la unidad organizativa de destino. Este error puede producirse si un usuario habilitó el control manualmente a través de la consola de administración de AWS, a través de AWS Control Tower o a través de AWS Organizations. Para implementar el archivo de configuración de Terraform, puede usar cualquiera de las siguientes opciones. Opción 1: actualizar el archivo de estado actual de Terraform Puede importar el recurso al archivo de estado actual de Terraform. Al volver a ejecutar el comando
Opción 2: deshabilitar el control Si trabaja en un entorno que no es de producción, puede deshabilitar el control en la consola. Vuelva a habilitarlo al repetir los pasos de Implementar la configuración en la sección Epics.. Este enfoque no se recomienda para entornos de producción porque hay un período de tiempo en el que el control estará deshabilitado. Si desea utilizar esta opción en un entorno de producción, puede implementar controles temporales, como la aplicación temporal de un SCP en AWS Organizations. |
Recursos relacionados
Documentación de AWS
Acerca de los controles (documentación de AWS Control Tower)
Acerca de los controles (documentación de AWS Control Tower)
Implemente y gestione los controles de la Torre de Control de AWS mediante AWS CDK y AWS CloudFormation (AWS Prescriptive Guidance)
Otros recursos
Información adicional
Ejemplo de archivo variables.tfvars
A continuación se muestra un ejemplo de un archivo variables.tfvars actualizado.
controls = [ { control_names = [ "AWS-GR_ENCRYPTED_VOLUMES", ... ], organizational_unit_ids = ["ou-1111-11111111", "ou-2222-22222222"...], }, { control_names = [ "AWS-GR_SUBNET_AUTO_ASSIGN_PUBLIC_IP_DISABLED", ... ], organizational_unit_ids = ["ou-1111-11111111"...], }, ]
Permisos con privilegios mínimos para el rol de IAM
Este patrón de APG requiere que asuma un rol de IAM en la cuenta de administración. La práctica recomendada es asumir un rol con permisos temporales y limitar los permisos según el principio del privilegio mínimo. El siguiente ejemplo de política permite realizar las acciones mínimas necesarias para habilitar o deshabilitar los controles de AWS Control Tower.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "controltower:EnableControl", "controltower:DisableControl", "controltower:GetControlOperation", "controltower:ListEnabledControls", "organizations:AttachPolicy", "organizations:CreatePolicy", "organizations:DeletePolicy", "organizations:DescribeOrganization", "organizations:DetachPolicy", "organizations:ListAccounts", "organizations:ListAWSServiceAccessForOrganization", "organizations:ListChildren", "organizations:ListOrganizationalUnitsForParent", "organizations:ListParents", "organizations:ListPoliciesForTarget", "organizations:ListRoots", "organizations:UpdatePolicy" ], "Resource": "*" } ] }