tharlesson-platform/sre-automations

GitHub: tharlesson-platform/sre-automations

一个基于 Terraform 与 AWS 的 SRE 自动化平台,用于降 toil、稳治理与安全的事件响应。

Stars: 3 | Forks: 1

# AWS SRE Automation Platform (Terraform IaC) Plataforma de automações SRE para AWS, com foco em redução de toil, governança, incident response, operação segura e controle de custos. Esta base entrega **P0 + P1 implementados** com padrão modular e pronto para expansão adicional. ## 已满足目标 - Terraform `>= 1.6`, modular e reutilizável. - Multi-ambiente (`dev`, `stage`, `prod`) com `tfvars` e backend remoto (`S3 + DynamoDB lock`). - Lambdas em Python com logging estruturado, retries e tratamento de erro. - Step Functions com retries/catches/branching para workflows críticos. - EventBridge Scheduler e EventBridge Rules com enable/disable por automação. - IAM least privilege por automação. - Dry-run e flags explícitas para ações destrutivas. - Tags obrigatórias em todos os recursos aplicáveis: - `Environment` - `Application` - `Owner` - `CostCenter` - `ManagedBy=Terraform` - Naming padrão: `---` ## 仓库结构 ``` . |-- modules/ | |-- common/ | |-- lambda_automation/ | |-- eventbridge_schedule/ | |-- sfn_automation/ | |-- observability/ | |-- automation_scheduler/ | |-- automation_tag_auditor/ | |-- automation_cert_secret_monitor/ | |-- automation_orphan_cleanup/ | |-- automation_incident_evidence/ | |-- automation_ecs_rollback/ | |-- automation_backup_validation/ | |-- automation_ssm_runbooks/ | |-- automation_sg_exposure_remediation/ | |-- automation_finops_report/ | |-- automation_drift_detection/ | |-- automation_approval_bridge/ |-- stacks/ | |-- dev/ | |-- stage/ | |-- prod/ |-- lambdas/ | |-- common/ | |-- p0_environment_scheduler/ | |-- p0_tag_auditor/ | |-- p0_cert_secret_monitor/ | |-- p0_orphan_cleanup/ | |-- p0_incident_evidence/ | |-- p0_ecs_rollback/ | |-- p0_backup_validation/ | |-- p1_ssm_runbooks/ | |-- p1_sg_exposure_remediation/ | |-- p1_finops_report/ | |-- p1_drift_detection/ | |-- p1_approval_bridge/ |-- stepfunctions/ | |-- p0_ecs_rollback.asl.json | |-- p0_backup_validation.asl.json | |-- p1_sg_exposure_remediation.asl.json |-- ssm/ | |-- documents/ | |-- patching.yaml | |-- diagnostics.yaml | |-- cleanup_disk.yaml | |-- service_restart.yaml | |-- sg_remediation_approval.yaml.tmpl |-- drift/ | |-- baseline.initial.json | |-- README.md |-- env/ | |-- dev/ | |-- stage/ | |-- prod/ |-- tests/ | |-- lambdas/ |-- Makefile |-- requirements-dev.txt |-- .github/workflows/terraform-ci.yml.example ``` ## 已交付的 P0 自动化 ### 1) 非生产环境调度器 - Start/stop de EC2 e RDS. - Scale down/restore de ECS services. - Scale down/restore de Auto Scaling Groups. - Filtro por tags (`scheduler_tag_selector`). - Agendamento por EventBridge Scheduler. - Lambda com suporte opcional a SSM pre-stop em EC2. ### 2) 强制标签审计 - Detecta recursos sem tags obrigatórias. - Alerta via SNS. - Opção de auto-remediação (`AUTO_REMEDIATE`) com dry-run. ### 3) 证书与密钥监控 - Verifica certificados ACM próximos da expiração. - Verifica secrets com rotação próxima ou em estado problemático. - Alerta via SNS. ### 4) 受控的孤儿资源清理 - Snapshots antigos. - EBS volumes órfãos. - ENIs órfanos. - Elastic IPs sem uso. - Imagens ECR antigas (untagged). - Log groups antigos. - Modo relatório (`dry_run=true`) e execução protegida por flag. ### 5) 事件取证收集器 - Trigger por evento de alarme (EventBridge Rule). - Coleta: - contexto do alarme e métricas - logs recentes - eventos ECS/EKS - status de target groups - eventos recentes de deploy - Salva JSON em S3 e notifica via SNS. ### 6) ECS 回滚工作流(Step Functions) - Descobre revisão anterior estável. - Atualiza ECS service com rollback. - Aguarda estabilização com retries controlados. - Valida health checks (target groups). - Notifica sucesso/falha via SNS. ### 7) 备份与恢复验证(Step Functions) - Descobre snapshot mais recente. - Valida janela de retenção. - Restore temporário (quando permitido por flag). - Smoke test. - Cleanup do recurso temporário. - Evidência em S3 + notificação SNS. ## 已交付的 P1 自动化 ### 8) 使用 SSM 的补丁和操作手册 - Janela de patching e janela de runbook operacional com schedules independentes. - Aprovação manual opcional antes de executar `SendCommand`. - Suporte a seleção de targets por tag. - Reuso dos documentos SSM versionados no repositório. ### 9) 暴露的安全组修复 - Detecção de portas críticas abertas para `0.0.0.0/0` e `::/0`. - Workflow Step Functions com gate de aprovação manual. - Remedicação opcional e controlada por flags de segurança. - Runbook SSM Automation para aprovação operacional com `approved=true`. ### 10) 自动化 FinOps 报告 - Custo por conta. - Custo por serviço. - Custo por tags. - Top desperdícios por heurísticas avançadas: - serviços com alto custo - custos sem tag - Savings Plans subutilizados - Reserved Instances subutilizados - oportunidades de rightsizing (Compute Optimizer) - Saída em JSON e CSV no S3. ### 11) 运营级偏差检测 - Verificação de drift em Security Groups, ECS Services, Listeners, parâmetros SSM e tags. - Comparação contra baseline em S3. - Relatório estruturado com alerta SNS. - Upload opcional de baseline inicial via Terraform. ### 12) 与 ChatOps/ITSM 的审批集成 - Tópico SNS dedicado para requisições de aprovação. - Bridge Lambda para encaminhar eventos de aprovação para webhooks. - Suporte a canal ChatOps e ITSM simultaneamente. ## 补充 CLI 工具 Este repositório continua sendo a base IaC e de automações gerenciadas. Para troubleshooting, validação operacional e operação assistida no terminal, a plataforma agora conta com repositórios irmãos dedicados: - `aws-sre-doctor`: troubleshooting operacional para ECS, ALB, IAM, quotas, DNS e reachability de APIs AWS. - `backup-restore-validator`: validação de restaurabilidade com foco em RTO/RPO e evidências. - `secrets-drift-detector`: comparação segura de drift estrutural entre secrets de ambientes. - `cloud-cost-waste-finder`: heurísticas práticas de desperdício operacional e FinOps. - `runbook-executor`: execução auditável de runbooks com dry-run e gate de aprovação. - `incident-timeline-builder`: consolidação de evidências e montagem de timeline/postmortem. Fluxo recomendado de uso: - provisionar e operar automações AWS neste repositório; - usar as CLIs para diagnóstico, validação e evidência antes/depois da automação; - anexar os artefatos gerados pelas CLIs em incidentes, changes e postmortems. ## 要求 - Terraform >= 1.6 - AWS CLI autenticada com perfil/role válida - Python 3.11+ (para testes locais) ## 各环境部署 ### 1. 调整远程后端 Edite os arquivos: - `env/dev/backend.hcl` - `env/stage/backend.hcl` - `env/prod/backend.hcl` Com: - bucket S3 de state - tabela DynamoDB de lock - chave por ambiente ### 2. 按环境调整变量 Edite: - `env/dev/terraform.tfvars` - `env/stage/terraform.tfvars` - `env/prod/terraform.tfvars` ### 3. 初始化并应用 ``` # dev cd stacks/dev terraform init -reconfigure -backend-config=../../env/dev/backend.hcl terraform plan -var-file=../../env/dev/terraform.tfvars terraform apply -var-file=../../env/dev/terraform.tfvars # stage cd ../stage terraform init -reconfigure -backend-config=../../env/stage/backend.hcl terraform plan -var-file=../../env/stage/terraform.tfvars terraform apply -var-file=../../env/stage/terraform.tfvars # prod cd ../prod terraform init -reconfigure -backend-config=../../env/prod/backend.hcl terraform plan -var-file=../../env/prod/terraform.tfvars terraform apply -var-file=../../env/prod/terraform.tfvars ``` ## 实用命令 ``` make fmt make validate STACK=dev make plan STACK=dev make apply STACK=dev make test ``` ## 安全与操作 - IAM least privilege por automação (roles dedicadas). - Log retention configurável. - S3 com criptografia e bloqueio de acesso público onde aplicável. - DLQ para Lambdas (módulo `lambda_automation`). - Dry-run por padrão nas automaçõesrutivas/sensíveis. - Flags obrigatórias para habilitar ações destrutivas (`allow_destructive_actions`, `allow_restore`). ## 可观测性 - SNS central para alertas (`automation_alerts`). - Alarmes baseline para: - `AWS/Lambda` métrica `Errors` - `AWS/States` métrica `ExecutionsFailed` ## 建议的 CI Arquivo exemplo: `.github/workflows/terraform-ci.yml.example` - `terraform fmt -check` - `terraform validate` - `terraform plan` por stack ## 测试 Testes mínimos em `tests/lambdas` para validar comportamento base dos handlers P0/P1. ``` pip install -r requirements-dev.txt pytest -q tests ``` ## 建议的下一步 1. Popular `drift/baseline.initial.json` com recursos reais do ambiente. 2. Habilitar `drift_detection_publish_initial_baseline=true` no primeiro apply. 3. Configurar webhooks `approval_bridge_chatops_webhook_url` e/ou `approval_bridge_itsm_webhook_url`. 4. Executar runbook SSM `${name_prefix}-sg-remediation-approval` para aprovação operacional. ## 设计说明 - Não foram usados módulos comunitários genéricos para lógica principal das automações. - A implementação privilegia clareza e controle operacional, mantendo composição por módulos pequenos e reutilizáveis. ## 许可证 Este projeto está licenciado sob a Apache License 2.0. Consulte o arquivo `LICENSE` para mais detalhes. ## 归属 Este projeto foi desenvolvido e publicado por **Tharlesson**. Caso você utilize este material como base em ambientes internos, estudos, adaptações ou redistribuições, preserve os créditos de autoria e os avisos de licença aplicáveis. ## 信用与使用 Este repositório foi criado com foco em automação, padronização operacional e melhoria da rotina de profissionais de SRE, DevOps, Cloud e Plataforma. Você pode: - estudar - reutilizar - adaptar - evoluir este projeto no seu contexto Ao reutilizar ou derivar este material: - mantenha os avisos de licença - preserve os créditos de autoria quando aplicável - documente alterações relevantes feitas sobre a base original ## 作者 **Tharlesson** GitHub: https://github.com/tharlesson
标签:API集成, AWS, DPI, Dry-run, DynamoDB, EC2, ECS, EventBridge, FinOps, IaC, IAM, Incident Response, Lambda, Python, S3, SRE, SSM Runbooks, Step Functions, Terraform, 云治理, 偏差过滤, 可观测性, 后台管理, 备份校验, 多环境管理, 孤儿资源清理, 安全组检查, 安全运营, 审批桥接, 成本优化, 扫描框架, 无后门, 日志结构化, 最小权限, 标签管理, 模块化, 漂移检测, 漏洞探索, 自动化调度, 自动化运维, 证书与密钥监控, 资源命名规范, 逆向工具