AWS Admin

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

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

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:

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

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.

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']}")

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 para auditoria forense e compliance regulatório como SOC 2, ISO 27001 e HIPAA.

Configuração Básica e Multi-Region

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:

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']}")

Análise com EventBridge e Lambda

Para uma resposta real-time a eventos suspeitos, integre CloudTrail com EventBridge:

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')
    }

Implementação Integrada em Produção

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.

Exemplo Real: Dashboard de Compliance

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'])}

Conclusão

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

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.

Referências


Artigos relacionados