Este documento fornece diretrizes e recomendações para usar o Terraform em segurança para o Google Cloud. O Terraform requer acesso sensível à sua infraestrutura na nuvem para funcionar. Seguir as práticas recomendadas de segurança pode ajudar 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 à utilização do Terraform com o Google Cloud, consulte o artigo Comece a usar o Terraform.
Use o estado remoto
Para os Google Cloud clientes, recomendamos a utilização do backend de estado do Cloud Storage. Esta abordagem bloqueia o estado para permitir a colaboração em equipa. Também separa o estado e todas as informações potencialmente confidenciais do controlo de versões.
Certifique-se de que apenas o sistema de compilação e os administradores com privilégios elevados podem aceder ao contentor usado para o estado remoto.
Para evitar a confirmação acidental do estado de desenvolvimento no controlo de origem, use o ficheiro gitignore para ficheiros de estado do Terraform.
Estado de encriptação
Embora os Google Cloud contentores estejam encriptados em repouso, pode usar
chaves de encriptação fornecidas pelo cliente
para oferecer uma camada adicional de proteção. Para o fazer, use a variável de ambiente GOOGLE_ENCRYPTION_KEY
. Embora não devam existir segredos no ficheiro de estado, encriptar sempre o estado como medida de defesa adicional.
Não armazene Secrets no estado
Existem muitos recursos e fornecedores de dados no Terraform que armazenam valores secretos em texto simples no ficheiro de estado. Sempre que possível, evite armazenar segredos no estado. Seguem-se alguns exemplos de fornecedores que armazenam segredos em texto simples:
Marque saídas sensíveis
Em vez de tentar encriptar manualmente valores confidenciais, confie no suporte integrado do Terraform para a gestão de estados confidenciais. Quando exporta valores confidenciais para a saída, certifique-se de que os valores estão marcados como confidenciais.
Garantir a separação de funções
Se não conseguir executar o Terraform a partir de um sistema automatizado ao qual nenhum utilizador tem acesso, respeite a separação de funções separando autorizações e diretórios. Por exemplo, um projeto de rede corresponderia a uma conta de serviço ou a um utilizador do Terraform de rede cujo acesso está limitado a este projeto.
Execute verificações pré-aplicação
Quando executar o Terraform num pipeline automatizado, use uma ferramenta como o
gcloud terraform vet
para
verificar a saída do plano em relação às políticas antes de
ser aplicado. Esta ação pode detetar regressões de segurança antes que ocorram.
Executar auditorias contínuas
Depois de o comando terraform apply
ter sido executado, execute verificações de segurança automáticas.
Estas verificações podem ajudar a garantir que a infraestrutura não deriva para um estado inseguro. As seguintes ferramentas são opções válidas para este tipo de verificação:
O que se segue?
- Saiba mais sobre as práticas recomendadas gerais de estilo e estrutura para o Terraform no Google Cloud.
- Saiba mais sobre as práticas recomendadas quando usar módulos raiz do Terraform.