Avançado Cloud
Logging e auditoria na cloud — CloudTrail, Cloud Audit Logs, alertas de evento
Sem logging adequado, um ataque pode passar meses sem ser detectado. Auditoria na cloud não é opcional — é o mecanismo que diferencia uma detecção em horas de uma descoberta pós-dano. CloudTrail na AWS e Cloud Audit Logs no GCP registram cada ação de controle plano, e são a base para qualquer investigação forense.
AWS CloudTrail — o que registra e o que não registra
CloudTrail registra:
- API calls de controle plano (quem criou, deletou, modificou recursos)
- Console, CLI, SDK, serviços AWS
- Ações de IAM, S3, EC2, Lambda, RDS, etc.
CloudTrail NÃO registra por padrão:
- Data events (leitura/escrita de objetos S3, invocações Lambda)
- Esses precisam ser habilitados explicitamente e geram custo adicional
# Criar uma trail multi-região com validação de integridade
aws cloudtrail create-trail \
--name trilha-producao \
--s3-bucket-name auditoria-logs-prod \
--include-global-service-events \
--is-multi-region-trail \
--enable-log-file-validation
# Habilitar data events para S3
aws cloudtrail put-event-selectors \
--trail-name trilha-producao \
--event-selectors '[{
"ReadWriteType": "All",
"IncludeManagementEvents": true,
"DataResources": [{
"Type": "AWS::S3::Object",
"Values": ["arn:aws:s3:::bucket-sensivel/"]
}]
}]'
Protegendo os logs de auditoria
Logs de CloudTrail precisam ser imutáveis. Um atacante que compromete uma conta vai tentar apagar evidências:
# Bucket de logs com Object Lock (imutabilidade via WORM)
aws s3api put-object-lock-configuration \
--bucket auditoria-logs-prod \
--object-lock-configuration '{
"ObjectLockEnabled": "Enabled",
"Rule": {
"DefaultRetention": { "Mode": "COMPLIANCE", "Days": 365 }
}
}'
# Log File Validation — detecta arquivos deletados ou corrompidos
aws cloudtrail validate-logs \
--trail-arn arn:aws:cloudtrail:us-east-1:123456789:trail/trilha-producao \
--start-time 2026-06-01T00:00:00Z
Alertas de evento com CloudWatch e EventBridge
Detecte ações críticas em tempo quase real:
# Métrica de filter — detecta uso de root account
aws logs put-metric-filter \
--log-group-name CloudTrail/DefaultLogGroup \
--filter-name RootAccountUsage \
--filter-pattern '{ $.userIdentity.type = "Root" && $.userIdentity.invokedBy NOT EXISTS && $.eventType != "AwsServiceEvent" }' \
--metric-transformations metricName=RootAccountUsage,metricNamespace=CloudTrailMetrics,metricValue=1
# Alarme no CloudWatch para a métrica acima
aws cloudwatch put-metric-alarm \
--alarm-name RootAccountUsage \
--metric-name RootAccountUsage \
--namespace CloudTrailMetrics \
--statistic Sum \
--period 300 \
--threshold 1 \
--comparison-operator GreaterThanOrEqualToThreshold \
--evaluation-periods 1 \
--alarm-actions arn:aws:sns:us-east-1:123456789:alertas-seguranca
Eventos críticos que devem gerar alerta imediato:
- Uso de conta root
- Desativação do CloudTrail ou alteração de trail
- Mudanças em IAM (criação de usuário, attach de AdministratorAccess)
- Security group com ingress 0.0.0.0/0 criado
- Bucket S3 com Block Public Access desabilitado
- Criação de access key para usuário IAM
- Tentativas de login com MFA falhando repetidamente
- GuardDuty finding de alta severidade
GCP Cloud Audit Logs
No GCP, os logs de auditoria têm três categorias:
Admin Activity → sempre ativo, gratuito — criação/exclusão de recursos
Data Access → desativado por padrão, pago — leitura de dados
System Events → ações automáticas da GCP — sempre ativo, gratuito
# Habilitar Data Access logs para Cloud Storage via gcloud
gcloud projects get-iam-policy meu-projeto --format=json > policy.json
# Editar policy.json: adicionar auditLogConfigs para storage.googleapis.com
gcloud projects set-iam-policy meu-projeto policy.json
# Criar alerta de log no GCP — exportar para Pub/Sub e processar
gcloud logging sinks create alertas-auditoria \
pubsub.googleapis.com/projects/meu-projeto/topics/alertas-cloud \
--log-filter='protoPayload.methodName="SetIamPolicy"'
Correlação e SIEM
Logs isolados não detectam ataques complexos. Envie para um SIEM:
AWS → Kinesis Firehose → S3 → Athena ou SIEM (Splunk, Elastic)
GCP → Log Sink → Pub/Sub → Dataflow → BigQuery ou SIEM
Azure → Diagnostic Settings → Event Hub → SIEM
Queries úteis (Athena sobre CloudTrail):
SELECT userIdentity.arn, eventName, COUNT(*)
FROM cloudtrail_logs
WHERE errorCode IS NOT NULL
GROUP BY 1, 2
ORDER BY 3 DESC
LIMIT 20;