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.

Restrições

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

  • Não é possível executar a composição de objetos quando um ou mais objetos de origem são criptografados com 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.

  • As taxas de criptografia e descriptografia do Cloud KMS estão sujeitas a uma cota.

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

Esta seção discute considerações sobre fazer a rotação de chaves, substituir chaves e desativar ou destruir versões de chaves.

Troca de chaves

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

  • Uploads de objetos quando o bucket de destino usa a chave como chave de criptografia padrão.

  • Operações de upload, cópia e regravação de objetos que usam especificamente a chave na operação.

As versões anteriores da chave não são desativadas ou destruídas. Por isso, o Cloud Storage ainda pode descriptografar objetos que já foram criptografados usando essas versões.

Substituição de chaves

Siga as diretrizes a seguir ao substituir a chave usada para criptografar objetos do Cloud Storage com uma nova chave:

  1. Verifique os buckets para ver qual deles usa a chave como chave de criptografia padrão. Nesses buckets, substitua a chave antiga por uma nova.

    Isso garante que todos os objetos gravados no bucket usem a nova chave no futuro.

  2. Inspecione seu código-fonte para entender quais solicitações usam a chave em operações em andamento, como definir configurações de bucket e fazer upload, copiar ou reescrever objetos. Atualize essas instâncias para usar a nova chave.

  3. Verifique se há objetos, em todos os seus buckets, criptografados com a chave antiga. Use o método Rewrite Object para recriptografar cada objeto com a nova chave.

  4. Desative todas as versões da chave antiga. Depois de desativar as versões da chave antiga, monitore os registros de clientes e serviços em busca de operações que falharam devido a uma versão estar indisponível.

Como desativar ou destruir uma versão de chave

  • Ao desativar ou destruir uma versão de chave específica, não será possível descriptografar nenhum objeto que foi criptografado com ela.

    Por exemplo, não é possível fazer o download, copiar ou regravar o objeto, e tentar fazer isso resulta em um erro.

    • Se você desativar uma versão de uma chave, poderá reativá-la. Depois disso, será possível acessar os objetos que foram criptografados por aquela versão.

    • Se você destruir uma versão de chave, os downloads de objetos criptografados com essa versão não serão mais possíveis.

    Antes de desativar ou destruir uma versão de chave, identifique todos os objetos que foram criptografados com aquela versão específica da chave em todos os buckets. Depois da identificação, use o método Rewrite Object para recriptografar cada um deles usando uma nova versão de chave, uma chave totalmente nova ou chaves do lado do servidor.

  • Ao desativar ou destruir a versão primária de uma chave, não é possível usá-la para criptografia até que você tenha uma nova versão primária. Por exemplo, sem uma versão primária:

    • Não é possível especificar a chave como parte de um upload, cópia ou regravação de um objeto.

    • Não é possível fazer upload, copiar ou regravar objetos em um bucket que tenha aquela chave definida como chave de criptografia padrão, a menos que você especifique uma chave válida diferente como parte da operação.

    Depois de ter uma versão primária para sua chave, as operações que a usam para criptografar objetos serão bem-sucedidas.

    Antes de desativar ou destruir uma versão de chave que é a versão primária da chave, primeiro pare de usá-la como a versão primária. Para isso, você pode:

A seguir