Chaves de encriptação geridas do cliente

Configuração

Por predefinição, o Cloud Storage encripta o conteúdo do cliente em repouso. O Cloud Storage processa a encriptação por si sem ações adicionais da sua parte. Esta opção chama-se Encriptação predefinida da Google.

Se quiser controlar as suas chaves de encriptação, pode usar chaves de encriptação geridas pelo cliente (CMEK) no Cloud KMS com serviços integrados com CMEK, incluindo o Cloud Storage. A utilização de chaves do Cloud KMS dá-lhe controlo sobre o respetivo nível de proteção, localização, programação de rotação, utilização, autorizações de acesso e limites criptográficos. A utilização do Cloud KMS também permite ver registos de auditoria e controlar os ciclos de vida das chaves. Em vez de a Google possuir e gerir as chaves de encriptação de chaves (KEKs) simétricas que protegem os seus dados, controla e gere estas chaves no Cloud KMS.

Depois de configurar os seus recursos com CMEKs, a experiência de acesso aos recursos do Cloud Storage é semelhante à utilização da encriptação predefinida da Google. Para mais informações acerca das CMEK, consulte o artigo Chaves de encriptação geridas pelo cliente (CMEK). Para saber como usar CMEKs criadas manualmente para proteger os seus recursos do Cloud Storage, consulte o artigo Use chaves de encriptação geridas pelo cliente.

Para mais informações sobre outras opções de encriptação quando usar o Cloud Storage, consulte as Opções de encriptação de dados.

Quando é usada a chave?

Quando aplica uma CMEK a um objeto, o Cloud Storage usa a chave quando encripta:

  • Os dados do objeto.
  • O checksum CRC32C do objeto.
  • O hash MD5 do objeto.

O Cloud Storage usa chaves do lado do servidor padrão para encriptar os metadados restantes do objeto, incluindo o nome do objeto. Assim, se tiver autorização suficiente, pode realizar ações como ler a maioria dos metadados, listar objetos e eliminar objetos, mesmo depois de ter desativado ou destruído a CMEK associada.

Agentes do serviço

Cada projeto tem uma conta de serviço especial do Cloud Storage denominada agente de serviço que realiza a encriptação e a desencriptação com CMEKs. Depois de conceder ao agente do serviço acesso a uma chave de encriptação, esse agente do serviço encripta:

Quando adiciona ou reescreve um objeto no Cloud Storage, se tiver uma chave predefinida definida no seu contentor e uma chave específica incluída no seu pedido, o Cloud Storage usa a chave específica para encriptar o objeto.

Quando um requerente quer ler um objeto encriptado com uma CMEK, basta aceder ao objeto como faria normalmente. Durante tal solicitação, o agente de serviço desencripta automaticamente o objeto solicitado, desde que:

  • O agente do serviço continua a ter autorização para desencriptar através da chave.
  • Não desativou nem destruiu a chave.

Se uma destas condições não for cumprida, o agente de serviço não desencripta os dados e o pedido falha.

Restrições

Aplicam-se as seguintes restrições quando usa CMEKs:

  • Não pode encriptar um objeto com uma CMEK atualizando os metadados do objeto. Em alternativa, inclua a chave como parte de uma reescrita do objeto.

    • O gcloud storage usa o comando objects update para definir chaves de encriptação em objetos, mas o comando reescreve o objeto como parte do pedido.
  • Tem de criar o conjunto de chaves do Cloud KMS na mesma localização que os dados que quer encriptar. Por exemplo, se o seu contentor estiver localizado em US-EAST1, qualquer anel de chaves usado para encriptar objetos nesse contentor também tem de ser criado em US-EAST1.

    • Para regiões duplas, a localização do conjunto de chaves do Cloud KMS tem de corresponder ao código de localização da região dupla. Por exemplo, se o seu contentor estiver localizado no par de regiões duplas configurável US-EAST1, US-WEST1, qualquer anel de chaves usado para encriptar objetos nesse contentor tem de ser criado na multirregião US, que corresponde ao código de localização deste contentor. Se o seu contentor estiver localizado na região dupla predefinida NAM4, tem de criar o conjunto de chaves na mesma região dupla predefinida, NAM4.

      Para ver as localizações do Cloud KMS disponíveis, consulte o artigo Localizações do Cloud KMS.

  • A soma de verificação CRC32C e o hash MD5 de objetos encriptados com CMEKs não são devolvidos quando são listados objetos com a API JSON.

    • Quando adequado, algumas ferramentas, como a gcloud storage, fazem um pedido de GET de metadados adicionais em cada objeto encriptado com uma CMEK para obter as informações CRC32C e MD5. Estas solicitações adicionais podem tornar a listagem substancialmente mais lenta do que a listagem de objetos encriptados com a encriptação padrão do Cloud Storage.
  • Só é possível usar chaves de encriptação simétricas como CMEKs.

Quotas do Cloud KMS e Cloud Storage

Quando usa CMEK no Cloud Storage, os seus projetos podem consumir quotas de pedidos criptográficos do Cloud KMS.

As operações de encriptação e desencriptação com chaves CMEK afetam as quotas do Cloud KMS das seguintes formas:

  • Para chaves CMEK de software geradas no Cloud KMS, não é consumida nenhuma quota do Cloud KMS.
  • Para chaves CMEK externas, por vezes denominadas chaves do Cloud EKM, as operações de encriptação e desencriptação são contabilizadas em função das quotas do Cloud EKM no projeto que contém a chave.

Para mais informações, consulte as cotas do Cloud KMS.

Relação com as chaves de encriptação fornecidas pelos clientes

Além da encriptação gerida pelo cliente, o Cloud Storage oferece chaves de encriptação fornecidas pelo cliente como forma de controlar a encriptação dos seus dados. Pode encriptar diferentes objetos num único contentor com diferentes métodos de encriptação, mas tenha em atenção que:

  • Um único objeto só pode ser encriptado por um destes métodos de cada vez.

  • Se tiver uma CMEK predefinida definida para o seu contentor e especificar uma chave fornecida pelo cliente num pedido, o Cloud Storage usa a chave fornecida pelo cliente para encriptar o objeto.

Gestão de chaves

Esta secção aborda as considerações ao rodar chaves, substituir chaves e desativar ou destruir versões de chaves.

Rotação de chaves

O Cloud KMS suporta a alternância de chaves automática e manual para uma nova versão. Após a rotação de uma chave, o Cloud Storage usa a nova versão para todas as operações que encriptam através da chave, como:

  • Carregamentos de objetos quando o contentor de destino usa a chave como chave de encriptação predefinida.

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

As versões anteriores da chave não são desativadas nem destruídas, pelo que o Cloud Storage continua a poder desencriptar objetos existentes que foram encriptados anteriormente com essas versões.

Substituição de chaves

Use as seguintes diretrizes quando substituir a chave que usa para encriptar objetos do Cloud Storage por uma nova chave:

  1. Verifique os contentores para ver quais usam a chave como chave de encriptação predefinida. Para estes contentores, substitua a chave antiga por uma nova.

    Isto garante que todos os objetos escritos no contentor usam a nova chave a partir de agora.

  2. Inspeccione o código-fonte para compreender que pedidos usam a chave em operações em curso, como definir configurações de contentores e carregar, copiar ou reescrever objetos. Atualize estas instâncias para usar a nova chave.

  3. Verifique se existem objetos em todos os seus contentores encriptados com a chave antiga. Use o método Rewrite Object para voltar a encriptar cada objeto com a nova chave.

  4. Desative todas as versões da chave antiga. Depois de desativar as versões antigas das chaves, monitorize os registos do cliente e do serviço para ver se existem operações que falham devido à indisponibilidade de uma versão.

Desativar ou destruir uma versão da chave

  • Quando desativa ou destrói uma versão de chave específica, não pode desencriptar nenhum objeto que esteja atualmente encriptado com essa versão de chave.

    Por exemplo, não pode transferir, copiar nem reescrever o objeto, e se tentar fazê-lo, ocorre um erro.

    • Se desativar uma versão de chave, pode reativá-la. Depois de voltar a ativar a versão da chave, pode aceder aos objetos que foram encriptados por essa versão da chave.

    • Se destruir uma versão de chave, as transferências de objetos encriptados com essa versão nunca mais são possíveis.

    Antes de desativar ou destruir uma versão de chave, deve identificar todos os objetos, em todos os contentores, que foram encriptados com a versão de chave específica. Depois de identificados, use o método Rewrite Object para voltar a encriptar cada objeto com uma nova versão da chave, uma chave totalmente nova ou chaves do lado do servidor.

  • Quando desativa ou destrói a versão principal de uma chave, não pode usar a chave para encriptação até ter uma nova versão principal. Por exemplo, sem uma versão principal:

    • Não pode especificar a chave como parte de um carregamento, uma cópia ou uma reescrita de objeto.

    • Não pode carregar, copiar nem reescrever objetos para um contentor que tenha a chave definida como chave de encriptação predefinida a menos que especifique uma chave diferente e válida como parte da operação.

    Depois de ter uma versão principal para a sua chave, as operações que usam a chave para encriptar objetos são bem-sucedidas.

    Antes de desativar ou destruir uma versão de chave que seja a versão principal da chave, deve primeiro deixar de a usar como versão principal. Pode fazê-lo de uma das seguintes formas:

    • Substituí-la por uma nova versão principal, normalmente através da rotação de chaves.
    • Remover instâncias em que usa a chave para encriptação. Quando o faz, o Cloud Storage usa chaves do lado do servidor para encriptação em alternativa.

Versões principais e objetos bloqueados

Se uma versão da chave encriptar um objeto bloqueado, quer porque o objeto está armazenado num contentor com uma política de retenção bloqueada, quer porque o objeto tem a sua própria configuração de retenção bloqueada, a versão da chave só pode ser destruída se forem cumpridas as seguintes condições:

  • A hora de validade da retenção do objeto encriptado tem de ser no passado.
  • O objeto encriptado não pode ter nenhuma retenção de objeto.

Quando todos os objetos relevantes cumprirem estas condições, é possível destruir a versão da chave, mesmo sem eliminar os objetos. Se o fizer, os dados dos objetos afetados tornam-se permanentemente inacessíveis.

O que se segue?