<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('config')
Usar regra gerenciada da AWS
config_client.put_config_rule(
ConfigRuleName='required-tags-rule',
Source={
'Owner': 'AWS',
'SourceIdentifier': 'REQUIRED_TAGS'
},
Scope={
'ComplianceResourceTypes': ['AWS::EC2::Instance']
},
InputParameters={
'tag1Key': 'Environment',
'tag2Key': 'Owner',
'tag3Key': 'CostCenter'
}
)
Verificar status de compliance
response = config_client.describe_compliance_by_config_rule()
for rule in response['ComplianceByConfigRules']:
print(f"{rule['ConfigRuleName']}: {rule['Compliance']['ComplianceType']}")</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('cloudtrail')
Criar trail multi-region
trail_client.create_trail(
Name='OrganizationTrail',
S3BucketName='meu-cloudtrail-bucket',
IncludeGlobalServiceEvents=True,
IsMultiRegionTrail=True,
EnableLogFileValidation=True,
TagsList=[
{'Key': 'Environment', 'Value': 'Production'},
{'Key': 'Compliance', 'Value': 'Required'}
]
)
Iniciar logging
trail_client.start_logging(Name='OrganizationTrail')
Verificar eventos recentes
events_client = boto3.client('cloudtrail')
response = events_client.lookup_events(
LookupAttributes=[
{
'AttributeKey': 'ResourceType',
'AttributeValue': 'AWS::EC2::Instance'
}
],
MaxResults=50
)
for event in response['Events']:
print(f"{event['EventTime']}: {event['EventName']} by {event['Username']}")</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):
"""Analisa eventos CloudTrail suspeitos"""
detail = event['detail']
event_name = detail['eventName']
source_ip = detail['sourceIPAddress']
principal = detail['userIdentity'].get('principalId', 'Unknown')
Alertar se ações perigosas são executadas fora do horário comercial
suspicious_actions = [
'DeleteDBInstance', 'DeleteBucket', 'StopInstances',
'ModifyDBInstance', 'PutBucketPolicy'
]
if event_name in suspicious_actions:
sns = boto3.client('sns')
sns.publish(
TopicArn='arn:aws:sns:us-east-1:123456789012:security-alerts',
Subject=f'Ação Suspeita Detectada: {event_name}',
Message=f"""
Evento: {event_name}
Principal: {principal}
IP: {source_ip}
Timestamp: {detail['eventTime']}
Detalhes: {json.dumps(detail, indent=2, default=str)}
"""
)
return {
'statusCode': 200,
'body': json.dumps('Análise concluída')
}</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():
"""Gera relatório consolidado de compliance"""
config = boto3.client('config')
cloudtrail = boto3.client('cloudtrail')
Obter recursos não-conformes
response = config.describe_compliance_by_resource(
ComplianceTypes=['NON_COMPLIANT']
)
nao_conforme = {}
for item in response['ComplianceByResources']:
resource_type = item['ResourceType']
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("=== RELATÓRIO DE COMPLIANCE ===\n")
print("Recursos Não-Conformes por Tipo:")
for tipo, count in nao_conforme.items():
print(f" {tipo}: {count}")
print(f"\nÚltimos eventos de mudança ({len(eventos['Events'])} registros):")
for event in eventos['Events'][:10]:
print(f" {event['EventTime']}: {event['EventName']} ({event['Username']})")
return {'nao_conforme': nao_conforme, 'eventos_recentes': len(eventos['Events'])}</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>