Chaves de criptografia fornecidas pelo cliente

Nesta página, você verá informações sobre as chaves de criptografia fornecidas pelo cliente. Para outras opções de criptografia de dados, acesse este link. Para exemplos de uso desse recurso, consulte Como usar chaves de criptografia fornecidas pelo cliente.

Visão geral

Como uma camada extra sobre as chaves de criptografia gerenciadas pelo Google, é possível fornecer sua própria chave AES-256, codificada no padrão Base64. Essa chave é conhecida como chave de criptografia fornecida pelo cliente. Caso você use uma chave de criptografia fornecida pelo cliente, o Cloud Storage não armazenará permanentemente sua chave nos servidores do Google nem gerará sua chave. Em vez disso, forneça sua chave para cada operação do Cloud Storage. Ela será removida dos servidores do Google após a conclusão da operação. O Cloud Storage armazena apenas um hash de criptografia da chave para que as solicitações futuras possam ser validadas em relação ao hash. Sua chave não pode ser recuperada desse hash e ele não pode ser usado para descriptografar seus dados.

Quando a chave é usada?

Ao aplicar uma chave de criptografia fornecida pelo cliente a um objeto, ela é usada pelo Cloud Storage para criptografar:

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

O Cloud Storage usa chaves padrão do servidor para criptografar os metadados restantes, incluindo o nome do objeto. Desse modo, é possível ler e atualizar metadados gerais, além de listar e excluir objetos sem precisar da chave de criptografia fornecida pelo cliente. No entanto, você precisa ter permissões suficientes para executar essas ações.

Por exemplo, se um objeto for criptografado com uma chave de criptografia fornecida pelo cliente, a chave deverá ser usada para executar operações no objeto, como downloads ou transferências. Se você tentar ler os metadados do objeto sem fornecer a chave, receberá metadados como o nome do objeto e o Content-Type, mas não a soma de verificação CRC32C ou hash MD5 do objeto. Se você fornecer sua chave com a solicitação dos metadados do objeto, a soma de verificação CRC32C e o hash MD5 dele serão incluídos nos metadados.

Verificação de HTTPS

Para proteger os dados enquanto eles trafegam pela Internet durante as operações de leitura e gravação, use o Transport Layer Security, normalmente conhecido como TLS ou HTTPS. O TLS é necessário quando você especifica uma chave de criptografia. Se você usar sua chave de criptografia acidentalmente em uma conexão não criptografada (HTTP), um invasor poderá interceptar sua chave. Devido a essa possibilidade, a Cloud Storage API retorna uma mensagem de erro avisando que sua chave pode estar comprometida. Se isso ocorrer, troque suas chaves imediatamente.

Restrições

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

  • O Cloud Storage Transfer Service, o Cloud Dataflow e o Cloud Dataproc atualmente não são compatíveis com objetos criptografados com chaves de criptografia fornecidas pelo cliente.

  • Não é possível usar o console do Google Cloud Platform para fazer o download de objetos criptografados com uma chave de criptografia fornecida pelo cliente. Da mesma forma, quando você usa o console do Google Cloud Platform para fazer upload de um objeto, não é possível criptografar o objeto com uma chave de criptografia fornecida pelo cliente. Você pode executar essas ações com chaves de criptografia gerenciadas pelo cliente.

  • As chaves de criptografia fornecidas pelo cliente estão disponíveis nos seguintes países:

    Argentina, Áustria, Austrália, Bélgica, Bulgária, Canadá, Chile, Colômbia, Chipre, República Tcheca, Dinamarca, Estônia, Finlândia, França, Alemanha, Grécia, Hong Kong, Hungria, Indonésia, Irlanda, Israel, Itália, Japão, Lituânia, Luxemburgo, Letônia, Malásia, Malta, México, Holanda, Nova Zelândia, Noruega, Peru, Polônia, Portugal, Romênia, Cingapura, Eslováquia, África do Sul, Coreia do Sul, Espanha, Suécia, Suíça, Taiwan, Tailândia, Turquia, Reino Unido (UK), Estados Unidos (US), Vietnã

    Se seu país não está nessa lista, solicite a inclusão dele.

  • Para usar chaves de criptografia fornecidas pelo cliente com a gsutil, você precisa ter a versão 4.18 ou posterior da gsutil.

  • Você só pode definir chaves de criptografia fornecidas pelo cliente em objetos individuais. Não é possível definir uma chave de criptografia padrão fornecida pelo cliente para um intervalo.

  • Se você estiver executando uma operação compose em objetos criptografados por chaves de criptografia fornecidas pelo cliente, os objetos do componente terão de ser criptografados pela mesma chave. Além disso, será necessário fornecer a chave com a solicitação de escrita. O objeto composto resultante é criptografado pela mesma chave.

Ferramentas para usar chaves de criptografia

Há várias maneiras de usar as chaves de criptografia fornecidas pelo cliente com o Cloud Storage. São elas:

  • empresas parceiras
  • REST APIs JSON e XML
  • a ferramenta de linha de comando gsutil

Chaves de criptografia com empresas parceiras

Há várias opções de parceiros terceirizados para usar chaves de criptografia fornecidas pelo cliente. Esses parceiros facilitam a geração de uma chave de criptografia e a associação dessa chave a um objeto no Cloud Storage. Os parceiros que podem fornecer chaves para o Cloud Storage incluem o Ionic Security e o KeyNexus.

Para saber mais, consulte a página Parceiros do Cloud Storage.

Chaves de criptografia com REST APIs

Quando você usa uma chave de criptografia fornecida pelo cliente e trabalha diretamente com a API JSON ou XML, precisa fornecer a chave AES-256 e um hash SHA256 da chave. Armazene a chave AES-256 e o hash SHA256 da chave com segurança. O Google armazena o hash SHA256 de sua chave nos metadados do objeto, onde você pode recuperá-lo mais tarde. Esse hash SHA256 não pode ser usado pelo Google nem por qualquer outra pessoa para descriptografar seus dados. Ele é armazenado como uma maneira de identificar de maneira exclusiva a chave AES-256 que foi usada para criptografar um objeto específico.

Cabeçalhos das solicitações

Inclua os seguintes cabeçalhos HTTP em sua solicitação JSON ou XML:

Nome do cabeçalho Valor Descrição
x-goog-encryption-algorithm string O algoritmo de criptografia a ser usado. Use o valor AES256.
x-goog-encryption-key string Uma string RFC 4648 codificada por Base64 da sua chave de criptografia AES-256.
x-goog-encryption-key-sha256 string Uma string RFC 4648 codificada por Base64 do hash SHA256 da sua chave de criptografia.

Se você estiver executando uma operação de regravação com a JSON API, os cabeçalhos listados acima serão usados para criptografar o objeto de destino. Os cabeçalhos a seguir serão usados para descriptografar o objeto de origem:

Nome do cabeçalho Valor Descrição
x-goog-copy-source-encryption-algorithm string O algoritmo de criptografia a ser usado. Use o valor AES256.
x-goog-copy-source-encryption-key string Uma string RFC 4648 codificada por Base64 da sua chave de criptografia AES-256 do objeto de origem.
x-goog-copy-source-encryption-key-sha256 string Uma string RFC 4648 codificada por Base64 do hash SHA256 da sua chave de criptografia do objeto de origem.

Resposta

JSON

Ao usar a JSON API, os metadados de uma chave de criptografia fornecida pelo cliente são retornados no corpo da resposta, que inclui as seguintes propriedades:

Nome da propriedade Valor Descrição
customerEncryption objeto Informações sobre a criptografia usada para a solicitação.
customerEncryption.encryptionAlgorithm string O algoritmo de criptografia usado. Sempre contém o valor AES256.
customerEncryption.keySha256 string Uma string RFC 4648 codificada por Base64 do hash SHA256 da sua chave de criptografia. Você pode usar esse hash SHA256 para identificar de maneira exclusiva a chave de criptografia AES-256 necessária para descriptografar o objeto, que precisa ser armazenado com segurança.

XML

Ao usar a XML API, a resposta inclui os seguintes cabeçalhos:

Nome do cabeçalho Valor Descrição
x-goog-encryption-algorithm string O algoritmo de criptografia usado. Sempre contém o valor AES256.
x-goog-encryption-key-sha256 string Uma string RFC 4648 codificada por Base64 do hash SHA256 da sua chave de criptografia. Você pode usar esse hash SHA256 para identificar de maneira exclusiva a chave de criptografia AES-256 necessária para descriptografar o objeto, que precisa ser armazenado com segurança.

Você recebe um erro HTTP 400 nos seguintes casos:

  • Você faz upload de um objeto usando uma chave de criptografia fornecida pelo cliente e tenta executar outra operação no objeto, além de solicitar ou atualizar a maioria dos metadados ou excluir o objeto, sem fornecer a chave.
  • Você faz upload de um objeto usando uma chave de criptografia fornecida pelo cliente e tenta executar outra operação no objeto com uma chave incorreta.
  • Você faz upload de um objeto sem fornecer uma chave de criptografia fornecida pelo cliente e tenta executar outra operação no objeto com uma chave de criptografia fornecida pelo cliente.
  • Você especifica um algoritmo de criptografia, chave ou hash SHA256 inválidos.

Chaves de criptografia com gsutil

Para usar uma chave de criptografia fornecida pelo cliente com gsutil, adicione a seguinte opção à seção [GSUtil] do arquivo de configuração boto:

Nome da opção Valor Descrição
encryption_key string Uma string RFC 4648 codificada por Base64 da sua chave de criptografia AES-256.

Se quiser, você pode especificar uma ou mais chaves de descriptografia. A opção encryption_key é usada pela gsutil como chave de criptografia e descriptografia, mas todas as opções de decryption_key especificadas são usadas apenas para descriptografar objetos. Para detalhes, consulte a documentação da gsutil.

Contanto que você tenha chaves de criptografia ou descriptografia no arquivo de configuração boto, elas serão usadas para todos os comandos da gsutil. Ao descriptografar, a gsutil calcula o hash SHA256 das chaves de criptografia e descriptografia fornecidas e seleciona a chave correta a ser usada para um objeto específico, combinando o hash SHA256 nos metadados do objeto.

Você receberá um erro se fizer upload de um objeto usando uma chave de criptografia fornecida pelo cliente e tentar executar outra operação no objeto, além de solicitar ou atualizar a maioria dos metadados ou excluir o objeto, sem fornecer a chave.

Rotação de chave de criptografia

Se um objeto for criptografado usando uma chave de criptografia fornecida pelo cliente, você poderá girar a chave regravando o objeto. As regravações são compatíveis com a API JSON, mas não com a API XML. Consulte Como fazer rotação de uma chave de criptografia para ver exemplos de rotação de chaves.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.