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
- Saiba mais sobre as práticas recomendadas gerais de estilo e estrutura do Terraform no Google Cloud.
- Saiba mais sobre as práticas recomendadas ao usar módulos raiz do Terraform.