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 (CMEKs). Essas chaves são criadas e gerenciadas usando o Cloud Key Management Service (Cloud KMS), e você as armazena como chaves de software em um cluster de HSM ou externamente. É possível usar as CMEKs objetos individuais ou configure seu bucket para usar uma chave por padrão em todas e adicionar novos objetos a um bucket.

Ao usar uma CMEK, 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.

É possível criar CMEKs diretamente ou usar a chave automática do Cloud KMS (pré-lançamento) para criar essas chaves em seu nome. Para mais informações, consulte Visão geral das chaves automáticas.

Quando a chave é usada?

Quando você aplica uma CMEK a um objeto, o Cloud Storage usa a chave ao criptografia:

  • os 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. Assim, se você tem permissão suficiente, pode realizar ações como ler maioria dos metadados, listagem e exclusão de objetos, mesmo após a desativação. ou destruiu a CMEK associada.

Agentes de serviço

Cada projeto tem uma conta de serviço especial do Cloud Storage chamada agente de serviço que executa criptografia e descriptografia com CMEKs. 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 um solicitante quiser ler um objeto criptografado com uma CMEK, basta que ele acesse o objeto normalmente. 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 seguintes restrições se aplicam ao uso de CMEKs:

  • Não é possível atualizar os metadados de um objeto com uma CMEK. 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 de objetos criptografados com CMEKs não são retornados ao listar objetos com a API JSON.

    • Quando apropriado, algumas ferramentas, como gcloud storage, realizam uma solicitação GET de metadados adicionais em cada objeto criptografado com uma CMEK para recuperar as informações CRC32C e MD5. 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.
  • Apenas chaves de criptografia simétricas podem ser usadas como CMEKs.

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 CMEK 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