Publicação Técnica · Amazon Web Services
O que é o AWS Landing Zone e como implementá-lo usando Terraform
Quando empresas começam a utilizar a nuvem da AWS, elas enfrentam o desafio de estruturar suas contas e serviços de forma segura, escalável…
Palavras-chave
Quando empresas começam a utilizar a nuvem da AWS, elas enfrentam o desafio de estruturar suas contas e serviços de forma segura, escalável e gerenciável. É aqui que entra o conceito de AWS Landing Zone. Neste post, vamos explorar o que é o AWS Landing Zone, seus benefícios e como criar uma arquitetura de referência utilizando Terraform.
O que é o AWS Landing Zone?
Conforme descreve o material oficial da AWS:
Uma landing zone é um AWS ambiente bem arquitetado, com várias contas, escalável e seguro. Um ponto a partir do qual sua organização pode iniciar e implantar rapidamente workloads e aplicativos com confiança em seu ambiente de segurança e infraestrutura. A construção de uma zona de pouso envolve decisões técnicas e comerciais a serem tomadas em toda a estrutura de contas, rede, segurança e gerenciamento de acesso, de acordo com as metas de crescimento e negócios da sua organização para o futuro.
Ao começar a usar AWS em grande escala, você pode AWS procurar orientação prescritiva e uma abordagem para estabelecer seu ambiente. AWS as melhores práticas nessa área se concentram na necessidade de isolar recursos e cargas de trabalho em várias AWS contas (contêineres de recursos) para isolamento e escopo de reduções de impacto. A próxima seção explica por que você deseja usar várias contas.
O AWS Landing Zone é uma solução arquitetural que permite configurar um ambiente AWS inicial seguro e escalável, com boas práticas integradas. Ele ajuda organizações a configurar múltiplas contas AWS, definindo padrões de segurança, governança e operações.
Os principais elementos de uma Landing Zone são:
Organização de Contas AWS:
- Segregação de contas para workloads diferentes, como produção, desenvolvimento e auditoria.
- Permite a aplicação de Service Control Policies (SCPs) para gerenciar restrições e permissões entre contas.
Segurança e Conformidade:
- Integração com AWS IAM para definição de papéis e permissões.
- Configuração de logs centralizados com AWS CloudTrail e AWS Config para monitoramento.
- Definição de padrões de conformidade automatizados.
Rede Padronizada:
- Configuração de uma topologia de rede compartilhada que inclui Amazon VPCs, subnets e integrações entre contas.
- Uso de gateways de internet e gateways de serviço (como AWS Transit Gateway) para conectar workloads distribuídos.
Automatização e Governança:
- Uso de IaC (Infraestrutura como Código) para criar e gerenciar recursos de forma eficiente.
- Aplicação de padrões de governança e segurança desde o início do setup.

Benefícios de uma Landing Zone
A implementação de uma Landing Zone traz vários benefícios importantes para organizações de todos os tamanhos:
Segurança Aprimorada:
- Garantia de que contas e workloads seguem boas práticas de segurança.
- Logs centralizados ajudam na detecção de atividades suspeitas e auditorias.
Escalabilidade e Flexibilidade:
- Suporte à expansão rápida sem comprometer a estrutura base.
- Possibilidade de adicionar novas contas com padrões já definidos.
Padronização e Governança:
- Uniformidade nas configurações de rede, permissões e políticas.
- Controle centralizado de ações não autorizadas.
Conformidade Reguladora:
- Ferramentas como AWS Config ajudam a garantir que padrões de conformidade sejam aplicados consistentemente.
Eficiência Operacional:
- Redução de erros manuais.
- Manutenção simplificada por meio de automação.
Componentes Principais de uma Landing Zone
AWS Organizations:
- Gerencia hierarquias e relações entre contas.
- Permite a aplicação de SCPs para definir o que cada conta pode ou não fazer.
Log Arquitetônico Centralizado:
- AWS CloudTrail para monitorar eventos em todas as contas.
- AWS Config para verificar a conformidade dos recursos.
Redes e Conectividade:
- Uso de VPCs compartilhadas e AWS Transit Gateway para interligação.
- Subnets segmentadas para diferentes workloads.
Gerenciamento de Identidade:
- Uso de AWS IAM e AWS SSO para gerenciamento de acessos.
Estratégia de Custos:
- Consolidação de faturas com AWS Cost Explorer e Billing Dashboard.
Implementando uma AWS Landing Zone com Terraform
Visão Geral da Arquitetura de Referência
- Contas: Produção, Desenvolvimento, Auditoria e Logs Centralizados.
- Políticas: SCPs para aplicação de restrições.
- Rede Compartilhada: VPC centralizada com subnets públicas e privadas.
- Logs: CloudTrail e AWS Config armazenando logs em uma conta central.
- Automatização: Implementação de IaC para padrões consistentes.
Premissas para provisionamento da Landing Zone
- Configuração da conta AWS (conta de gerenciamento)
- Um usuário do IAM é configurado na conta de gerenciamento com a AWS Control Tower, permissões de organizações da AWS configuradas
- Contas da AWS na mesma organização a serem importadas (crie a função AWSControlTowerExecution necessária em cada conta, limpe a VPC padrão)
- Política de função de infraestrutura de CI/CD definida
- Usuários, grupos e permissões SSO definidos para todas as contas
- Regiões habilitadas
Criando a Landing Zone
Bootstrap da AWS Landing Zone usando a AWS Control Tower*
*ações manuais na console AWS
Crie uma Landing Zone configurando o AWS Control Tower na conta de gerenciamento (configure o Control Tower para criar o seguinte):
- OU — Segurança (InfoSec e Contas de Arquivo de Log)
- UO — Cargas de trabalho (DTAP)
Crie UOs adicionais necessárias
- OU — Infraestrutura
Inscreva-se/Crie as contas AWS necessárias
- Conta de rede para UO — Infraestrutura
- Serviços compartilhados para OU — Infraestrutura
- Qualquer conta DTAP para OU — Cargas de trabalho (DTAP)
- Conta de identidade para UO — Infraestrutura
Habilitar acesso confiável em organizações da AWS e delegar administração dos seguintes serviços
- IAM Identity Center para conta de identidade
- HUB de segurança para conta InfoSec
- Dever de guarda da AWS para conta InfoSec
- Configuração da AWS para conta InfoSec
- AWS Systems Manager para conta de serviços compartilhados
- Configurar AWS SSO (IAM Identity Center) — Conta de identidade
- Criar conjuntos de permissões do IAM Identity Center
- Criar grupos do IAM Identity Center
- Crie usuários do IAM Identity Center e atribua-os a grupos
- Associar grupos do IAM Identity Center a conjuntos de permissões e atribuí-los às respectivas contas
- Configurar AWS Security Hub — Conta InfoSec
Na conta principal, configure o AWS Organizations e crie as contas
data “aws_caller_identity” “current” {}
provider “aws” {
region = “us-east-1”
}
resource “aws_organizations_organization” “main” {
feature_set = “ALL”
}
resource "aws_organizations_account" "prod" {
name = "Production"
email = "prod@example.com"
role_name = "OrganizationAccountAccessRole"
}
resource "aws_organizations_account" "dev" {
name = "Development"
email = "dev@example.com"
role_name = "OrganizationAccountAccessRole"
}
resource "aws_organizations_account" "logs" {
name = "Logs"
email = "logs@example.com"
role_name = "OrganizationAccountAccessRole"
}
Na conta principal, configure as Políticas e SCPs
resource "aws_organizations_policy" "deny_s3_public_access" {
name = "DenyS3PublicAccess"
description = "Prevents public access to S3 buckets"
content = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyS3PublicAccess",
"Effect": "Deny",
"Action": "s3:PutBucketPolicy",
"Resource": "*",
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "public-read"
}
}
}
]
}
EOF
}
resource "aws_organizations_policy_attachment" "attach_policy" {
policy_id = aws_organizations_policy.deny_s3_public_access.id
target_id = aws_organizations_account.prod.id
}
Na conta de logs, crie os Logs Centralizados
resource “aws_s3_bucket” “centralized_logs” {
bucket = “landing-zone-central-logs”
acl = “private”
}
resource “aws_cloudtrail” “main” {
name = “OrganizationTrail”
s3_bucket_name = aws_s3_bucket.centralized_logs.bucket
is_multi_region_trail = true
is_organization_trail = true
}
Na conta redes, crie as Redes Compartilhadas
resource “aws_vpc” “shared” {
cidr_block = “10.0.0.0/16”
enable_dns_support = true
enable_dns_hostnames = true
tags = {
Name = “Shared-VPC”
}
}
resource “aws_subnet” “public” {
count = 2
vpc_id = aws_vpc.shared.id
cidr_block = cidrsubnet(aws_vpc.shared.cidr_block, 4, count.index)
map_public_ip_on_launch = true
availability_zone = data.aws_availability_zones.available.names[count.index]
}
Uma AWS Landing Zone bem configurada é essencial para garantir segurança, escalabilidade e governança no uso da nuvem. Com o uso do Terraform, você pode automatizar a criação de uma arquitetura consistente e personalizada para atender às necessidades da sua organização. Este guia detalhado serve como um ponto de partida para construir ambientes robustos na AWS. Se você tiver dúvidas ou sugestões, deixe seu comentário!
Comentários
Todo comentário passa por moderação antes de aparecer aqui. Nada é publicado automaticamente.
Carregando…