Como armazenar secrets

Nos passos a seguir, descrevemos como armazenar uma chave secreta em um intervalo do Cloud Storage criptografado na camada do aplicativo com uma chave de criptografia do Cloud Key Management Service.

Nos passos apresentados a seguir, mostramos uma maneira de armazenar chaves secretas com o Cloud KMS. Saiba mais sobre como armazenar chaves secretas, incluindo as diferentes opções em Gerenciamento de chaves secretas.

Configuração

Recomendamos o uso de dois projetos e dois usuários para garantir a separação de tarefas entre os indivíduos e os serviços que usam e os que gerenciam as chaves secretas. Um projeto usará o Cloud KMS para gerenciar as chaves, e o outro usará intervalos do Cloud Storage para armazenar as chaves secretas.

Criar projetos

Este passo é executado dentro da organização por um usuário com o papel roles/resourcemanager.organizationAdmin:

  1. Crie um projeto do Google Cloud Platform que conterá o intervalo do Cloud Storage usado para armazenar as chaves secretas. Elas serão armazenadas como objetos no intervalo. Este tópico mencionará esse projeto como [MY_STORAGE_PROJECT].
  2. Crie um projeto do Google Cloud Platform que usará o Cloud KMS para gerenciar as chaves de criptografia e descriptografia da chave secreta. Este tópico mencionará esse projeto como [MY_KMS_PROJECT].

Criar usuários

Neste passo, criamos dois usuários, um para gerenciar as chaves de criptografia e outro para usá-las.

Ele usa o projeto [MY_KMS_PROJECT] executado pelo proprietário do projeto [MY_KMS_PROJECT] ou por outro usuário com o papel roles/resourcemanager.organizationAdmin no projeto [MY_KMS_PROJECT]:

  1. Conceda o papel roles/cloudkms.admin a User1. Esse usuário poderá gerenciar as chaves.
  2. Conceda o papel roles/cloudkms.cryptoKeyEncrypterDecrypter a User2. Esse usuário poderá usar a chave para criptografar e descriptografar o arquivo que contém o secret.

    Se você preferir que apenas alguns usuários possam criptografar e que outros possam descriptografar, use o papel roles/cloudkms.cryptoKeyEncrypter para o primeiro e o roles/cloudkms.cryptoKeyDecrypter para o último.

Criar um intervalo de armazenamento

Este passo usa o projeto [MY_STORAGE_PROJECT] executado pelo proprietário do projeto [MY_STORAGE_PROJECT] ou por outro usuário com o papel roles/storage.admin no projeto [MY_STORAGE_PROJECT]:

  1. Crie um intervalo de armazenamento, que será mencionado neste tópico como [MY_BUCKET].
  2. Conceda ao User2 o papel roles/storage.objectAdmin para o intervalo [MY_BUCKET].

Criar uma chave de criptografia

Esta etapa é executada pelo User1.

  1. Crie um keyring chamado storage. O nome dele é exclusivo para o projeto. O keyring não pode ser renomeado nem excluído. É possível usar a ferramenta de linha de comando gcloud para criar um keyring.

    gcloud kms keyrings create storage --location global
    
  2. Com o keyring storage, crie uma chave com o nome de mykey para fins de criptografia. O nome dela é exclusivo para o keyring. A chave não pode ser renomeada nem excluída, mas as respectivas versões podem ser destruídas. Use a ferramenta de linha de comando gcloud para criar uma chave. Uma primeira versão de chave será criada automaticamente.

    gcloud kms keys create mykey --location global \
      --keyring storage --purpose encryption
    

Para ver mais detalhes sobre como criar chaves de criptografia, consulte Como criar keyrings e chaves.

Criptografar o arquivo que contém a chave secreta

Esta etapa é executada pelo User2.

  1. Na máquina local, crie o arquivo que terá a chave secreta, por exemplo, mysecret.txt.
  2. Criptografe mysecret.txt com uma chave. Nesse caso, com base no projeto [MY_KMS_PROJECT], no keyring storage e na chave mykey. Grave o arquivo criptografado em mysecret.txt.encrypted.
    Para ver um exemplo de como usar o Cloud KMS para criptografar um arquivo com uma chave, consulte o Guia de início rápido de dados criptografados.
  3. Faça upload do arquivo criptografado mysecret.txt.encrypted para o intervalo [MY_BUCKET].
  4. [Opcional] Exclua o arquivo de texto simples mysecret.txt da máquina local.

Descriptografar o arquivo que contém a chave secreta

Esta etapa é executada pelo User2.

  1. Faça o download de mysecret.txt.encrypted do intervalo [MY_BUCKET] para a máquina local.
  2. Descriptografe mysecret.txt com a mesma chave usada anteriormente para criptografá-lo. Grave o arquivo descriptografado em mysecret.txt.decrypted.
    Para ver um exemplo de como usar o Cloud KMS para descriptografar um arquivo com uma chave, consulte o guia de início rápido sobre dados criptografados.
  3. Use o arquivo de texto simples, mysecret.txt.decrypted.
  4. [Opcional] Quando terminar de usar o arquivo descriptografado, exclua-o da máquina local.

Próximas etapas

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Cloud KMS