Chaves de criptografia gerenciadas pelo cliente

Acessar os exemplos

Nesta página, são abordadas as chaves de criptografia gerenciadas pelo cliente e como usá-las no Cloud Storage. Para outras opções de criptografia , consulte Opções de criptografia de dados.

Visão geral

Como uma camada adicional nas chaves de criptografia gerenciadas pelo Google, é possível usar as chaves geradas pelo Cloud Key Management Service, que são conhecidas como chaves de criptografia gerenciadas pelo cliente. Nesse caso, as chaves são armazenadas no Cloud KMS. Assim, o projeto que contém suas chaves de criptografia pode ser independente daquele que contém os buckets, o que permite uma melhor separação de deveres.

Quando a chave é usada?

Quando você aplica uma chave de criptografia gerenciada pelo cliente a um objeto, ela é usada pelo Cloud Storage para criptografar:

  • dados do objeto;
  • a soma de verificação CRC32C do objeto;
  • o hash MD5 do objeto.

O Cloud Storage usa chaves padrão no lado do servidor para criptografar os demais metadados do objeto, incluindo o nome. Portanto, se você tiver permissão suficiente, poderá executar ações, como ler a maioria dos metadados, listar objetos e excluir objetos, mesmo após ter desativado ou destruído a chave de criptografia associada gerenciada pelo cliente.

Contas de serviço

A criptografia e a descriptografia com chaves de criptografia gerenciadas pelo cliente são realizadas usando contas de serviço. Depois de conceder à sua conta de serviço do Cloud Storage o acesso a uma chave de criptografia, essa conta de serviço poderá criptografar:

Ao adicionar ou regravar um objeto no Cloud Storage, se você tiver um conjunto de chaves padrão no seu bucket e uma chave específica incluída na sua solicitação, o Cloud Storage usará a chave específica para criptografar o objeto.

Quando o solicitante quiser ler um objeto criptografado com uma chave de criptografia gerenciada pelo cliente, basta que ele acesse o objeto como normalmente faria. Durante essa solicitação, a conta de serviço descriptografa automaticamente o objeto solicitado, desde que:

  • a conta de serviço ainda tenha permissão para descriptografar usando a chave;
  • você não tenha desativado ou destruído a chave.

Se uma dessas condições não for atendida, a conta de serviço não descriptografará os dados, e haverá falha na solicitação.

Recursos de chave

Um recurso de chave do Cloud KMS tem o seguinte formato:

projects/[PROJECT_STORING_KEYS]/locations/[LOCATION]/keyRings/[KEY_RING_NAME]/cryptoKeys/[KEY_NAME]

Em que:

  • [PROJECT_STORING_KEYS] é o ID do projeto associado à chave. Por exemplo, my-pet-project.
  • [LOCATION] é o local da chave. Por exemplo, US-EAST1.
  • [KEY_RING_NAME] é o nome do keyring. Por exemplo, my-key-ring.
  • [KEY_NAME] é o nome da chave. Por exemplo, my-key.

Restrições

As restrições a seguir se aplicam ao usar chaves de criptografia gerenciadas pelo cliente:

  • As exportações do Cloud SQL para o Cloud Storage e o Dataflow atualmente não aceitam objetos criptografados com chaves de criptografia gerenciadas pelo cliente.

  • Não é possível usar o método Copy Object da API JSON, a menos que o objeto de destino e o objeto de origem usem a mesma chave de criptografia gerenciada pelo cliente. Geralmente, será necessário usar o método Rewrite Object.

  • Não será possível usar o método Compose Object da API JSON quando um ou mais objetos de origem forem criptografados por uma chave de criptografia gerenciada pelo cliente.

  • Não é possível atualizar os metadados do objeto para criptografá-lo com uma chave de criptografia gerenciada pelo cliente. Em vez disso, inclua a chave como parte da regravação do objeto.

  • Você precisa criar a chave do Cloud KMS no mesmo local dos dados que pretende criptografar. Por exemplo, se seu bucket estiver localizado em US-EAST1, qualquer chave do Cloud KMS que criptografar objetos nesse bucket também precisará ser criada em US-EAST1. Para saber os locais disponíveis do Cloud KMS, consulte Locais do Cloud KMS.

  • Não é possível especificar uma chave de criptografia gerenciada pelo cliente como parte de uma transferência do Serviço de transferência do Cloud Storage, e quaisquer chaves desse tipo nos objetos de origem não são aplicadas aos objetos transferidos. Defina uma chave padrão gerenciada pelo cliente no seu bucket antes de realizar a transferência.

Relação com chaves de criptografia fornecidas pelo cliente

Além da criptografia gerenciada pelo cliente, o Cloud Storage oferece chaves de criptografia fornecidas pelo cliente como forma de controlar a criptografia de dados. Você pode criptografar diferentes objetos em um único bucket com diferentes métodos de criptografia, mas observe que:

  • um único objeto só pode ser criptografado por um desses métodos por vez;

  • Se você tiver um conjunto de chaves gerenciadas pelo cliente padrão no bucket e especificar uma chave fornecida pelo cliente em uma solicitação, o Cloud Storage usará essa chave para criptografar o objeto.

  • É possível definir uma chave padrão gerenciada pelo cliente no bucket, mas não uma chave padrão fornecida pelo cliente.

Gerenciamento de chaves: como rotacionar, desativar ou destruir versões de chaves

Rotação usando o Cloud Key Management Service

O Cloud KMS é compatível com a rotação de chaves automática e manual. Depois de rotacionar uma chave, a nova versão torna-se a versão principal usada em todas as operações no Cloud Storage que criptografam usando a chave, por exemplo:

  • O upload de objetos em buckets usando a chave como a chave de criptografia padrão agora são criptografados usando a nova versão.

  • As operações de upload, cópia e regravação de objetos que fazem referência especificamente à chave agora usam a nova versão.

As versões anteriores da chave não são desativadas nem destruídas. Portanto, os atuais objetos criptografados com essas versões ainda podem ser descriptografados pelo Cloud Storage.

Como desativar ou destruir versões de chaves

Desativar e destruir versões de chave específicas têm os seguintes efeitos nos buckets e objetos do Cloud Storage:

Se a versão for a principal e nenhuma nova versão principal for definida, ou se todas as versões de chave forem desativadas ou destruídas:

  • os uploads em buckets usando a chave como padrão causarão falha;
  • as operações de upload, cópia ou regravação de objetos que fazem referência à chave causarão falha;
  • os downloads de objetos criptografados usando as versões de chave afetadas causarão falha.

Se a versão não for principal ou se uma nova versão principal for definida:

  • os downloads de objetos criptografados usando as versões de chave afetadas causarão falha;
  • os uploads em buckets que usam a chave como padrão continuarão funcionando usando a versão da chave primária;
  • as operações de upload, cópia ou regravação de objetos que fazem referência à chave continuarão funcionando, usando a versão da chave principal.

Se você reativar uma versão de chave, os downloads de objetos criptografados com essa versão serão habilitados novamente.

Se uma versão de chave for destruída permanentemente, os downloads de objetos criptografados com essa versão não serão mais possíveis.

Como substituir uma chave antiga por uma nova

Caso opte por parar de usar uma chave e todas as versões existentes dela no Cloud Storage e substituí-la por uma nova chave, siga as instruções a seguir:

  • Identifique todos os buckets que usam a chave antiga como padrão e atualize-os para usar a nova chave. Isso garante que todos os novos uploads de objetos nesses buckets usem a nova chave no futuro.

  • Identifique todos os objetos, em todos os buckets, que foram criptografados usando a chave antiga. Use o método Rewrite Object para recriptografar cada objeto usando a nova chave. Isso garante que nenhum objeto existente se torne inacessível depois que a chave antiga for desativada ou destruída.

  • Considere desativar a chave antiga antes de destruí-la permanentemente. Monitore os registros de cliente e serviço para verificar se há alguma falha na operação devido à indisponibilidade da chave antiga.

Noções básicas sobre o uso de uma chave com dados armazenados no Cloud Storage

Antes de executar operações de gerenciamento de chaves, como a desativação ou a destruição de versões de chaves, sugerimos que você entenda totalmente como a chave afetada é usada nos seus buckets e objetos. Lembre-se:

  • Os buckets podem usar uma chave como padrão. Identifique todos os buckets, usando o console ou programaticamente, para referências ao nome da chave.

    [LOCATION]/[KEY_RING_NAME]/[KEY_NAME]

  • Os objetos são criptografados usando uma versão de chave específica. Identifique todos os objetos, usando o console ou programaticamente, para referências à versão específica da chave.

    [LOCATION]/[KEY_RING_NAME]/[KEY_NAME]/[KEY_VERSION]
  • Verifique o código-fonte e a configuração para entender quais chaves ele faz referência em operações contínuas no Cloud Storage, incluindo configuração de bucket e upload, cópia e regravação de objetos.

A seguir