Criptografar dados com chaves de criptografia gerenciadas pelo cliente

Nesta página, mostramos como criptografar os dados em instâncias e backups do Filestore usando as próprias chaves de criptografia.

Por padrão, o Google Cloud criptografa automaticamente os dados quando está em repouso usando chaves de criptografia gerenciadas pelo Google Cloud. Se você precisa de mais controle sobre as chaves que protegem seus dados, use chaves de criptografia gerenciadas pelo cliente para o Filestore.

Opções de chave de criptografia gerenciada pelo cliente

O Cloud Key Management Service oferece suporte a chaves de criptografia gerenciadas pelo cliente (CMEK), que podem ser armazenadas como chaves de software, como chaves de hardware em um cluster do HSM ou externamente no Cloud External Key Manager (Cloud EKM). Várias opções estão disponíveis.

Para mais informações, consulte Cloud Key Management Service.

Cloud External Key Manager

O suporte do Cloud EKM para o Filestore agora está com disponibilidade geral (GA). Para mais informações, consulte Gerenciador de chaves externas do Cloud.

Interrupções no serviço EKM

Por padrão, as chaves externas são gerenciadas por terceiros. Nessas circunstâncias, o Google Cloud não é responsável pela disponibilidade das chaves.

Se o Cloud Key Management Service (Cloud KMS) for notificado pelo Gerenciador de chaves externas (EKM, na sigla em inglês) de que uma chave externa está inacessível, os usuários receberão uma notificação ekm_key_unreachable_detected. Por até uma hora, os usuários têm acesso limitado às operações na instância. Depois de uma hora, se o status da chave não for alterado, as seguintes ações serão aplicadas:

  • A chave está desativada.
  • Todas as operações de criptografia e descriptografia falham.
  • a instância do Filestore está suspensa.

Em alguns casos, como um evento não planejado, como a reinicialização da VM, o acesso à instância pode ser interrompido antes de uma hora.

As notificações de chaves inacessíveis podem ser visualizadas na página de detalhes da instância do Filestore:

Acessar a página de instâncias do Filestore

Os usuários também recebem notificações ekm_key_unreachable_detected em qualquer uma das operações abaixo, se realizadas dentro de uma hora após a primeira notificação informada:

Níveis compatíveis

A tabela a seguir mostra os níveis de serviço do Filestore que aceitam chaves de criptografia gerenciadas pelo cliente:

Nível Suporte a CMEK
HDD básico Não
SSD básico Não
Por zona com um intervalo de capacidade menor Sim
Zonal com um intervalo de capacidade maior (anteriormente um SSD de alta escala) Sim
Enterprise Sim

Criar um keyring e uma chave para usar com sua instância

O keyring e a chave podem estar em um projeto diferente da instância do Filestore, mas precisam estar no mesmo local. Se você já tiver um keyring e uma chave do Cloud KMS que quer usar com o Filestore, pule para a próxima seção. Caso contrário, siga as instruções em Como criar chaves de criptografia simétricas para criar um keyring e uma chave.

Conceder permissão de acesso de chave à conta de serviço do Filestore

Antes de criar uma instância do Filestore que usa uma chave de criptografia gerenciada pelo cliente, a conta de serviço do Filestore precisa ter o papel criptografador/descriptografador de CryptoKey do Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter).

  1. Uma conta de serviço do Filestore é criada na primeira vez que você cria uma instância do Filestore no projeto. Se você ainda não tiver uma conta de serviço do Filestore, execute o seguinte comando services identity create:

    gcloud beta services identity create --service=file.googleapis.com --project=INSTANCE_PROJECT_NUMBER_OR_ID
    

    Substitua INSTANCE_PROJECT_NUMBER_OR_ID pelo número ou ID do projeto em que você quer criar a instância do Filestore.

  2. Atribua à conta de serviço do Filestore o papel criptografador/descriptografador de CryptoKey do Cloud KMS executando o comando projects add-iam-policy-binding:

    gcloud projects add-iam-policy-binding KMS_PROJECT_NUMBER_OR_ID \
        --member serviceAccount:service-INSTANCE_PROJECT_NUMBER@cloud-filer.iam.gserviceaccount.com \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    Substitua:

    • KMS_PROJECT_NUMBER_OR_ID pelo número ou ID do projeto que contém a chave do Cloud KMS que você quer usar.
    • INSTANCE_PROJECT_NUMBER pelo número (não o ID) do projeto em que você quer criar a instância do Filestore.

Criar uma instância que usa a chave do Cloud KMS

Console do Google Cloud

Para criar uma instância que usa a chave do Cloud KMS na criptografia de dados:

  1. No console do Google Cloud, acesse a página de instâncias do Filestore.

    Acessar a página de instâncias do Filestore

  2. Clique em Criar instância.

  3. Selecione um nível de instância que ofereça suporte a CMEKs e preencha todos os outros campos obrigatórios e opcionais como faria normalmente.

  4. Clique em Exibir opções avançadas.

  5. Marque a caixa de seleção Usar uma chave de criptografia gerenciada pelo cliente (CMEK).

  6. Selecione a chave do Cloud KMS que você quer usar para a instância.

  7. Clique em Criar.

CLI da gcloud

Para criar uma instância do Filestore que use a chave do Cloud KMS para criptografia de dados, especifique a sinalização --kms-key no comando filestore instances create:

gcloud filestore instances create nfs-server \
    --tier=<var>TIER</var> \
    --location=us-central1 \
    --file-share=name="vol1",capacity=1TiB \
    --network=name="default" \
    --kms-key=KMS_KEY

Substitua:

  • TIER com um nível do Filestore que ofereça suporte a chaves de criptografia gerenciadas pelo cliente.
  • KMS_KEY pelo nome totalmente qualificado da chave do Cloud KMS que você quer usar. Como alternativa, é possível especificar cada argumento separadamente no formato:
--kms-key=KMS_KEY : --kms-keyring=KEY_RING --kms-location=KMS_REGION --kms-project=KMS_PROJECT_NUMBER_OR_ID

Substitua:

  • KMS_KEY pelo nome da chave do Cloud KMS.
  • KMS_PROJECT_NUMBER_OR_ID pelo número ou ID do projeto em que a chave foi criada.
  • KMS_KEY_RING pelo nome do keyring;
  • KMS_REGION pela região do keyring. O keyring e a instância precisam estar localizados na mesma região.

Ver uma lista de chaves

Para ver uma lista de chaves, execute o comando kms keys list:

gcloud kms keys list \
    --project=KMS_PROJECT_NUMBER_OR_ID \
    --keyring=KEY_RING \
    --location=KMS_REGION

Substitua:

  • KMS_PROJECT_NUMBER_OR_ID pelo número ou ID do projeto em que a chave foi criada.
  • KEY_RING pelo nome do keyring;
  • KMS_REGION pela região do keyring.

A coluna Nome da saída mostra o nome totalmente qualificado das chaves atuais. Exemplo:

projects/example-project/locations/us-central1/keyRings/example-ring/cryptoKeys/example-key

Receber informações da chave da instância

As seções a seguir abordam como acessar informações da chave da instância.

Listar instâncias que usam uma chave específica do Cloud KMS

Para listar instâncias do Filestore que usam uma chave específica, execute o comando instances list:

gcloud filestore instances list --filter="kmsKeyName=KMS_KEY"

Substitua KMS_KEY pelo nome totalmente qualificado da chave que você quer usar.

Exemplo:

gcloud filestore instances list \
    --filter="kmsKeyName=projects/example-project/locations/us-central1/keyRings/example-ring/cryptoKeys/example-key"

A saída é semelhante a esta:

INSTANCE_NAME LOCATION    TIER       CAPACITY_GB FILE_SHARE_NAME IP_ADDRESS   STATE CREATE_TIME
nfs-server    us-central1 ENTERPRISE 1024        vol1            10.166.108.2 READY 2021-08-12T11:38:56

Receber informações da chave do Cloud KMS de uma instância

Use um dos métodos a seguir para receber informações da chave do Cloud KMS sobre uma instância do Filestore:

Console do Google Cloud

  1. Acessar a página de instâncias do Filestore.

    Acessar a página de instâncias do Filestore

  2. Clique no código da instância para abrir a página de detalhes da instância.

  3. Clique na guia Visão geral.

Se a instância criptografar dados usando uma chave do Cloud KMS em vez de uma chave de criptografia gerenciada pelo Google, o nome da chave será exibido no campo Chave de criptografia.

CLI da gcloud

Execute este comando instances describe:

gcloud filestore instances describe INSTANCE_ID \
   --location=INSTANCE_LOCATION

Substitua:

  • INSTANCE_ID pelo ID da instância do Filestore de que você quer receber informações.
  • INSTANCE_LOCATION pela região ou zona em que a instância está localizada.

A saída é semelhante a esta:

createTime: '2021-08-12T11:38:56.851157387Z'
fileShares:
- capacityGb: '1024'
  name: vol1
kmsKeyName: projects/example-project/locations/us-central1/keyRings/example-ring/cryptoKeys/example-key
labels:
  key: val
name: projects/consumer-project/locations/us-central1/instances/nfs-server
networks:
- ipAddresses:
  - 10.0.100.2
  modes:
  - MODE_IPV4
  network: network
  reservedIpRange: 10.166.108.0/23
state: READY
tier: ENTERPRISE

Desativar ou destruir uma chave do Cloud KMS usada por uma instância

Se uma alteração no estado da chave do Cloud KMS for detectada, a instância interrompe automaticamente a veiculação de dados. Veja alguns exemplos:

  • Desativar uma chave ou versão dela.
  • Destruir uma chave ou versão.
  • Modificar as permissões de uma chave.

Essa detecção geralmente acontece alguns minutos após a alteração do estado da chave, mas em alguns casos pode levar até uma hora.

Quando uma instância é interrompida, todo o acesso aos dados do compartilhamento de arquivos e a qualquer snapshot é bloqueado. As instâncias interrompidas continuam sendo cobradas até serem excluídas.

Como iniciar uma instância parada

Se uma instância interrompida do Filestore usar uma chave do Cloud KMS para criptografia de dados, todas as versões de chave da chave precisarão ser ativadas ou restauradas antes de reiniciar a instância.

Depois que o status da chave do Cloud KMS estiver ativado, a instância detectará automaticamente as alterações nas chaves e será reiniciada sem qualquer outra ação, geralmente em até 20 minutos.

Suporte a CMEK para cadeias de backup

É possível usar as CMEKs para criptografar não apenas suas instâncias do Filestore, mas também as cadeias de backup.

As cadeias de backup residem em um único bucket e região. Para armazenar e criptografar dados de backup em uma região fora da instância de origem, os usuários precisam aplicar duas CMEKs separadas: uma para a instância e outra para a cadeia de backup. Sujeito a alguns requisitos:

  • Uma CMEK precisa residir na mesma região que a cadeia de backup que ela criptografa.

  • Uma única CMEK é aplicada ao bucket em que a cadeia de backup está armazenada e não pode ser combinada ou substituída.

  • Para criar um backup usando uma nova CMEK, toda a cadeia de backup atual precisa ser excluída.

O suporte a CMEK não está disponível para backups de nível básico.

Para mais informações, consulte Backups.

A seguir