Práticas recomendadas de segurança

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?