Communitygithub.com

auditoria-de-infraestrutura-terraform-para-seguranca

Audita infraestrutura como código (IaC) Terraform em busca de configurações de segurança incorretas.

O que é auditoria-de-infraestrutura-terraform-para-seguranca?

Esta skill capacita engenheiros de plataforma e segurança a auditar infraestrutura Terraform em busca de más configurações de segurança antes da implantação. Ela combina múltiplas ferramentas open-source (Checkov, tfsec, Terrascan, OPA/Conftest) para escanear código, planos e estado do Terraform, aplicando desde políticas nativas até regras personalizadas da organização. A skill cobre seis etapas principais: escaneamento com Checkov (1000+ políticas), análise específica com tfsec, verificação de conformidade com benchmarks (CIS, NIST, SOC2) via Terrascan, criação de políticas customizadas em Rego/OPA, integração em pipelines CI/CD (GitHub Actions, GitLab CI) e auditoria do estado implantado para identificar desvios. É ideal para equipes que desejam adotar uma postura de 'shift left' em segurança, detectando falhas como buckets S3 sem criptografia, grupos de segurança com SSH público ou políticas IAM superpermissivas antes de aplicar mudanças na nuvem. A skill é compatível com as plataformas GitHub Actions, GitLab CI, CircleCI e qualquer pipeline capaz de executar comandos shell, exigindo apenas a instalação das ferramentas de escaneamento. Ela também mostra como gerar relatórios SARIF para integração com a aba de Segurança do GitHub e fornece exemplos práticos de CI/CD para bloquear PRs com falhas críticas.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mukul975/Anthropic-Cybersecurity-Skills/tree/main/skills/auditing-terraform-infrastructure-for-security

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Auditoria de Infraestrutura Terraform para Segurança

Quando Usar

  • Ao integrar escaneamento de segurança em pipelines CI/CD para implantações Terraform
  • Ao revisar planos e módulos Terraform em busca de práticas recomendadas de segurança antes de aplicar
  • Ao construir guardrails de política como código para provisionamento de infraestrutura em nuvem
  • Ao auditar arquivos de estado existentes do Terraform para identificar configurações incorretas implantadas
  • Ao aplicar padrões de segurança organizacionais em vários projetos Terraform

Não usar para monitoramento de segurança em tempo de execução (use ferramentas CSPM), para testes de segurança de aplicativos (use ferramentas SAST/DAST) ou para detecção de desvio de configuração de nuvem (use AWS Config ou Azure Policy após a implantação).

Pré-requisitos

  • Checkov instalado (pip install checkov)
  • tfsec instalado (brew install tfsec ou binário do GitHub)
  • Terrascan instalado (brew install terrascan)
  • Terraform v1.0+ para geração de plano
  • OPA (Open Policy Agent) para aplicação de políticas personalizadas
  • Repositório Git com código Terraform para auditar

Fluxo de Trabalho

Passo 1: Escanear Código Terraform com Checkov

Execute o Checkov para escaneamento abrangente de segurança IaC com políticas internas e personalizadas.

# Escanear um diretório Terraform
checkov -d ./terraform/ --framework terraform

# Escanear com categorias específicas de verificação
checkov -d ./terraform/ --check CKV_AWS_18,CKV_AWS_19,CKV_AWS_20,CKV_AWS_21

# Escanear e gerar resultados em JSON
checkov -d ./terraform/ --output json > checkov-results.json

# Escanear um arquivo de plano Terraform para análise mais precisa
terraform init && terraform plan -out=tfplan
terraform show -json tfplan > tfplan.json
checkov -f tfplan.json --framework terraform_plan

# Pular verificações específicas com justificativa
checkov -d ./terraform/ --skip-check CKV_AWS_145 \
  --bc-api-key $BRIDGECREW_API_KEY

# Escanear módulos Terraform
checkov -d ./modules/ --framework terraform --compact

# Listar todas as verificações disponíveis
checkov --list --framework terraform | grep CKV_AWS

Passo 2: Escanear com tfsec para Problemas Específicos do Terraform

Use tfsec para análise de segurança nativa do Terraform com orientação detalhada de correção.

# Escanear um diretório Terraform
tfsec ./terraform/

# Escanear com limiar mínimo de severidade
tfsec ./terraform/ --minimum-severity HIGH

# Gerar saída em JSON para processamento CI/CD
tfsec ./terraform/ --format json > tfsec-results.json

# Escanear com verificações personalizadas
tfsec ./terraform/ --custom-check-dir ./custom-checks/

# Excluir regras específicas
tfsec ./terraform/ --exclude-downloaded-modules \
  --exclude aws-s3-enable-bucket-logging

# Escanear e falhar em severidade específica
tfsec ./terraform/ --minimum-severity CRITICAL --soft-fail

# Gerar saída SARIF para a aba de Segurança do GitHub
tfsec ./terraform/ --format sarif > tfsec.sarif

Passo 3: Executar Terrascan para Conformidade Multi-Framework

Execute o Terrascan para verificação de conformidade com frameworks CIS, NIST e SOC 2.

# Escanear Terraform contra o benchmark CIS AWS
terrascan scan -t aws -i terraform -d ./terraform/ \
  --policy-type aws --verbose

# Escanear contra frameworks de conformidade específicos
terrascan scan -t aws -i terraform -d ./terraform/ \
  --policy-type aws \
  --categories "Compliance Validation"

# Gerar saída em JSON
terrascan scan -t aws -i terraform -d ./terraform/ \
  --output json > terrascan-results.json

# Escanear um plano Terraform
terrascan scan -t aws -i terraform \
  --iac-file tfplan.json \
  --iac-type tfplan

# Listar políticas disponíveis
terrascan scan --list-policies -t aws

Passo 4: Criar Políticas OPA Personalizadas para Padrões Organizacionais

Escreva políticas Rego para requisitos de segurança específicos da organização.

# policy/aws_s3_encryption.rego
package terraform.aws.s3

denyl[msg] {
    resource := input.resource.aws_s3_bucket[name]
    not resource.server_side_encryption_configuration
    msg := sprintf("O bucket S3 '%s' deve ter criptografia do lado do servidor ativada", [name])
}

# policy/aws_iam_no_wildcards.rego
package terraform.aws.iam

denyl[msg] {
    resource := input.resource.aws_iam_policy[name]
    statement := resource.policy.Statement[_]
    statement.Action == "*"
    statement.Effect == "Allow"
    msg := sprintf("A política IAM '%s' não deve usar ações curinga (*)", [name])
}

denyl[msg] {
    resource := input.resource.aws_iam_policy[name]
    statement := resource.policy.Statement[_]
    statement.Resource == "*"
    statement.Effect == "Allow"
    contains(statement.Action[_], "*")
    msg := sprintf("A política IAM '%s' tem ações excessivamente permissivas em recursos curinga", [name])
}

# policy/aws_no_public_ingress.rego
package terraform.aws.security_group

denyl[msg] {
    resource := input.resource.aws_security_group_rule[name]
    resource.type == "ingress"
    resource.cidr_blocks[_] == "0.0.0.0/0"
    resource.from_port <= 22
    resource.to_port >= 22
    msg := sprintf("A regra do grupo de segurança '%s' permite SSH de 0.0.0.0/0", [name])
}
# Avaliar plano Terraform contra políticas OPA
terraform show -json tfplan | opa eval \
  --data ./policy/ \
  --input /dev/stdin \
  "data.terraform.aws" \
  --format pretty

# Executar Conftest para testes de política OPA mais fáceis
conftest test tfplan.json --policy ./policy/ --output json

Passo 5: Integrar Escaneamento de Segurança no Pipeline CI/CD

Adicione o escaneamento de segurança IaC como um gate obrigatório no CI/CD.

# GitHub Actions: Pipeline de segurança Terraform
name: Escaneamento de Segurança Terraform
on:
  pull_request:
    paths: ['terraform/**']

jobs:
  security-scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Configurar Terraform
        uses: hashicorp/setup-terraform@v3

      - name: Terraform Init & Plan
        run: |
          cd terraform/
          terraform init
          terraform plan -out=tfplan
          terraform show -json tfplan > tfplan.json

      - name: Escaneamento Checkov
        uses: bridgecrewio/checkov-action@master
        with:
          directory: terraform/
          framework: terraform
          output_format: sarif
          output_file_path: checkov.sarif
          soft_fail: false

      - name: Escaneamento tfsec
        uses: aquasecurity/[email protected]
        with:
          working_directory: terraform/
          soft_fail: false

      - name: Enviar SARIF
        uses: github/codeql-action/upload-sarif@v2
        with:
          sarif_file: checkov.sarif

      - name: Verificação de Políticas OPA
        run: |
          conftest test terraform/tfplan.json \
            --policy ./policy/ \
            --output json

Passo 6: Escanear Estado do Terraform para Configurações Incorretas Implantadas

Audite o estado atual do Terraform para identificar problemas de segurança já implantados.

# Exportar estado atual como JSON
terraform show -json > terraform-state.json

# Escanear o estado com Checkov
checkov -f terraform-state.json --framework terraform_plan

# Consultar estado para problemas de segurança específicos
terraform state list | while read recurso; do
  terraform state show "$recurso" 2>/dev/null | grep -i "public\|0.0.0.0\|encrypt.*false\|password"
done

# Encontrar recursos sem tags obrigatórias
terraform state list | grep aws_instance | while read recurso; do
  tags=$(terraform state show "$recurso" | grep -A20 "tags")
  if ! echo "$tags" | grep -q "Environment"; then
    echo "TAG AUSENTE: $recurso não tem a tag 'Environment'"
  fi
done

Conceitos-chave

TermoDefinição
Infraestrutura como CódigoPrática de gerenciar infraestrutura em nuvem por meio de arquivos de configuração declarativos (Terraform, CloudFormation) em vez de operações manuais no console
Política como CódigoExpressar políticas de segurança e conformidade como código executável (Rego, Python) que pode ser avaliado automaticamente contra definições de infraestrutura
Shift Left na SegurançaMover verificações de segurança para o início do ciclo de desenvolvimento escaneando IaC antes da implantação, em vez de auditar após o provisionamento
Plano TerraformVisualização das alterações que o Terraform fará, que pode ser exportada como JSON para escaneamento de segurança antes de aplicar as alterações
CheckovFerramenta de análise estática open-source para IaC com suporte a Terraform, CloudFormation, Kubernetes e Docker, com mais de 1000 políticas internas
OPA/RegoOpen Policy Agent e sua linguagem de políticas Rego para definir regras de segurança personalizadas que avaliam entradas de dados estruturados

Ferramentas e Sistemas

  • Checkov: Scanner abrangente de IaC com mais de 1000 políticas para Terraform, CloudFormation, Kubernetes, ARM e Dockerfile
  • tfsec: Ferramenta de análise estática específica para Terraform com orientação detalhada de correção e saída SARIF
  • Terrascan: Scanner multi-IaC com suporte a frameworks de conformidade (CIS, NIST, SOC 2) e política como código
  • OPA/Conftest: Motor de políticas personalizadas para definir regras de segurança específicas da organização usando a linguagem Rego
  • Bridgecrew: Plataforma comercial construída sobre o Checkov, fornecendo detecção de desvios e segurança da cadeia de suprimentos

Cenários Comuns

Cenário: Adicionar Gates de Segurança a um Pipeline CI/CD Terraform Existente

Contexto: Uma equipe DevOps implanta infraestrutura via Terraform no GitHub Actions, mas não possui escaneamento de segurança. Descobertas de auditoria recentes mostram vários buckets S3 sem criptografia e grupos de segurança permitindo SSH da internet.

Abordagem:

  1. Adicionar Checkov como o primeiro gate de segurança no fluxo de trabalho do GitHub Actions
  2. Executar checkov -d ./terraform/ para estabelecer a linha de base atual de descobertas
  3. Triar as descobertas existentes: corrigir problemas CRÍTICOS, criar tickets para ALTA, suprimir riscos aceitos
  4. Adicionar tfsec como um scanner secundário para verificações específicas do Terraform
  5. Escrever políticas OPA personalizadas para padrões organizacionais (tags obrigatórias, convenções de nomenclatura)
  6. Configurar o pipeline para bloquear PRs com descobertas CRÍTICAS ou ALTAS
  7. Gerar relatórios SARIF para integração com a aba de Segurança do GitHub

Armadilhas: Adicionar escaneamento de segurança a um projeto existante produzirá inicialmente centenas de descobertas. Implemente gradualmente, começando com bloqueio apenas para CRÍTICAS, depois expandindo para ALTAS. Use comentários de supressão inline (#checkov:skip=CKV_AWS_18:Bucket público para site estático) para exceções intencionais com justificativa documentada.

Formato de Saída

Relatório de Auditoria de Segurança Terraform
==============================================
Repositório: acme-corp/infrastructure
Branch: main
Data do Escaneamento: 2026-02-23
Ferramentas: Checkov 3.x, tfsec 1.x, políticas OPA personalizadas

RESULTADOS DO ESCANEAMENTO:
  Verificações Checkov aprovadas:    187
  Verificações Checkov reprovadas:     34
  Verificações tfsec aprovadas:      156
  Verificações tfsec reprovadas:       28
  Políticas OPA personalizadas:       12 aprovadas, 3 reprovadas

DESCOBERTAS CRÍTICAS:
[TF-001] Bucket S3 Sem Criptografia
  Arquivo: modules/storage/main.tf:24
  Recurso: aws_s3_bucket.data_lake
  Verificação: CKV_AWS_19
  Correção: Adicionar bloco server_side_encryption_configuration

[TF-002] Grupo de Segurança Permite SSH de 0.0.0.0/0
  Arquivo: modules/network/security.tf:45
  Recurso: aws_security_group_rule.ssh_access
  Verificação: CKV_AWS_24
  Correção: Restringir cidr_blocks à sub-rede bastion

[TF-003] Política IAM com Ações Curinga
  Arquivo: modules/iam/policies.tf:12
  Recurso: aws_iam_policy.developer_policy
  Verificação: CKV_AWS_1
  Correção: Escopo de ações para serviços específicos necessários

RESUMO POR SEVERIDADE:
  Crítica:   6 descobertas
  Alta:     14 descobertas
  Média:    28 descobertas
  Baixa:    18 descobertas
  Info:     12 descobertas

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

abusing-dpapi-for-credential-access

Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys) online or offline using SharpDPAPI, SharpChrome, Mimikatz, or Impacket

abusing-shadow-credentials-for-privesc

Take over Active Directory accounts by writing attacker-controlled public keys to msDS-KeyCredentialLink (Shadow Credentials) with pyWhisker, Whisker, or Certipy, then authenticate via PKINIT to recover the target

achieving-cmmc-level-2-compliance

>-

acquiring-disk-image-with-dd-and-dcfldd

Create forensically sound bit-for-bit disk images with dd or dcfldd on a Linux forensic workstation, preserving evidence integrity through hash verification (MD5/SHA) during acquisition. Use when imaging a suspect drive, USB device, or memory card for investigation, preserving volatile disk evidence during incident response, or producing a verified copy for legal or law-enforcement proceedings before any destructive analysis.

analyzing-active-directory-acl-abuse

Detect dangerous ACL misconfigurations in Active Directory using ldap3

analyzing-android-malware-with-apktool

Perform static analysis of Android APK malware using apktool for resource decompilation, jadx for Java source recovery, and androguard for manifest inspection, dangerous permission-combination detection, and identification of obfuscated code, dynamic code loading, and reflection-based API calls. Use to statically triage a suspicious APK without executing it or to build mobile malware detection rules.

analyzing-api-gateway-access-logs

Parses API Gateway access logs (AWS API Gateway, Kong, Nginx) to detect

analyzing-apt-group-with-mitre-navigator

Query ATT&CK data with attackcti, mitreattack-python, and stix2, then build MITRE ATT&CK Navigator layers and multi-layer heatmap overlays mapping one or more APT groups

analyzing-azure-activity-logs-for-threats

Queries Azure Monitor activity logs and sign-in logs via azure-monitor-query

analyzing-bootkit-and-rootkit-samples

Analyzes bootkit and advanced rootkit malware infecting the Master

analyzing-browser-forensics-with-hindsight

Parse Chromium-based browser databases with Hindsight to extract and correlate browsing history, downloads, cookies, cached content, autofill data, saved passwords, and extensions from Chrome, Edge, Brave, Opera, and Vivaldi into a unified timeline (XLSX, JSON, or SQLite output). Use during incident response, insider-threat investigations, or criminal cases when you need to reconstruct a user

analyzing-campaign-attribution-evidence

Systematically evaluate cyber-campaign evidence to attribute an operation to a threat actor, using the Diamond Model and Analysis of Competing Hypotheses (ACH) to weigh infrastructure overlaps, TTP consistency, malware code similarity, and timing/language artifacts into confidence-weighted attribution assessments. Use when an incident investigation needs a defensible attribution confidence level.

analyzing-certificate-transparency-for-phishing

Monitor Certificate Transparency logs using crt.sh and Certstream to

analyzing-cloud-storage-access-patterns

Detect abnormal access in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics for after-hours bulk downloads, new-IP access, and API-call spikes (e.g. GetObject) via statistical baselines and time-series anomaly detection. Use when investigating suspected cloud data exfiltration or building related detection rules.

analyzing-cobalt-strike-beacon-configuration

Extract and analyze Cobalt Strike beacon configuration from PE files

analyzing-cobaltstrike-malleable-c2-profiles

Parse and analyze Cobalt Strike Malleable C2 profiles with dissect.cobaltstrike (profiles and beacon-payload configs) and pyMalleableC2 (AST parsing) to extract HTTP/DNS transforms, URIs, headers, sleep/jitter, and injection behavior, then generate network detection signatures. Use when reverse-engineering a captured malleable profile or building detections against Cobalt Strike Beacon traffic.

analyzing-command-and-control-communication

Analyzes malware C2 communication over HTTP, HTTPS, DNS, and custom

analyzing-cyber-kill-chain

Analyzes intrusion activity against the Lockheed Martin Cyber Kill Chain

analyzing-disk-image-with-autopsy

Perform comprehensive forensic analysis of raw (dd), E01, or AFF disk images with Autopsy and The Sleuth Kit, recovering deleted files, examining metadata and embedded artifacts, keyword searching, and building investigation timelines with visual reports. Use for structured analysis of a forensic disk image or when stakeholders need visual reports from evidence.

analyzing-dns-logs-for-exfiltration

Analyzes DNS query logs to detect data exfiltration via DNS tunneling,

Habilidades Relacionadas