Criptografar recursos da estação de trabalho usando CMEKs

Por padrão, o Cloud Workstations usa uma chave de criptografia gerenciada pelo Google para criptografar recursos da estação de trabalho, como VMs e discos permanentes, quando os dados estão em repouso. Se você tiver requisitos regulamentares ou de compliance específicos relacionados às chaves que protegem seus dados, é possível usar chaves de criptografia gerenciadas pelo cliente (CMEK) usando o Cloud Key Management Service (Cloud KMS).

Para mais informações sobre CMEKs em geral, incluindo quando e por que ativar esse recurso, consulte a documentação do Cloud KMS.

Antes de começar

Criar projetos

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

    • Um projeto de chave contém os 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 de CMEK.

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

  2. Verifique 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 administrador 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 coordenem, em vez de pedir que o Cloud KMS também seja o 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 o administrador do Cloud KMS, peça ao administrador para conceder a você o papel a seguir para que seja possível 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 a ele para conceder a você o seguinte papel para que seja possível 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 como conceder papéis, consulte Gerenciar acesso.

Talvez você também consiga receber as permissões necessárias por meio de 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 a prática recomendada é usar uma chave diferente para cada recurso protegido. Consulte a separação de tarefas.

  2. Crie uma chave de criptografia simétrica.

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

  3. Consiga 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 ou verifique se você tem um papel de IAM de administrador 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 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 de leitor do Cloud KMS:

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

    Acessar o 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 um papel, escolha Leitor do Cloud KMS.

  8. Clique em Save.

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 Mostrar mais e selecione Usar chave de criptografia gerenciada pelo cliente (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 que você criou não estiver listada, clique em Inserir chave manualmente para selecionar a chave por ID de recurso e insira o ID do recurso 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 inicie a configuração da estação de trabalho para criptografar os discos permanentes no 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 de estações de trabalho o papel criptografador/descriptografador do CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) do Cloud KMS na chave CMEK. Isso permite que o serviço do Compute Engine crie recursos criptografados no projeto usando a chave de 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 está 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 sinalizações e os 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 referente ao projeto de estações 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 de CMEK. Isso permite que o serviço da estação de trabalho detecte a rotação de chaves e criptografe novamente 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 recebida 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 os 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 de estações de trabalho.
    • WORKSTATIONS_PROJECT_NUMBER: o identificador numérico exclusivo gerado automaticamente que está 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, 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 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 que está incluído como a primeira parte da conta de serviço padrão do Compute Engine do projeto de estações de trabalho.

    Depois que você cria 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