Chaves de criptografia gerenciadas pelo cliente

Configuração

Por padrão, o Cloud Storage criptografa o conteúdo do cliente em repouso. O Cloud Storage processa a criptografia para você sem que você precise fazer nada. Essa opção é chamada de Criptografia padrão do Google.

Se você quiser controlar suas chaves de criptografia, use chaves de criptografia gerenciadas pelo cliente (CMEKs) no Cloud KMS com serviços integrados a CMEKs, incluindo o Cloud Storage. O uso de chaves do Cloud KMS permite controlar o nível de proteção, o local, a programação de rotação, as permissões de uso e acesso e os limites criptográficos. O uso do Cloud KMS também permite a você monitorar o uso de chaves, visualizar registros de auditoria e controlar ciclos de vida importantes. Em vez de o Google ser proprietário e gerente de chaves de criptografia de chaves (KEKs) simétricas que protegem seus dados, você controla e gerencia essas chaves no Cloud KMS.

Depois de configurar os recursos com CMEKs, a experiência de acesso aos recursos do Cloud Storage é semelhante à criptografia padrão do Google. Para mais informações sobre CMEKs, consulte Chaves de criptografia gerenciadas pelo cliente (CMEK). Para saber como usar CMEKs criadas manualmente para proteger recursos do Cloud Storage, consulte Usar chaves de criptografia gerenciadas pelo cliente.

Para mais informações sobre outras opções de criptografia ao usar o Cloud Storage, consulte Opções de criptografia de dados.

CMEK com o Cloud KMS Autokey

É possível criar CMEKs manualmente para proteger os buckets do Cloud Storage e os objetos neles ou usar o Autokey do Cloud KMS. Com o Autokey, keyrings e chaves são gerados sob demanda como parte da criação ou atualização de recursos no Cloud Storage. Os agentes de serviço que usam as chaves para operações de criptografia e descriptografia são criados se ainda não existirem e receberem os papéis necessários do Identity and Access Management (IAM). Para mais informações, consulte Visão geral das autokeys.

O Autokey não cria chaves para objetos. Por padrão, os objetos em um bucket usam a chave padrão do bucket. Se você quiser criptografar um objeto usando uma chave diferente da padrão do bucket, crie manualmente uma CMEK e use-a ao criar o objeto.

Para saber como usar as CMEKs criadas pelo Autokey do Cloud KMS para proteger os buckets do Cloud Storage e os objetos neles, consulte Como usar o Autokey com recursos do Cloud Storage.

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 ambientes birregional, o local do keyring do Cloud KMS precisa corresponder ao código de localidade do ambiente birregional. Por exemplo, se o bucket estiver no par de ambiente birregional configurável US-EAST1, US-WEST1, qualquer keyring usado para criptografar objetos nesse bucket precisará ser criado no ambiente multirregional US, que corresponde ao código de localidade do bucket. Se o bucket estiver no ambiente birregional predefinido NAM4, será necessário criar o keyring no mesmo ambiente birregional predefinido, NAM4.

      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