Cloud & Infraestrutura

O que Todo Dev Deve Saber sobre AWS Organizations: Multi-account Strategy e Control Tower

8 min de leitura

O que Todo Dev Deve Saber sobre AWS Organizations: Multi-account Strategy e Control Tower

AWS Organizations: Fundamentos e Arquitetura Multi-conta AWS Organizations é um serviço que permite gerenciar múltiplas contas AWS de forma centralizada. Diferente de trabalhar com contas isoladas, uma estratégia multi-conta oferece segregação de ambientes, melhor controle de custos, conformidade regulatória e isolamento de segurança. Cada conta funciona como um silos independente, mas você as governa através de uma conta raiz (Management Account). A estrutura básica envolve a criação de uma organização, depois adicionar contas membro e organizá-las em Unidades Organizacionais (OUs). Você pode aplicar políticas em nível de organização que se propagam automaticamente para todas as contas filhas. Isso evita retrabalho e garante conformidade consistente. Estrutura Organizacional A hierarquia começa com a Raiz (Root), que contém tudo. Abaixo dela, você cria OUs (Organizational Units) para agrupar contas por função: desenvolvimento, produção, segurança, financeiro, etc. Cada OU pode ter políticas específicas aplicadas, criando uma governança em camadas. Criando uma Organização com AWS CLI Control Tower: Governança Automatizada AWS Control Tower é uma

<h2>AWS Organizations: Fundamentos e Arquitetura Multi-conta</h2>

<p>AWS Organizations é um serviço que permite gerenciar múltiplas contas AWS de forma centralizada. Diferente de trabalhar com contas isoladas, uma estratégia multi-conta oferece segregação de ambientes, melhor controle de custos, conformidade regulatória e isolamento de segurança. Cada conta funciona como um silos independente, mas você as governa através de uma conta raiz (Management Account).</p>

<p>A estrutura básica envolve a criação de uma organização, depois adicionar contas membro e organizá-las em Unidades Organizacionais (OUs). Você pode aplicar políticas em nível de organização que se propagam automaticamente para todas as contas filhas. Isso evita retrabalho e garante conformidade consistente.</p>

<h3>Estrutura Organizacional</h3>

<p>A hierarquia começa com a <strong>Raiz</strong> (Root), que contém tudo. Abaixo dela, você cria <strong>OUs</strong> (Organizational Units) para agrupar contas por função: desenvolvimento, produção, segurança, financeiro, etc. Cada OU pode ter políticas específicas aplicadas, criando uma governança em camadas.</p>

<pre><code class="language-bash"># Exemplo de estrutura de árvore

Root

├── OU: Produção

│ ├── Conta: Production-App-1

│ └── Conta: Production-App-2

├── OU: Desenvolvimento

│ ├── Conta: Dev-App-1

│ └── Conta: Dev-App-2

└── OU: Segurança

└── Conta: Security-Audit</code></pre>

<h3>Criando uma Organização com AWS CLI</h3>

<pre><code class="language-bash"># Criar organização

aws organizations create-organization \

--feature-set ALL

Criar OU sob a raiz

aws organizations create-organizational-unit \

--parent-id r-xxxx \

--name &quot;Producao&quot;

Criar conta

aws organizations create-account \

--account-name &quot;Production-App-1&quot; \

--email &quot;prod-app-1@empresa.com&quot;

Mover conta para OU

aws organizations move-account \

--account-id 123456789012 \

--source-parent-id r-xxxx \

--destination-parent-id ou-xxxx</code></pre>

<h2>Control Tower: Governança Automatizada</h2>

<p>AWS Control Tower é uma solução construída <strong>sobre</strong> Organizations que automatiza a criação de contas seguras e conformes. Enquanto Organizations oferece a infraestrutura, Control Tower adiciona guardrails (políticas automáticas), blueprints de conta pré-configurada e um painel centralizado de governança.</p>

<p>Control Tower cria automaticamente duas OUs: <strong>Security</strong> (para auditoria) e <strong>Sandbox</strong> (para experimentação). Você também recebe uma conta de Logging centralizada e uma de Audit. Tudo isso é configurado automaticamente com detecção de desvios em tempo real.</p>

<h3>Guardrails: Proteção Automática</h3>

<p>Guardrails são políticas de prevenção ou detecção. Um guardrail <strong>preventivo</strong> (como SCP) impede ações não conformes. Um guardrail <strong>detectivo</strong> (como Config Rules) identifica recursos não conformes e alerta você. Cada guardrail tem um nível: <strong>Foundational</strong> (essencial), <strong>Strongly Recommended</strong> (recomendado) ou <strong>Elective</strong> (opcional).</p>

<pre><code class="language-python"># Exemplo: Script Python para verificar guardrails ativos

import boto3

ct = boto3.client(&#039;controltower&#039;)

Listar guardrails habilitados

response = ct.list_enabled_controls()

for control in response[&#039;enabledControls&#039;]:

print(f&quot;Controle: {control[&#039;controlIdentifier&#039;]}&quot;)

print(f&quot;Status: {control[&#039;statusSummary&#039;][&#039;status&#039;]}&quot;)

Habilitar um guardrail específico

ct.enable_control(

targetIdentifier=&#039;ou-prod-xxxx&#039;,

controlIdentifier=&#039;arn:aws:controltower:us-east-1::control/...&#039;

)</code></pre>

<h3>Exemplo Prático: Landing Zone</h3>

<p>Quando você configura Control Tower pela primeira vez, ele cria uma <strong>Landing Zone</strong> — um ambiente base seguro com buckets S3 para logs, CloudTrail centralizado, Config Rules, e permissões de auditoria pré-configuradas.</p>

<pre><code class="language-bash"># Verificar Landing Zone status via CLI

aws controltower get-landing-zone-status

Resultado (exemplo)

{

&quot;landingZoneStatus&quot;: &quot;ACTIVE&quot;,

&quot;latestAvailableVersion&quot;: &quot;3.3&quot;,

&quot;version&quot;: &quot;3.3&quot;

}</code></pre>

<h2>Estratégia Multi-conta na Prática</h2>

<p>Uma boa estratégia multi-conta reduz risco, isola custos e facilita compliance. A segregação típica separa <strong>Produção</strong> (isolada, acesso restrito), <strong>Desenvolvimento</strong> (mais permissivo), <strong>Segurança</strong> (auditoria centralizada) e <strong>Infraestrutura Compartilhada</strong> (recursos comuns como VPN, DNS).</p>

<p>O acesso entre contas funciona via <strong>Cross-Account Roles</strong>. Uma aplicação em produção pode assumir uma role em outra conta para acessar um serviço específico. Isso é mais seguro que compartilhar credenciais de longa vida.</p>

<h3>Cross-Account Access com IAM Roles</h3>

<pre><code class="language-json">{

&quot;Version&quot;: &quot;2012-10-17&quot;,

&quot;Statement&quot;: [

{

&quot;Effect&quot;: &quot;Allow&quot;,

&quot;Principal&quot;: {

&quot;AWS&quot;: &quot;arn:aws:iam::111111111111:root&quot;

},

&quot;Action&quot;: &quot;sts:AssumeRole&quot;,

&quot;Condition&quot;: {

&quot;StringEquals&quot;: {

&quot;sts:ExternalId&quot;: &quot;unique-external-id-123&quot;

}

}

}

]

}</code></pre>

<p>A role acima, criada na conta <strong>222222222222</strong> (produção), permite que a conta <strong>111111111111</strong> (desenvolvimento) assuma seus privilégios. Você depois anexa uma política à role para definir o que ela pode fazer.</p>

<pre><code class="language-python"># Script para assumir role cross-account

import boto3

sts = boto3.client(&#039;sts&#039;)

response = sts.assume_role(

RoleArn=&#039;arn:aws:iam::222222222222:role/CrossAccountRole&#039;,

RoleSessionName=&#039;dev-session&#039;,

ExternalId=&#039;unique-external-id-123&#039;

)

Agora use as credenciais temporárias

credentials = response[&#039;Credentials&#039;]

s3_client = boto3.client(

&#039;s3&#039;,

aws_access_key_id=credentials[&#039;AccessKeyId&#039;],

aws_secret_access_key=credentials[&#039;SecretAccessKey&#039;],

aws_session_token=credentials[&#039;SessionToken&#039;]

)

Listar objetos no bucket de produção

s3_client.list_objects_v2(Bucket=&#039;prod-data-bucket&#039;)</code></pre>

<h3>Billing Consolidado</h3>

<p>Organizations oferece <strong>Consolidated Billing</strong>, agregando custos de todas as contas sob uma fatura única. Você obtém volume discounts em todos os serviços, reduzindo custos operacionais.</p>

<pre><code class="language-bash"># Listar contas e seus custos (via AWS Cost Explorer)

aws ce get-cost-and-usage \

--time-period Start=2024-01-01,End=2024-01-31 \

--granularity MONTHLY \

--metrics BlendedCost \

--group-by Type=DIMENSION,Key=LINKED_ACCOUNT</code></pre>

<h2>Conclusão</h2>

<p>Multi-account strategy com AWS Organizations resolve três problemas críticos: <strong>governança centralizada</strong> (uma só verdade), <strong>isolamento de segurança</strong> (falha em uma conta não afeta outra) e <strong>otimização de custos</strong> (controle granular por departamento). Control Tower acelera isso oferecendo guardrails automáticos e um framework pronto.</p>

<p>O aprendizado principal: não trabalhe com contas isoladas em produção. Invista tempo inicial em organizar contas por ambiente e função, configure Control Tower para automatizar conformidade, e use cross-account roles para acesso seguro. Isso não é overhead — é fundação.</p>

<h2>Referências</h2>

<ul>

<li><a href="https://docs.aws.amazon.com/organizations/" target="_blank" rel="noopener noreferrer">AWS Organizations Documentation</a></li>

<li><a href="https://docs.aws.amazon.com/controltower/" target="_blank" rel="noopener noreferrer">AWS Control Tower User Guide</a></li>

<li><a href="https://docs.aws.amazon.com/whitepapers/latest/organizing-your-aws-environment/" target="_blank" rel="noopener noreferrer">AWS Multi-Account Security Strategy</a></li>

<li><a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account.html" target="_blank" rel="noopener noreferrer">IAM Cross-Account Access Best Practices</a></li>

<li><a href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/consolidated-billing.html" target="_blank" rel="noopener noreferrer">AWS Organizations Pricing and Billing</a></li>

</ul>

Comentários

Mais em Cloud & Infraestrutura

S3 Avançado: Replication, Object Lock, Intelligent Tiering e S3 Select na Prática
S3 Avançado: Replication, Object Lock, Intelligent Tiering e S3 Select na Prática

S3 Replication: Garantindo Disponibilidade e Conformidade S3 Replication perm...

Como Usar DynamoDB: Data Modeling, GSIs, LSIs e Capacity Modes em Produção
Como Usar DynamoDB: Data Modeling, GSIs, LSIs e Capacity Modes em Produção

Data Modeling no DynamoDB O DynamoDB é um banco de dados NoSQL totalmente ger...

CloudFront: CDN, Behaviors, Cache Policies e Lambda@Edge: Do Básico ao Avançado
CloudFront: CDN, Behaviors, Cache Policies e Lambda@Edge: Do Básico ao Avançado

CloudFront: Fundamentos da CDN CloudFront é o serviço de Content Delivery Net...