Práticas recomendadas de segurança

Este documento fornece diretrizes e recomendações para usar o Terraform para Google Cloud com segurança. O Terraform requer acesso confidencial à infraestrutura de nuvem para funcionar. Seguir as práticas recomendadas de segurança ajuda a minimizar os riscos associados e melhorar a segurança geral da nuvem.

Este guia não é uma introdução ao Terraform. Para uma introdução ao uso do Terraform com o Google Cloud, consulte Primeiros passos com o Terraform.

Usar estado remoto

Para clientes do Google Cloud, recomendamos o uso do back-end do estado do Cloud Storage. Essa abordagem bloqueia o estado para permitir a colaboração em equipe. Ele também separa o estado e todas as informações potencialmente confidenciais do controle de versões.

Certifique-se de que apenas o sistema de compilação e os administradores altamente privilegiados possam acessar o bucket usado para estado remoto.

Para evitar a confirmação acidental do estado de desenvolvimento para o controle de origem, use gitignore nos arquivos de estado do Terraform.

Criptografe o estado

Os buckets do Google Cloud são criptografados em repouso, mas é possível usar chaves de criptografia fornecidas pelo cliente para fornecer uma camada extra de proteção. Para isso, use a variável de ambiente GOOGLE_ENCRYPTION_KEY. Mesmo que nenhum secret esteja no arquivo de estado, sempre criptografe o estado como uma medida adicional de defesa.

Não armazenar secrets no estado

Há muitos recursos e provedores de dados no Terraform que armazenam valores de secret em texto simples no arquivo de estado. Sempre que possível, evite armazenar secrets no estado. Veja a seguir alguns exemplos de provedores que armazenam secrets em texto simples:

Marcar saídas confidenciais

Em vez de tentar criptografar valores confidenciais manualmente, use o suporte integrado do Terraform para gerenciamento de estados confidenciais. Ao exportar valores confidenciais para a saída, verifique se eles estão marcados como confidenciais.

Separe as tarefas

Se não for possível executar o Terraform a partir de um sistema automatizado a que nenhum usuário tenha acesso, separe as permissões e os diretórios separando as tarefas. Por exemplo, um projeto de rede corresponde a uma conta de serviço do Terraform ou a um usuário com acesso limitado a esse projeto.

Execute verificações de pré-aplicação

Ao executar o Terraform em um pipeline automatizado, use uma ferramenta como gcloud terraform vet para verificar a saída do plano em relação às políticas antes de aplicá-la. Isso pode detectar regressões de segurança antes que elas aconteçam.

Execute auditorias contínuas

Depois que o comando terraform apply for executado, execute verificações automáticas de segurança. Essas verificações podem ajudar a garantir que a infraestrutura não se desloque para um estado não seguro. As seguintes ferramentas são opções válidas para esse tipo de verificação:

A seguir