0Pricing
Security+ Academy · Aula

Verificação de Segurança de Infraestrutura como Código

Analise arquivos Terraform, CloudFormation e gráficos Helm com ferramentas de segurança de IaC (Checkov, tfsec) para detectar configurações incorretas antes que cheguem à produção.

Verificação de Segurança de Infraestrutura como Código é uma aula grátis de Security+ Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Security+ Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Security+ Academy inclui 4 aulas no total.

Visão geral da segurança da infraestrutura como código

Ferramentas de Infraestrutura como Código (IaC), como Terraform, AWS CloudFormation, Ansible e Helm, permitem definir a infraestrutura em arquivos de configuração controlados por versão. Isso traz benefícios enormes — repetibilidade, auditabilidade e automação —, mas também um risco crítico de segurança: configurações incorretas em arquivos IaC produzem infraestrutura insegura em grande escala. Um único módulo Terraform configurado incorretamente e implantado em 50 ambientes cria simultaneamente 50 sistemas vulneráveis. A verificação de segurança de IaC resolve esse problema examinando os arquivos de configuração antes de sua aplicação, transferindo a segurança para uma etapa mais antecipada do fluxo de trabalho do desenvolvedor.

Configurações incorretas comuns de IaC

As ferramentas de verificação de segurança procuram as configurações incorretas de IaC mais comuns encontradas em ambientes de nuvem reais: buckets S3 com acesso público habilitado ou sem criptografia em repouso; grupos de segurança com regras de entrada 0.0.0.0/0 em portas sensíveis (22, 3389, 1433); bancos de dados sem criptografia ou com acessibilidade pública; políticas do IAM com curingas de recursos ou ações *; CloudTrail desabilitado em uma região; chaves KMS sem rotação de chaves; e balanceadores de carga com ouvintes HTTP em vez de HTTPS. Essas descobertas são muito semelhantes às verificações realizadas por referências de segurança da nuvem, como o CIS AWS Foundations.

# Dangerous Terraform: public S3 bucket + no encryption
resource 'aws_s3_bucket' 'data' {
  bucket = 'my-data-bucket'
  # Missing: server_side_encryption_configuration
  # Missing: aws_s3_bucket_public_access_block
}

Checkov: Política como Código para IaC

Checkov (da Bridgecrew/Prisma Cloud) é uma ferramenta popular de análise estática de código aberto para IaC que oferece suporte a Terraform, CloudFormation, manifestos do Kubernetes, gráficos do Helm e Dockerfiles. Ela vem com mais de 1.000 políticas integradas, mapeadas para referências do CIS, GDPR, SOC 2 e HIPAA. A execução de checkov -d . verifica todos os arquivos de IaC no diretório atual e gera um relatório codificado por cores com verificações aprovadas, reprovadas e ignoradas, incluindo os caminhos dos recursos e orientações para correção. O Checkov pode ser integrado a pipelines de CI/CD para bloquear implantações quando verificações CRITICAL falharem.

# Install and run Checkov on Terraform files
pip install checkov
checkov -d ./terraform/ --framework terraform

# Fail CI pipeline on HIGH severity findings
checkov -d ./terraform/ --check HIGH --hard-fail-on HIGH

tfsec: Scanner de Segurança do Terraform

tfsec (agora parte do recurso de verificação de IaC do Trivy) é um scanner de segurança do Terraform desenvolvido especificamente para esse fim, que compreende profundamente a sintaxe HCL, permitindo rastrear valores entre módulos e arquivos de variáveis. Ao contrário de scanners mais simples, o tfsec pode detectar configurações incorretas quando o problema se estende por vários arquivos — por exemplo, uma regra de grupo de segurança que parece segura isoladamente, mas está anexada a um recurso em outro arquivo. O tfsec produz descobertas com níveis de gravidade (CRITICAL, HIGH, MEDIUM, LOW), IDs de CWE e links diretos para a documentação de correção, tornando as descobertas acionáveis para os desenvolvedores.

# Install tfsec and scan Terraform directory
brew install tfsec
tfsec ./terraform/ --format json

# Or use Trivy for unified IaC + container scanning
trivy config ./terraform/

Segredos em Arquivos de IaC

Um dos problemas de segurança mais críticos de IaC são os segredos codificados diretamente em arquivos de configuração — senhas, chaves de API, chaves privadas TLS e strings de conexão com bancos de dados confirmadas no Git. Como os repositórios de IaC geralmente são compartilhados entre equipes e armazenados no histórico do controle de versão, um segredo confirmado mesmo uma única vez fica efetivamente comprometido para sempre (o histórico do Git é imutável). Ferramentas como Checkov, detect-secrets, git-secrets e TruffleHog procuram padrões de segredos. A correção consiste em usar variáveis de entrada referenciadas a partir de variáveis de ambiente ou armazenamentos de segredos, nunca valores codificados diretamente.

# Bad: hardcoded password in Terraform
resource 'aws_db_instance' 'main' {
  password = 'supersecret123'  # NEVER DO THIS
}

# Good: read from variable, inject from secrets manager
variable 'db_password' { sensitive = true }
resource 'aws_db_instance' 'main' {
  password = var.db_password
}

Política como Código: OPA e Sentinel

As estruturas de Política como Código (PaC) permitem que as equipes de segurança escrevam regras personalizadas em código e as imponham de maneira consistente. O Open Policy Agent (OPA) com o Conftest permite escrever políticas Rego que validam qualquer dado estruturado — planos do Terraform, manifestos do Kubernetes e valores do Helm — em pipelines de CI/CD. O HashiCorp Sentinel é integrado ao Terraform Enterprise e ao Cloud, permitindo impor, no momento do plano, políticas como “todos os buckets do S3 devem ter a criptografia habilitada” e bloquear qualquer aplicação que viole a política. Essas ferramentas permitem transformar os requisitos de segurança em código e controlá-los por versão junto com a infraestrutura que eles governam.

# Example Conftest OPA policy: deny public S3
# deny[msg] {
#   input.resource.aws_s3_bucket[name]
#   input.resource.aws_s3_bucket_public_access_block == null
#   msg := sprintf('Bucket %v lacks public access block', [name])
# }

Detecção de Desvios: Configuração versus Realidade

O desvio de configuração ocorre quando o estado real da infraestrutura implantada se distancia da definição de IaC — frequentemente porque alguém fez uma alteração manual pelo console da nuvem. Uma regra de grupo de segurança adicionada manualmente para desbloquear “temporariamente” o acesso de um desenvolvedor torna-se uma brecha permanente. As ferramentas de detecção de desvios comparam continuamente o estado desejado (arquivos de IaC) com o estado realmente implantado e alertam sobre diferenças. O AWS Config, a detecção de desvios do Terraform Cloud e as ferramentas de CSPM (Prisma Cloud, Wiz) oferecem esse recurso. Configurações incorretas de segurança introduzidas por alterações no console são detectadas antes que os invasores as descubram.

# Terraform: detect drift between state and actual cloud resources
terraform plan -refresh-only
# If output shows changes, someone modified infrastructure outside Terraform

Infraestrutura Imutável e GitOps

Infraestrutura imutável significa que servidores e configurações nunca são modificados no local; em vez disso, as alterações criam novos recursos (novas AMIs, novas imagens de contêiner) e substituem os antigos. Combinada com o GitOps (no qual todas as alterações de infraestrutura devem passar por uma solicitação de pull no Git, acionando fluxos de trabalho de verificação e aprovação de IaC), essa abordagem elimina o desvio de configuração por construção: se algo não pode ser alterado manualmente, não pode sofrer desvios. Ferramentas como o ArgoCD para Kubernetes e o Atlantis para Terraform implementam fluxos de trabalho GitOps nos quais qualquer divergência aciona uma reconciliação automática ou um alerta.

Distinção entre SAST e Verificação de IaC

A verificação de segurança de IaC às vezes é confundida com SAST (Teste Estático de Segurança de Aplicações), mas as duas abordam artefatos diferentes. O SAST analisa o código-fonte das aplicações (Python, Java, JavaScript) em busca de vulnerabilidades como injeção de SQL ou estouros de buffer. A verificação de IaC analisa arquivos de configuração da infraestrutura em busca de configurações incorretas de segurança na nuvem — nenhum código de aplicação está envolvido. Um pipeline completo de DevSecOps inclui ambos: SAST no código da aplicação e verificação de IaC nos arquivos de infraestrutura. Ambos são executados em CI/CD antes de qualquer implantação. Algumas plataformas unificadas (Snyk IaC, Prisma Cloud) combinam a verificação de aplicações e infraestrutura em uma única ferramenta.

Integração da Verificação de IaC ao CI/CD

A verificação eficaz de segurança de IaC deve ser automatizada e obrigatória — não opcional. Uma integração típica com CI/CD faz o seguinte: em cada solicitação de pull, executa o Checkov e o tfsec; faz o pipeline falhar se houver descobertas CRITICAL; publica as descobertas como comentários na solicitação de pull para dar visibilidade aos desenvolvedores; mantém uma lista de descobertas suprimidas com justificativas documentadas; e executa uma verificação noturna nos recursos implantados para detectar desvios. Ganchos de pré-confirmação que usam ferramentas como pre-commit com o Checkov podem detectar problemas antes mesmo de o código chegar ao pipeline. O gerenciamento de falsos positivos é importante — desenvolvedores que veem descobertas irrelevantes demais começam a ignorá-las.

# GitHub Actions: IaC security scanning
# - name: Run Checkov IaC Scan
#   uses: bridgecrewio/checkov-action@master
#   with:
#     directory: terraform/
#     framework: terraform
#     soft_fail: false  # fail PR on findings
#     output_format: sarif  # upload to GitHub Security tab

Segurança do Estado do Terraform

O arquivo de estado do Terraform (terraform.tfstate) contém o inventário completo de todos os recursos gerenciados, frequentemente incluindo valores de saída confidenciais, como senhas de bancos de dados, chaves privadas TLS e IDs de chaves de acesso do IAM em texto simples. Arquivos de estado nunca devem ser confirmados no Git. Em vez disso, use um back-end remoto (AWS S3 com bloqueio no DynamoDB, Terraform Cloud ou estado gerenciado pelo GitLab) com a criptografia no lado do servidor habilitada. O acesso ao back-end de estado deve ser rigorosamente controlado por meio do IAM — qualquer pessoa que possa ler o arquivo de estado pode enumerar todos os detalhes da infraestrutura e potencialmente extrair segredos incorporados.

# Secure Terraform remote backend
terraform {
  backend 's3' {
    bucket         = 'my-terraform-state'
    key            = 'prod/terraform.tfstate'
    region         = 'us-east-1'
    encrypt        = true
    kms_key_id     = 'arn:aws:kms:us-east-1:123:key/abc'
    dynamodb_table = 'terraform-state-lock'
  }
}

Verificação Rápida

Teste sua compreensão dos conceitos de CompTIA Security+ (SY0-701) abordados nesta lição.

Recapitulação da Lição

Nesta lição, você aprendeu que configurações incorretas de IaC, como buckets S3 públicos, grupos de segurança abertos e segredos codificados diretamente, são detectadas automaticamente por ferramentas como Checkov e tfsec antes da implantação; as estruturas de Política como Código (OPA/Conftest, HashiCorp Sentinel) permitem impor requisitos personalizados de segurança organizacional como barreiras automatizadas do pipeline; e os arquivos de estado do Terraform devem ser armazenados em back-ends remotos criptografados, com controles rigorosos de acesso, pois podem conter detalhes confidenciais dos recursos. A seguir, exploraremos o ciclo de vida dos APTs e como ameaças avançadas permanecem nas redes.

Perguntas Frequentes

A aula “Verificação de Segurança de Infraestrutura como Código” é grátis?

Sim — o texto completo de “Verificação de Segurança de Infraestrutura como Código” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Security+ Academy, atualize para CoddyKit PRO. O curso de Security+ Academy inclui 4 aulas no total.

O que vou aprender em “Verificação de Segurança de Infraestrutura como Código”?

Analise arquivos Terraform, CloudFormation e gráficos Helm com ferramentas de segurança de IaC (Checkov, tfsec) para detectar configurações incorretas antes que cheguem à produção. Você pratica Security+ Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Security+ Academy?

Nenhuma experiência prévia é necessária. Security+ Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Verificação de Segurança de Infraestrutura como Código”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Security+ Academy?

Sim. Cada aula de Security+ Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Segurança de Contêineres: Fortalecimento de Imagens e Proteção em Execução
  2. Segurança do Kubernetes: RBAC, Políticas de Rede e Segurança de Pods
  3. Segurança de Aplicações e Funções Serverless
  4. Verificação de Segurança de Infraestrutura como Código
← Voltar para Security+ Academy