Criptografar recursos da estação de trabalho usando a CMEK

Por padrão, o Cloud Workstations usa uma chave de propriedade e gerenciada do Google para criptografar recursos de estações de trabalho, como VMs e discos permanentes quando os dados estão em repouso. Se você tiver requisitos regulatórios ou de conformidade específicos relacionados às chaves que protegem seus dados, será possível usar chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês) usando o Cloud Key Management Service (Cloud KMS).

Para mais informações sobre a CMEK em geral, incluindo quando e por que ativá-la, 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 das estações de trabalho. No entanto, como prática recomendada, sugerimos usar dois projetos para a 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. Ativar 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

É possível conceder papéis de administrador do Cloud KMS e do Cloud Workstations à mesma pessoa, mas 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 separadas e faça com que elas se coordenem, em vez de solicitar que o Cloud KMS também seja seu administrador do Cloud Workstations. Para mais informações, consulte as práticas recomendadas de segurança e como usar o IAM com segurança.

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

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

Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Também é possível receber as permissões necessárias com papéis personalizados ou outros papéis predefinidos.

Criar keyring e chave de criptografia

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

  1. Crie ou selecione um keyring.

    É possível compartilhar keyrings entre serviços, mas sugerimos que você use uma chave diferente para cada recurso protegido. Consulte a separação de tarefas.

  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. Consiga o ID de 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 ou verifique se você tem um papel de IAM de administrador do Cloud Workstations no projeto para que seja possível 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 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 criptografador/descriptografador do CryptoKey do Cloud KMS e o papel 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 de CryptoKey do Cloud KMS.

  6. Clique em Adicionar outro papel.

  7. No menu suspenso Selecionar papel, escolha Leitor 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 de 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 Expandir mais e selecione Usar chave de criptografia gerenciada pelo cliente (CMEK).

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

      Se a chave que você criou não estiver listada, clique em Inserir chave manualmente para selecionar a chave pelo ID do recurso e insira o ID que você anotou 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. Criar, iniciar e iniciar a configuração da estação de trabalho para criptografar os discos permanentes no projeto com a chave especificada do Cloud KMS.

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 KMS e ao agente de serviço do Compute Engine para seu projeto de estações de trabalho o papel criptografador/descriptografador do Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) na chave CMEK. Isso permite que o serviço do Compute Engine crie recursos criptografados no 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 que é incluído como a primeira parte da conta de serviço padrão do Compute Engine do projeto das 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 sinalizações e valores possíveis, execute o comando com a sinalização --help.

  2. Para recuperar a conta de serviço de gerenciamento de estações de trabalho do seu projeto, 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 seu projeto o papel de Leitor do Cloud KMS (roles/cloudkms.viewer) na chave CMEK. Isso permite que o serviço de estações de trabalho detecte a rotação de chaves e recriptografe 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 conseguida 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 sinalizações e valores possíveis, execute o comando com a sinalização --help.

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

    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 da estação de trabalho.
    • WORKSTATIONS_PROJECT_NUMBER: o identificador numérico exclusivo gerado automaticamente que é incluído como a primeira parte da conta de serviço padrão do Compute Engine do projeto das estações de trabalho.
  5. Supondo que você já tenha criado um cluster, crie uma configuração de estação de trabalho com encryption_key.

    Para criar uma configuração de estação de trabalho com o tipo de máquina e2-standard-2, o tempo limite de inatividade de 3600s e os recursos de estação de trabalho criptografados por 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 da estação 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 que é incluído como a primeira parte da conta de serviço padrão do Compute Engine do projeto das estações de trabalho.

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

Cotas do Cloud KMS e Cloud Workstations

Quando você usa CMEK no 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