As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Implantar e gerenciar os controles do AWS Control Tower usando o Terraform
Criado por Iker Reina Fuente (AWS) e Ivan Girardi (AWS)
Repositório de código: implante e gerencie os controles do AWS Control Tower usando o Terraform | Ambiente: produção | Tecnologias: Segurança, identidade, conformidade; Infraestrutura CloudNative; Gestão e governança |
Workload: código aberto | Serviços da AWS: AWS Control Tower; AWS Organizations |
Resumo
Esse padrão descreve como usar os controles da AWS Control Tower, o HashiCorp Terraform e a infraestrutura como código (IaC) para implementar e administrar controles de segurança preventivos, detectivos e proativos. Um controle (também conhecido como barreira de proteção) é uma regra de alto nível que fornece governança contínua para o ambiente geral da AWS Control Tower. Por exemplo, você pode usar controles para exigir o registro de suas contas da AWS e, em seguida, configurar notificações automáticas caso ocorram eventos específicos relacionados à segurança.
O AWS Control Tower ajuda você a implementar controles para prevenção, detecção e proativação que governam seus recursos da AWS e monitoram a conformidade em várias contas da AWS. Cada controle impõe uma única regra. Neste padrão, você usa um modelo de IaC fornecido para especificar quais controles você deseja implantar em seu ambiente.
Os controles da AWS Control Tower se aplicam a uma unidade organizacional (UO) inteira, e o controle afeta todas as contas da AWS dentro da UO. Portanto, quando os usuários realizam qualquer ação em qualquer conta em sua zona de pouso, a ação está sujeita aos controles que governam a UO.
A implementação dos controles da AWS Control Tower ajuda a estabelecer uma base sólida de segurança para sua Zona de Pouso da AWS. Ao usar esse padrão para implantar os controles como IaC por meio do Terraform, você pode padronizar os controles em sua zona de pouso e implantá-los e gerenciá-los com mais eficiência.
Para implantar os controles da AWS Control Tower como IaC, você também pode usar o AWS Cloud Development Kit (AWS CDK) em vez do Terraform. Para obter mais informações, consulte Implantar e gerenciar controles da AWS Control Tower usando o AWS CDK e a AWS CloudFormation.
Público-alvo
Esse padrão é recomendado para usuários com experiência com AWS Control Tower, Terraform e AWS Organizations.
Pré-requisitos e limitações
Pré-requisitos
Contas ativas da AWS gerenciadas como uma organização no AWS Organizations e em uma zona de pouso da AWS Control Tower. Para obter instruções, consulte Criar uma estrutura de conta
(AWS Well-Architected Labs). AWS Command Line Interface (AWS CLI), instalada e configurada.
Um perfil do Identity and Access Management (AWS IAM) na conta de gerenciamento que tenha permissões para implementar esse padrão. Para obter mais informações sobre as permissões necessárias e um exemplo de política, consulte Permissões de privilégio mínimo para o perfil do IAM na seção Informações adicionais deste padrão.
Permissões para assumir o perfil do IAM na conta de gerenciamento.
Aplicar o controle baseado na política de controle de serviços (SCP) com o identificador CT.CLOUDFORMATION.PR.1. Esse SCP deve ser ativado para implantar controles proativos. Para obter instruções, consulte Proibir o gerenciamento de tipos de recursos, módulos e ganchos no registro da AWS CloudFormation .
CLI do Terraform, instalada
(documentação do Terraform) AWS Provider do Terraform, configurado
(documentação do Terraform) Backend do Terraform, configurado
(documentação do Terraform)
Versões do produto
AWS Control Tower versão 3.0 ou versão mais recente
Terraform versão 1.5 ou mais recente
Terraform AWS Provider versão 4.67 ou mais recente
Arquitetura
Arquitetura de destino
Esta seção fornece uma visão geral de alto nível dessa solução e da arquitetura estabelecida pelo código de exemplo. O diagrama a seguir mostra os controles implantados nas várias contas na UO.
Os controles do AWS Control Tower são categorizados de acordo com seu comportamento e orientação.
Há três tipos principais de comportamentos de controle:
Os controles preventivos são projetados para evitar que ações ocorram. Eles são implementados com políticas de controle de serviço (SCPs) na AWS Organizations. O status de um controle preventivo é aplicado ou não habilitado. Os controles preventivos são compatíveis em todas as regiões da AWS.
Os controles de detetive são projetados para detectar eventos específicos quando eles ocorrem e registrar a ação. CloudTrail Eles são implementados com as regras do AWS Config. O status de um controle detectivo é limpo, em violação, ou não habilitado. Os controles detectivos se aplicam somente às regiões da AWS cujo suporte é oferecido pelo AWS Control Tower.
Os controles proativos examinam os recursos que seriam provisionados pela AWS CloudFormation e verificam se eles estão em conformidade com as políticas e os objetivos da sua empresa. Os recursos que não estão em conformidade não serão provisionados. Eles são implementados com CloudFormation ganchos da AWS. O status de um controle proativo é PASS, FAIL ou SKIP.
A orientação de controle é a prática recomendada de como aplicar cada controle às suas OUs. O AWS Control Tower fornece três categorias de orientações: obrigatórias, fortemente recomendadas e eletivas. A orientação de um controle é independente do comportamento dele. Para obter mais informações, consulte Controle de comportamento e orientação.
Ferramentas
Serviços da AWS
CloudFormationA AWS ajuda você a configurar recursos da AWS, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida em todas as contas e regiões da AWS.
O AWS Config oferece uma visualização de detalhes dos recursos na sua conta da AWS e como eles estão configurados. Ajuda a identificar como os recursos estão relacionados entre si e como suas configurações foram alteradas ao longo do tempo.
O AWS Control Tower ajuda você a configurar e governar um ambiente de várias contas da AWS, seguindo as melhores práticas prescritivas.
O AWS Organizations é um serviço de gerenciamento de contas que ajuda a consolidar várias contas da AWS em uma organização que você cria e gerencia de maneira centralizada.
Outras ferramentas
HashiCorp O Terraform
é uma ferramenta de infraestrutura como código (IaC) de código aberto que ajuda você a usar o código para provisionar e gerenciar a infraestrutura e os recursos da nuvem.
Repositório de código
O código desse padrão está disponível nos controles GitHub Implante e gerencie o AWS Control Tower usando o repositório Terraform
Práticas recomendadas
O perfil do IAM usado para implantar essa solução devem seguir o princípio do privilégio mínimo (documentação do IAM).
Siga Best practices for AWS Control Tower administrators (documentação da AWS Control Tower).
Épicos
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Clonar o repositório. | Em um shell bash, insira o comando a seguir. Isso clona os controles Deploy e gerencia o AWS Control Tower usando o repositório Terraform de
| DevOps engenheiro |
Edite o arquivo de configuração do backend do Terraform. |
| DevOps engenheiro, Terraform |
Edite o arquivo de configuração de provedor do Terraform. |
| DevOps engenheiro, Terraform |
Edite o arquivo de configuração. |
| DevOps engenheiro, AWS geral, Terraform |
Provisione o perfil do IAM na conta de gerenciamento. | Na conta de gerenciamento, assuma o perfil do IAM que tem permissões para implantar o arquivo de configuração do Terraform. Para obter mais informações sobre as permissões necessárias e um exemplo de política, consulte Permissões de privilégio mínimo para o perfil do IAM na seção Informações adicionais. Para obter mais informações sobre como assumir uma função do IAM na AWS CLI, consulte Uso de perfis do IAM na AWS CLI. | DevOps engenheiro, General AWS |
Implantar o arquivo de configuração |
| DevOps engenheiro, AWS geral, Terraform |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Execute o comando destroy. | Digite o comando a seguir para remover os recursos implantados por esse padrão.
| DevOps engenheiro, AWS geral, Terraform |
Solução de problemas
Problema | Solução |
---|---|
Erro do | O controle que você está tentando ativar já está habilitado na OU de destino. Esse erro pode ocorrer se um usuário habilitar manualmente o controle por meio do Console de Gerenciamento da AWS, do AWS Control Tower ou do AWS Organizations. Para implantar o arquivo de configuração do Terraform, você pode usar uma das opções a seguir. Opção 1: atualize o arquivo de estado atual do Terraform Você pode importar o recurso para o arquivo de estado atual do Terraform. Quando você executar o comando
Opção 2: desative o controle Se você estiver trabalhando em um ambiente que não seja de produção, poderá desativar o controle no console. Reative repetindo as etapas em Implantar a configuração na seção Épicos. Essa abordagem não é recomendada para ambientes de produção porque há um período em que o controle será desativado. Se quiser usar essa opção em um ambiente de produção, você pode implementar controles temporários, como aplicar temporariamente um SCP no AWS Organizations. |
Recursos relacionados
Documentação da AWS
About controls (documentação do AWS Control Tower)
Controls library (documentação do AWS Control Tower)
Implante e gerencie os controles da AWS Control Tower usando o AWS CDK e a AWS CloudFormation (AWS Prescriptive Guidance)
Outros recursos
Mais informações
Exemplo de arquivo variables.tfvars
Veja a seguir um exemplo de um arquivo variables.tfvars atualizado.
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"...], }, ]
Permissões de privilégio mínimo para o perfil do IAM
Esse padrão do APG exige que você assuma um perfil do IAM na conta de gerenciamento. A melhor prática é assumir um perfil com permissões temporárias e limitar as permissões de acordo com o princípio do privilégio mínimo. O exemplo de política a seguir permite as ações mínimas necessárias para ativar ou desativar os controles do 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": "*" } ] }