Criptografar recursos da estação de trabalho usando CMEK

Por padrão, o Cloud Workstations criptografa o conteúdo do cliente em repouso. O Cloud Workstations processa a criptografia para você sem que você precise fazer nada. Essa opção é chamada de Criptografia padrão do Google.

Se você quiser controlar suas chaves de criptografia, use chaves de criptografia gerenciadas pelo cliente (CMEKs) no Cloud KMS com serviços integrados a CMEKs, incluindo as estações de trabalho do Cloud. O uso de chaves do Cloud KMS permite controlar o nível de proteção, o local, a programação de rotação, as permissões de uso e acesso e os limites criptográficos. O uso do Cloud KMS também permite a você monitorar o uso de chaves, visualizar registros de auditoria e controlar ciclos de vida importantes. Em vez de o Google ser proprietário e gerente de chaves de criptografia de chaves (KEKs) simétricas que protegem seus dados, você controla e gerencia essas chaves no Cloud KMS.

Depois de configurar os recursos com CMEKs, a experiência de acesso aos recursos do Cloud Workstations é semelhante à criptografia padrão do Google. Para mais informações sobre suas opções de criptografia, consulte Chaves de criptografia gerenciadas pelo cliente (CMEK).

Por padrão, o Cloud Workstations usa um Google-owned and Google-managed encryption key para criptografar recursos de estação de trabalho, como VMs e discos permanentes, 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, na sigla em inglês) com o Cloud Key Management Service (Cloud KMS).

Para mais informações gerais sobre 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 os seguintes projetosGoogle Cloud:

    • Um projeto de chaves 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. Para mais informações, consulte Verificar o status de faturamento dos seus projetos.

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

  4. Instale e inicialize a CLI gcloud:

    1. Para instalar a CLI gcloud, consulte Instalar a CLI gcloud e siga as instruções para seu sistema operacional.

    2. Para inicializar a CLI gcloud, consulte Como inicializar a CLI gcloud ou execute o seguinte comando:

      gcloud init
      

Funções exigidas

Embora seja possível conceder os papéis de administrador do Cloud KMS e do Cloud Workstations para a mesma pessoa, recomendamos que você siga o princípio do menor privilégio 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 administrador do 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 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.

    O keyring precisa estar localizado na mesma região que o cluster da estação de trabalho. O Cloud Workstations não oferece suporte a locais do Cloud KMS multirregionais ou globais.

    É 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.

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

Conceder acesso à sua chave de criptografia

As Estações de trabalho do Cloud usam as seguintes contas de serviço para gerenciar a criptografia dos seus recursos:

  1. O agente de serviço do Cloud Workstations: o Cloud Workstations usa essa conta para detectar quando a chave é girada.

  2. A conta de serviço de chave do Cloud KMS: forneça uma conta de serviço que as estações de trabalho do Cloud possam usar para acessar sua chave e criptografar e descriptografar recursos.

Conceder a função de leitor do Cloud KMS ao agente de serviço das estações de trabalho do Cloud

O agente de serviço do Cloud Workstations permite que o Cloud Workstations execute tarefas de serviço no seu projeto. Quando você ativou o serviço de estações de trabalho do Cloud no seu projeto de estações de trabalho, esse agente de serviço foi criado automaticamente. Para que o CMEK funcione corretamente, é necessário conceder ao agente de serviço do Cloud Workstations para seu projeto de estações de trabalho o papel de leitor do Cloud KMS (roles/cloudkms.viewer) na chave do Cloud KMS para que as estações de trabalho do Cloud possam detectar a rotação de chaves.

  1. Para extrair o agente de serviço das estações de trabalho do Cloud para 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 seu projeto de estação de trabalho.

    O agente de serviço do Cloud Workstations usa o seguinte formato:
    service-$WORKSTATIONS_PROJECT_NUMBER@gcp-sa-workstations.iam.gserviceaccount.com.

  2. Conceda ao agente de serviço das estações de trabalho do Cloud a função de leitor do Cloud KMS (roles/cloudkms.viewer) na chave CMEK. Isso permite que as estações de trabalho do Cloud detectem a rotação de chaves e recriptografem recursos conforme necessário no seu projeto.

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

    Substitua:

    • KEY_NAME: o nome da chave;
    • KEY_RING: o nome do keyring;
    • LOCATION: o local que contém o keyring.
    • KMS_PROJECT_ID: o ID do projeto que contém a chave.
    • CLOUD_WORKSTATIONS_SERVICE_AGENT: o agente de serviço de estações de trabalho do Cloud foi obtido na etapa anterior.

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

Configurar uma conta de serviço de chave do Cloud KMS

O Cloud Workstations usa uma conta de serviço de sua escolha para realizar criptografia e descriptografia com a chave gerenciada pelo cliente. Chamamos essa conta de "conta de serviço da chave do Cloud KMS". Você pode criar uma nova conta de serviço ou usar uma existente. Os requisitos para essa conta são:

  • O administrador do Cloud Workstations precisa ter permissão iam.serviceAccounts.actAs nessa conta de serviço.
  • A conta de serviço escolhida precisa ter a função Criptografador/Descriptografador do Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) na chave do Cloud KMS.
  1. Se você quiser criar uma nova conta de serviço, use o seguinte comando:

    gcloud iam service-accounts create \
      KMS_KEY_SERVICE_ACCOUNT_NAME \
      --display-name="Service account for Cloud Workstations CMEK" \
      --project=WORKSTATIONS_PROJECT_ID
    

    Substitua:

    • KMS_KEY_SERVICE_ACCOUNT_NAME: o nome da conta de serviço.
    • WORKSTATIONS_PROJECT_ID: o ID do projeto da estação de trabalho.

    A conta de serviço que você criou tem um e-mail no seguinte formato: KMS_KEY_SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com.

    Salve o e-mail da conta de serviço para uma etapa posterior.

  2. Para conceder o papel de usuário da conta de serviço do IAM (roles/iam.serviceAccountUser) Administrador do Cloud Workstations na conta de serviço da chave do Cloud KMS, execute o seguinte comando:

    gcloud iam service-accounts add-iam-policy-binding \
        KMS_KEY_SERVICE_ACCOUNT_EMAIL \
        --member="user:CLOUD_WORKSTATIONS_ADMIN_EMAIL" \
        --project=WORKSTATIONS_PROJECT_ID \
        --role=roles/iam.serviceAccountUser
    

    Substitua:

    • KMS_KEY_SERVICE_ACCOUNT_EMAIL: o e-mail da conta de serviço de chaves do Cloud KMS.
    • CLOUD_WORKSTATIONS_ADMIN_EMAIL: o e-mail do administrador do Cloud Workstations.
    • WORKSTATIONS_PROJECT_ID: o ID do projeto da estação de trabalho.
  3. Para conceder o papel de criptografador/descriptografador do Cloud KMS CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) à conta de serviço do Cloud KMS da chave do Cloud KMS, execute o seguinte comando:

      gcloud kms keys add-iam-policy-binding \
        KEY_NAME \
        --keyring KEY_RING \
        --location LOCATION \
        --project KMS_PROJECT_ID \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
        --member serviceAccount:KMS_KEY_SERVICE_ACCOUNT_EMAIL\
    

    Substitua:

    • KEY_NAME: o nome da chave;
    • KEY_RING: o nome do keyring;
    • LOCATION: o local que contém o keyring.
    • KMS_PROJECT_ID: o ID do projeto que contém a chave.
    • KMS_KEY_SERVICE_ACCOUNT_EMAIL: o e-mail da conta de serviço de chaves do Cloud KMS.

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

Verificar clusters de estações de trabalho

Se você não tiver clusters de estações de trabalho disponíveis no console do Google Cloud, peça ao administrador do Cloud Workstations para criar um cluster de estações de trabalho para você na mesma região do chaveiro do Cloud KMS 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

  1. 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_ID
    

    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_ID: o ID do projeto da estação de trabalho.
  2. 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="KMS_KEY_SERVICE_ACCOUNT_EMAIL" \
      --project=WORKSTATIONS_PROJECT_ID
    

    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: o ID do projeto, uma string exclusiva usada para diferenciar seu projeto de todos os outros em Google Cloud.
    • KEY_RING: o nome do keyring;
    • KEY_NAME: o nome da chave;
    • KMS_KEY_SERVICE_ACCOUNT_EMAIL: o e-mail da conta de serviço de chaves do Cloud KMS.
    • WORKSTATIONS_PROJECT_ID: o ID do projeto da estação 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 especificada do Cloud KMS.

Alternar chaves de criptografia gerenciadas pelo cliente

Quando você concedeu a função de leitor do Cloud KMS do agente de serviço do Cloud Workstations (roles/cloudkms.viewer) na chave CMEK, o serviço de estação de trabalho pode detectar a rotação de chaves e recriptografar seu disco inicial usando a nova versão da chave principal.

A criptografia novamente ocorre depois que você interrompe a estação de trabalho. Toda vez que você interrompe uma estação de trabalho criptografada, o serviço da estação de trabalho verifica se a chave foi girando. Se a chave tiver sido girada, 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 da estação de trabalho vai criar um novo disco com base no snapshot, usando a nova versão da chave primária.

Cotas do Cloud KMS e estações de trabalho do Cloud

Quando você usa a CMEK nas estações de trabalho do Cloud, 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 em 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