Cloud & Infraestrutura

Dominando AWS Config e CloudTrail: Compliance, Auditoria e Rastreabilidade em Projetos Reais

7 min de leitura

Dominando AWS Config e CloudTrail: Compliance, Auditoria e Rastreabilidade em Projetos Reais

AWS Config: Fundação da Compliance Contínua O AWS Config é um serviço que monitora continuamente a configuração dos seus recursos na AWS, registrando mudanças e permitindo auditar o estado atual versus o desejado. Diferentemente de snapshots pontuais, ele oferece um histórico completo das alterações em seus ativos. Isso é fundamental em ambientes corporativos onde compliance é não-negociável. Para começar, você precisa habilitar o Config em sua conta. Ele criará um bucket S3 para armazenar os snapshots de configuração. Aqui está como configurar via CLI: Configurando Regras de Compliance Regras no Config avaliam se seus recursos estão em conformidade com policies definidas. Você pode usar regras pré-construídas da AWS ou criar customizadas. Exemplo prático: garantir que todas as instâncias EC2 possuem tags obrigatórias. CloudTrail: Rastreamento Detalhado de Ações CloudTrail registra quem fez o quê, quando e de onde em sua conta AWS. Enquanto Config mostra o estado dos recursos, CloudTrail mostra as ações que modificaram esse estado. Essa dupla é essencial

<h2>AWS Config: Fundação da Compliance Contínua</h2>

<p>O AWS Config é um serviço que monitora continuamente a configuração dos seus recursos na AWS, registrando mudanças e permitindo auditar o estado atual versus o desejado. Diferentemente de snapshots pontuais, ele oferece um histórico completo das alterações em seus ativos. Isso é fundamental em ambientes corporativos onde compliance é não-negociável.</p>

<p>Para começar, você precisa habilitar o Config em sua conta. Ele criará um bucket S3 para armazenar os snapshots de configuração. Aqui está como configurar via CLI:</p>

<pre><code class="language-bash">aws configservice put-config-recorder \

--config-recorder-name default \

--role-arn arn:aws:iam::123456789012:role/config-role

aws configservice start-config-recorder \

--config-recorder-names default

aws configservice put-delivery-channel \

--delivery-channel-name default \

--s3-bucket-name meu-config-bucket</code></pre>

<h3>Configurando Regras de Compliance</h3>

<p>Regras no Config avaliam se seus recursos estão em conformidade com policies definidas. Você pode usar regras pré-construídas da AWS ou criar customizadas. Exemplo prático: garantir que todas as instâncias EC2 possuem tags obrigatórias.</p>

<pre><code class="language-python">import boto3

config_client = boto3.client(&#039;config&#039;)

Usar regra gerenciada da AWS

config_client.put_config_rule(

ConfigRuleName=&#039;required-tags-rule&#039;,

Source={

&#039;Owner&#039;: &#039;AWS&#039;,

&#039;SourceIdentifier&#039;: &#039;REQUIRED_TAGS&#039;

},

Scope={

&#039;ComplianceResourceTypes&#039;: [&#039;AWS::EC2::Instance&#039;]

},

InputParameters={

&#039;tag1Key&#039;: &#039;Environment&#039;,

&#039;tag2Key&#039;: &#039;Owner&#039;,

&#039;tag3Key&#039;: &#039;CostCenter&#039;

}

)

Verificar status de compliance

response = config_client.describe_compliance_by_config_rule()

for rule in response[&#039;ComplianceByConfigRules&#039;]:

print(f&quot;{rule[&#039;ConfigRuleName&#039;]}: {rule[&#039;Compliance&#039;][&#039;ComplianceType&#039;]}&quot;)</code></pre>

<h2>CloudTrail: Rastreamento Detalhado de Ações</h2>

<p>CloudTrail registra <strong>quem fez o quê, quando e de onde</strong> em sua conta AWS. Enquanto Config mostra o estado dos recursos, CloudTrail mostra as ações que modificaram esse estado. Essa dupla é essencial para auditoria forense e compliance regulatório como SOC 2, ISO 27001 e HIPAA.</p>

<h3>Configuração Básica e Multi-Region</h3>

<p>CloudTrail deve ser habilitado em todas as regiões para visibilidade completa. O serviço pode ser configurado via console, mas automação é mais confiável:</p>

<pre><code class="language-python">import boto3

trail_client = boto3.client(&#039;cloudtrail&#039;)

Criar trail multi-region

trail_client.create_trail(

Name=&#039;OrganizationTrail&#039;,

S3BucketName=&#039;meu-cloudtrail-bucket&#039;,

IncludeGlobalServiceEvents=True,

IsMultiRegionTrail=True,

EnableLogFileValidation=True,

TagsList=[

{&#039;Key&#039;: &#039;Environment&#039;, &#039;Value&#039;: &#039;Production&#039;},

{&#039;Key&#039;: &#039;Compliance&#039;, &#039;Value&#039;: &#039;Required&#039;}

]

)

Iniciar logging

trail_client.start_logging(Name=&#039;OrganizationTrail&#039;)

Verificar eventos recentes

events_client = boto3.client(&#039;cloudtrail&#039;)

response = events_client.lookup_events(

LookupAttributes=[

{

&#039;AttributeKey&#039;: &#039;ResourceType&#039;,

&#039;AttributeValue&#039;: &#039;AWS::EC2::Instance&#039;

}

],

MaxResults=50

)

for event in response[&#039;Events&#039;]:

print(f&quot;{event[&#039;EventTime&#039;]}: {event[&#039;EventName&#039;]} by {event[&#039;Username&#039;]}&quot;)</code></pre>

<h3>Análise com EventBridge e Lambda</h3>

<p>Para uma resposta real-time a eventos suspeitos, integre CloudTrail com EventBridge:</p>

<pre><code class="language-python">import json

import boto3

import hashlib

def lambda_handler(event, context):

&quot;&quot;&quot;Analisa eventos CloudTrail suspeitos&quot;&quot;&quot;

detail = event[&#039;detail&#039;]

event_name = detail[&#039;eventName&#039;]

source_ip = detail[&#039;sourceIPAddress&#039;]

principal = detail[&#039;userIdentity&#039;].get(&#039;principalId&#039;, &#039;Unknown&#039;)

Alertar se ações perigosas são executadas fora do horário comercial

suspicious_actions = [

&#039;DeleteDBInstance&#039;, &#039;DeleteBucket&#039;, &#039;StopInstances&#039;,

&#039;ModifyDBInstance&#039;, &#039;PutBucketPolicy&#039;

]

if event_name in suspicious_actions:

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

sns.publish(

TopicArn=&#039;arn:aws:sns:us-east-1:123456789012:security-alerts&#039;,

Subject=f&#039;Ação Suspeita Detectada: {event_name}&#039;,

Message=f&quot;&quot;&quot;

Evento: {event_name}

Principal: {principal}

IP: {source_ip}

Timestamp: {detail[&#039;eventTime&#039;]}

Detalhes: {json.dumps(detail, indent=2, default=str)}

&quot;&quot;&quot;

)

return {

&#039;statusCode&#039;: 200,

&#039;body&#039;: json.dumps(&#039;Análise concluída&#039;)

}</code></pre>

<h2>Implementação Integrada em Produção</h2>

<p>Na prática, Config e CloudTrail trabalham juntos. Config monitora o estado atual (conformidade), enquanto CloudTrail mostra quem causou mudanças não-conformes. Combine isso com AWS Systems Manager Session Manager para auditoria completa de sessões de shell.</p>

<h3>Exemplo Real: Dashboard de Compliance</h3>

<pre><code class="language-python">import boto3

from datetime import datetime, timedelta

def gerar_relatorio_compliance():

&quot;&quot;&quot;Gera relatório consolidado de compliance&quot;&quot;&quot;

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

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

Obter recursos não-conformes

response = config.describe_compliance_by_resource(

ComplianceTypes=[&#039;NON_COMPLIANT&#039;]

)

nao_conforme = {}

for item in response[&#039;ComplianceByResources&#039;]:

resource_type = item[&#039;ResourceType&#039;]

if resource_type not in nao_conforme:

nao_conforme[resource_type] = 0

nao_conforme[resource_type] += 1

Obter eventos de mudança nos últimos 7 dias

start_time = datetime.utcnow() - timedelta(days=7)

eventos = cloudtrail.lookup_events(

MaxResults=50,

StartTime=start_time

)

Correlacionar: qual usuario causou não-conformidade?

print(&quot;=== RELATÓRIO DE COMPLIANCE ===\n&quot;)

print(&quot;Recursos Não-Conformes por Tipo:&quot;)

for tipo, count in nao_conforme.items():

print(f&quot; {tipo}: {count}&quot;)

print(f&quot;\nÚltimos eventos de mudança ({len(eventos[&#039;Events&#039;])} registros):&quot;)

for event in eventos[&#039;Events&#039;][:10]:

print(f&quot; {event[&#039;EventTime&#039;]}: {event[&#039;EventName&#039;]} ({event[&#039;Username&#039;]})&quot;)

return {&#039;nao_conforme&#039;: nao_conforme, &#039;eventos_recentes&#039;: len(eventos[&#039;Events&#039;])}</code></pre>

<h2>Conclusão</h2>

<p>Os três aprendizados principais que você deve levar desta aula são: <strong>(1) AWS Config fornece visibilidade contínua do estado de conformidade dos seus recursos</strong>, permitindo detectar desvios rapidamente; <strong>(2) CloudTrail oferece rastreabilidade irrefutável de quem fez o quê e quando</strong>, sendo essencial para auditorias e investigações forenses; <strong>(3) a integração entre essas ferramentas com EventBridge e Lambda permite automação de respostas</strong>, reduzindo a carga manual e acelerando a remediação de problemas de compliance em tempo real.</p>

<p>Implemente essas soluções em seus ambientes de teste primeiro. A compliance não é um projeto pontual, mas uma prática contínua que amadurece conforme você refina suas regras e processos.</p>

<h2>Referências</h2>

<ul>

<li><a href="https://docs.aws.amazon.com/config/latest/developerguide/getting-started.html" target="_blank" rel="noopener noreferrer">AWS Config User Guide - Getting Started</a></li>

<li><a href="https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-management-events-with-cloudtrail.html" target="_blank" rel="noopener noreferrer">CloudTrail Documentation - Logging Management Events</a></li>

<li><a href="https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/welcome.html" target="_blank" rel="noopener noreferrer">AWS Well-Architected Framework - Security Pillar</a></li>

<li><a href="https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-log-file-examples.html" target="_blank" rel="noopener noreferrer">CloudTrail Log File Examples</a></li>

<li><a href="https://docs.aws.amazon.com/config/latest/developerguide/remediation-strategies.html" target="_blank" rel="noopener noreferrer">Automating Remediation with AWS Config Rules</a></li>

</ul>

Comentários

Mais em Cloud & Infraestrutura

Guia Completo de Billing e Cost Explorer: Tags, Budgets e Alertas de Custo
Guia Completo de Billing e Cost Explorer: Tags, Budgets e Alertas de Custo

Introdução: Por que Gerenciar Custos na Cloud? Gerenciar custos em ambientes...

Nginx: o que é, como funciona e por que vale a pena usar
Nginx: o que é, como funciona e por que vale a pena usar

Servidor travando com poucos acessos simultâneos? O Nginx resolve. Entenda su...

Guia Completo de NAT Gateway, VPC Peering e Transit Gateway na Prática
Guia Completo de NAT Gateway, VPC Peering e Transit Gateway na Prática

NAT Gateway: Permitindo Acesso à Internet de Forma Segura O NAT Gateway é um...