Criptografar recursos da estação de trabalho usando CMEK

Por padrão, o Cloud Workstations usa uma chave de propriedade e gerenciada pelo Google para criptografar recursos de estações de trabalho, como VMs e discos persistentes, quando os dados estão em repouso. Se você tiver requisitos regulatórios ou de compliance específicos relacionados às chaves que protegem seus dados, use chaves de criptografia gerenciadas pelo cliente (CMEK) com o Cloud Key Management Service (Cloud KMS).

Para mais informações gerais sobre a CMEK, como quando e por que ativar, consulte a documentação do Cloud KMS.

Antes de começar

Criar seus projetos

  1. No console do Google Cloud, na página do seletor de projetos, selecione ou crie dois projetos do Google Cloud:

    • Um projeto de chave contém seus recursos do Cloud KMS, incluindo um keyring e uma chave de criptografia simétrica.

    • Um projeto de estações de trabalho contém estações de trabalho criptografadas com uma chave CMEK.

    É possível usar o mesmo projeto para o projeto principal e o projeto de estações de trabalho, mas, como prática recomendada, recomendamos usar dois projetos para separação de tarefas.

  2. Confira se o faturamento está ativado para seu projeto do Cloud. Saiba como verificar se o faturamento está ativado em um projeto.

  3. Ative as APIs necessárias em cada projeto.

  4. Instale e inicialize a CLI gcloud. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
    

Funções exigidas

Embora seja possível conceder papéis de administrador do Cloud KMS e do Cloud Workstations à mesma pessoa, recomendamos que você siga o princípio de privilégio mínimo ao atribuir papéis. Como prática recomendada, conceda esses papéis a duas pessoas diferentes e peça que elas se coordenem, em vez de pedir que o Cloud KMS também seja o Administrador do Cloud Workstations. Para mais informações, consulte Práticas recomendadas de segurança e Usar o IAM com segurança.

Para receber as permissões necessárias para configurar o CMEK, peça ao administrador para conceder a você os seguintes papéis do IAM:

  • Se você for o Administrador do Cloud KMS, peça ao administrador que conceda a você o seguinte papel para que você possa criar e gerenciar recursos do Cloud KMS: Administrador do Cloud KMS (roles/cloudkms.admin) no seu projeto de chave.
  • Se você for o Administrador do Cloud Workstations, peça ao administrador para conceder a você o seguinte papel para que você possa criar e atualizar estações de trabalho: Administrador do Cloud Workstations (roles/workstations.admin) no seu projeto de estações de trabalho.

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

Criar chave de criptografia e keyring

No projeto de chave, crie uma chave e salve o ID do recurso dela:

  1. Crie ou selecione um keyring.

    É possível compartilhar chaveiros entre serviços, mas, como prática recomendada, recomendamos usar uma chave diferente para cada recurso protegido. Consulte separação de deveres.

  2. Crie uma chave de criptografia simétrica.

    Crie a chave CMEK e a configuração da estação de trabalho na mesma região.

  3. Acesse o ID do recurso da chave e salve-o para uma etapa posterior.

Verificar as configurações da estação de trabalho

Se você não tiver configurações de estação de trabalho disponíveis no console do Google Cloud, peça ao administrador do Cloud Workstations para criar uma configuração de estação de trabalho para você ou verifique se você tem uma função de administrador do IAM do Cloud Workstations no projeto para criar esses recursos por conta própria.

Usar chaves de criptografia gerenciadas pelo cliente

Para usar uma CMEK em uma configuração de estação de trabalho, ative a CMEK no console do Google Cloud ou na CLI gcloud.

Console

Conceda à conta de serviço do Compute Engine e ao agente de serviço do Compute Engine o papel de criptografia/descriptografia de CryptoKey do Cloud KMS e o papel de leitor do Cloud KMS:

  1. No console do Google Cloud, acesse a página Gerenciamento de chaves.

    Acessar "Gerenciamento de chaves"

  2. Clique no nome do keyring que contém a chave.

  3. Marque a caixa de seleção da chave que você quer usar.

    A guia Permissões aparece como um painel.

  4. Na caixa de diálogo Adicionar membros, especifique o endereço de e-mail da conta de serviço do Compute Engine e do agente de serviço do Compute Engine a que você está concedendo acesso.

  5. No menu suspenso Selecionar um papel, escolha Criptografador/descriptografador do Cloud KMS CryptoKey.

  6. Clique em Adicionar outro papel.

  7. No menu suspenso Selecionar um papel, escolha Visualizador do Cloud KMS.

  8. Clique em Salvar.

Para ativar a CMEK no console do Google Cloud:

  1. Siga as etapas para criar uma configuração da estação de trabalho.

  2. Ao especificar a configuração da máquina, procure a seção Opções avançadas.

  3. Clique em expand_more Expand More e selecione Use customer-managed encryption key (CMEK).

    1. No campo Selecionar uma chave gerenciada pelo cliente, selecione a chave de criptografia gerenciada pelo cliente que você criou no projeto de chave.

      Se a chave criada não estiver na lista, clique em Inserir chave manualmente para selecionar a chave pelo ID do recurso e insira o ID anotado anteriormente.

    2. No campo Conta de serviço, selecione a conta de serviço usada pela chave.

  4. Conclua as outras etapas para criar a configuração da estação de trabalho.

  5. Crie, inicie e lance a configuração da estação de trabalho para criptografar os discos persistentes no seu projeto com a chave do Cloud KMS especificada.

gcloud

O exemplo a seguir concede um papel do IAM que fornece acesso a uma chave do Cloud KMS e ativa a CMEK especificando essa chave na configuração da estação de trabalho:

  1. Conceda à conta de serviço do KMS e ao agente de serviço do Compute Engine para o projeto das estações de trabalho o papel de criptografador/descriptografador do CryptoKey do Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) na chave CMEK. Isso permite que o serviço do Compute Engine crie recursos criptografados no seu projeto usando a chave CMEK especificada.

      gcloud kms keys add-iam-policy-binding KEY_NAME \
        --location LOCATION \
        --keyring KEY_RING \
        --member serviceAccount:WORKSTATIONS_PROJECT_NUMBER-compute@developer.gserviceaccount.com \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
        --project KMS_PROJECT_ID
    
      gcloud kms keys add-iam-policy-binding KEY_NAME \
        --location LOCATION \
        --keyring KEY_RING \
        --member serviceAccount:service-WORKSTATIONS_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
        --project KMS_PROJECT_ID
    

    Substitua:

    • KEY_NAME: o nome da chave;
    • LOCATION: o nome da região em que você criou o keyring.
    • KEY_RING: o nome do keyring;
    • WORKSTATIONS_PROJECT_NUMBER: o identificador numérico exclusivo gerado automaticamente e incluído como a primeira parte da conta de serviço padrão do Compute Engine do projeto de estações de trabalho.
    • KMS_PROJECT_ID: ID do projeto, uma string exclusiva usada para diferenciar seu projeto do Cloud KMS de todos os outros no Google Cloud.

    Para informações sobre todas as flags e valores possíveis, execute o comando com a flag --help.

  2. Para recuperar a conta de serviço de gerenciamento de estações de trabalho do seu projeto de estação de trabalho, use o seguinte comando:

    gcloud beta services identity create --service=workstations.googleapis.com \
        --project=WORKSTATIONS_PROJECT_ID
    

    Substitua WORKSTATIONS_PROJECT_ID pelo ID do projeto das estações de trabalho.

  3. Conceda à conta de serviço de gerenciamento de estações de trabalho do projeto o papel de leitor do Cloud KMS (roles/cloudkms.viewer) na chave CMEK. Isso permite que o serviço da estação de trabalho detecte a rotação de chaves e recriptografe os recursos conforme necessário no projeto.

    gcloud kms keys add-iam-policy-binding KEY_NAME \
        --location LOCATION \
        --keyring KEY_RING \
        --member WORKSTATIONS_MANAGEMENT_SERVICE_ACCOUNT \
        --role roles/cloudkms.viewer \
        --project KMS_PROJECT_ID
    

    Substitua:

    • KEY_NAME: o nome da chave;
    • LOCATION: o nome da região em que você criou o keyring.
    • KEY_RING: o nome do keyring;
    • WORKSTATIONS_MANAGEMENT_SERVICE_ACCOUNT: a conta de serviço de gerenciamento de estações de trabalho obtida na etapa acima.
    • KMS_PROJECT_ID: o ID do projeto, uma string exclusiva usada para diferenciar seu projeto de chave do Cloud KMS de todos os outros no Google Cloud.

    Para informações sobre todas as flags e valores possíveis, execute o comando com a flag --help.

  4. Opcional:se você ainda não criou um cluster de estação de trabalho, crie um usando o comando clusters create gcloud da CLI.

    gcloud workstations clusters create \
        WORKSTATIONS_CLUSTER_NAME --region=LOCATION \
        --project=WORKSTATIONS_PROJECT_NUMBER
    

    Substitua:

    • WORKSTATIONS_CLUSTER_NAME: o nome do cluster de estações de trabalho.
    • LOCATION: o nome da região do cluster de estações de trabalho.
    • WORKSTATIONS_PROJECT_NUMBER: o identificador numérico exclusivo gerado automaticamente e incluído como a primeira parte da conta de serviço padrão do Compute Engine do projeto de estações de trabalho
  5. Supondo que você já tenha criado um cluster, crie uma configuração de estação de trabalho com as configurações encryption_key.

    Para criar uma configuração de estação de trabalho com o tipo de máquina e2-standard-2, tempo limite inativo de 3600s e recursos de estação de trabalho criptografados com CMEK, execute o seguinte comando da CLI gcloud:

    gcloud workstations configs create WORKSTATIONS_CONFIG_NAME \
      --cluster=WORKSTATIONS_CLUSTER_NAME \
      --region=LOCATION \
      --machine-type="e2-standard-2" \
      --idle-timeout=3600 \
      --kms-key="projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME" \
      --kms-key-service-account="WORKSTATIONS_PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
      --project=WORKSTATIONS_PROJECT_NUMBER
    

    Substitua:

    • WORKSTATIONS_CONFIG_NAME: o nome da configuração da estação de trabalho.
    • WORKSTATIONS_CLUSTER_NAME: o nome do cluster de estações de trabalho.
    • LOCATION: o nome da região do cluster.
    • KMS_PROJECT_ID: ID do projeto, uma string exclusiva usada para diferenciar seu projeto de todos os outros no Google Cloud.
    • KEY_RING: o nome do keyring;
    • KEY_NAME: o nome da chave;
    • WORKSTATIONS_PROJECT_NUMBER: o identificador numérico exclusivo gerado automaticamente e incluído como a primeira parte da conta de serviço padrão do Compute Engine do projeto de estações de trabalho

    Depois de criar uma configuração de estação de trabalho, o Cloud KMS criptografa os discos persistentes no projeto com a chave do Cloud KMS especificada.

Alternar chaves de criptografia gerenciadas pelo cliente

Quando você concede à conta de serviço de gerenciamento de estações de trabalho a função de leitor do Cloud KMS (roles/cloudkms.viewer) na chave CMEK, o serviço de estação de trabalho pode detectar a rotação de chaves e criptografar novamente seu disco principal usando a nova versão da chave primária.

A criptografia novamente ocorre depois que você interrompe a estação de trabalho. Sempre que você interrompe uma estação de trabalho criptografada, o serviço da estação de trabalho verifica se a chave foi alternada. Se a chave tiver sido alterada, o serviço da estação de trabalho vai criar um snapshot do disco principal da estação de trabalho e excluir o disco. Na próxima vez que você iniciar a estação de trabalho, o serviço vai criar um novo disco usando o snapshot e a nova versão da chave primária.

Cotas do Cloud KMS e Cloud Workstations

Quando você usa a CMEK nos Cloud Workstations, seus projetos podem consumir cotas de solicitações criptográficas do Cloud KMS. Por exemplo, repositórios criptografados por CMEK podem consumir essas cotas em cada upload ou download. As operações de criptografia e descriptografia que usam chaves CMEK só afetam as cotas do Cloud KMS se você usar chaves de hardware (Cloud HSM) ou externas (Cloud EKM). Para mais informações, consulte Cotas do Cloud KMS.

Chaves externas

Use o Cloud External Key Manager (Cloud EKM) para criptografar dados no Google Cloud usando chaves externas que você gerencia.

Quando você usa uma chave do Cloud EKM, o Google não tem controle sobre a disponibilidade da sua chave gerenciada externamente. Se a chave ficar indisponível, não será possível iniciar a estação de trabalho.

Para mais considerações ao usar chaves externas, consulte Gerenciador de chaves externo do Cloud.

A seguir