Chaves de criptografia gerenciadas pelo cliente

Configuração

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

Se você precisar de mais controle sobre as operações de chaves do que a criptografia padrão do Cloud Storage permite, use chaves de criptografia gerenciadas pelo cliente. Essas chaves são criadas e gerenciadas usando o Cloud Key Management Service, (Cloud KMS) e você as armazenam como chaves de software, em um cluster de HSM ou externamente. Use chaves de criptografia gerenciadas pelo cliente em objetos individuais ou configure seu bucket para usar uma chave por padrão em todos os novos objetos adicionados a um bucket.

Ao usar uma chave de criptografia gerenciada pelo cliente, um objeto é criptografado com a chave pelo Cloud Storage no momento em que é armazenado em um bucket, e o objeto é descriptografado automaticamente pelo Cloud Storage quando o objeto é veiculados aos solicitantes.

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.

Agentes de serviço

Cada projeto tem uma conta de serviço especial do Cloud Storage, chamada de agente de serviço, que executa a criptografia e a descriptografia com chaves de criptografia gerenciadas pelo cliente. Depois de conceder ao agente de serviço acesso a uma chave de criptografia, esse agente criptografa:

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, o agente de serviço descriptografa automaticamente o objeto solicitado, desde que:

  • o agente 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, o agente 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 atualizar os metadados do objeto para criptografá-lo com uma chave de criptografia gerenciada pelo cliente. Inclua a chave como parte da regravação do objeto.

    • gcloud storage usa o comando objects update para definir chaves de criptografia em objetos, mas o comando reescreve o objeto como parte da solicitação.
  • Você precisa criar o keyring do Cloud KMS no mesmo local dos dados que pretende criptografar. Por exemplo, se o bucket estiver localizado em US-EAST1, qualquer keyring usado para criptografar objetos nesse bucket também precisará ser criado em US-EAST1.

    • Para a maioria das birregiões, você precisa criar o keyring do Cloud KMS na multirregião associada. Por exemplo, se o bucket estiver localizado no par US-EAST1, US-WEST1, qualquer keyring usado para criptografar objetos nesse bucket precisará ser criado na multiregião US.

    • Para as regiões birregionais predefinidas ASIA1, EUR4 e NAM4, é necessário criar o keyring na mesma região dupla predefinida.

      Para conhecer os locais disponíveis do Cloud KMS, consulte este artigo.

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

  • A soma de verificação CRC32C e o hash MD5 dos objetos criptografados com chaves de criptografia gerenciadas pelo cliente não são retornados ao listar objetos com a API JSON.

    • Quando apropriado, algumas ferramentas, como gcloud storage, executam uma solicitação GET de metadados adicionais em cada objeto criptografado com uma chave de criptografia gerenciada pelo cliente para recuperar CRC32C e MD5 informações. Essas solicitações adicionais podem tornar a listagem significativamente mais lenta do que a listagem de objetos criptografados com a criptografia padrão do Cloud Storage.
  • O Cloud Storage não pode usar a parte de descriptografia de chaves assimétricas armazenadas no Cloud KMS para descriptografar automaticamente objetos relevantes da mesma maneira que as chaves de criptografia gerenciadas pelo cliente.

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.

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:

Versões de chave e objetos bloqueados

Se uma versão de chave criptografar um objeto bloqueado, seja porque ele está armazenado em um bucket com uma política de retenção bloqueada ou porque ele tem a própria configuração de retenção bloqueada, a versão da chave só poderá ser destruída se as seguintes condições forem atendidas:

  • O tempo de validade da retenção do objeto criptografado precisa estar no passado.
  • O objeto criptografado não pode ter nenhuma retenção de objeto em vigor.

Quando todos os objetos relevantes atendem a essas condições, é possível destruir a versão da chave, mesmo sem excluir os objetos. Se você fizer isso, os dados do objeto afetado ficarão permanentemente inacessíveis.

A seguir