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 o Cloud Workstations. 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 da estação de trabalho, como VMs e discos permanentes, quando os dados estão em repouso. Caso você precise atender a requisitos específicos de compliance e conformidade 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 sobre CMEK em geral, incluindo quando e por que ativar, consulte a documentação do Cloud KMS.

Antes de começar

Criar seus projetos

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

    • 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 de chave e o de estações de trabalho, mas, como prática recomendada, sugerimos 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 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 administrador 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 coordene-as, em vez de pedir ao administrador do Cloud KMS para também ser o administrador do Cloud Workstations. Para mais informações, consulte 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 papéis do IAM a seguir:

  • Se você for o administrador do Cloud KMS, peça ao administrador para conceder 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 keyring e chave de criptografia

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

  1. Crie ou selecione um keyring.

    O keyring precisa estar na mesma região que o cluster da estação de trabalho. O Cloud Workstations não é compatível com locais do Cloud KMS multirregionais ou globais.

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

  2. Crie uma chave de criptografia simétrica.

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

Conceder acesso à sua chave de criptografia

Cloud Workstations 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 sua chave é substituída.

  2. A conta de serviço da chave do Cloud KMS: você vai fornecer uma conta de serviço que o Cloud Workstations pode usar para acessar sua chave para criptografar e descriptografar recursos.

Conceder o papel de leitor do Cloud KMS ao agente de serviço do Cloud Workstations

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 Cloud Workstations no seu projeto de estações de trabalho, esse agente de serviço foi criado automaticamente. Para que a CMEK funcione corretamente, é necessário conceder ao agente de serviço do Cloud Workstations para seu projeto de estações de trabalho a função de leitor do Cloud KMS (roles/cloudkms.viewer) na chave do Cloud KMS. Assim, o Cloud Workstations pode detectar a rotação de chaves.

  1. Para recuperar o agente de serviço das estações de trabalho do Cloud 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 da sua 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 do Cloud Workstations o papel de leitor do Cloud KMS (roles/cloudkms.viewer) na chave CMEK. Isso permite que o Cloud Workstations detecte a rotação de chaves e recriptografe os 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 sua chave.
    • CLOUD_WORKSTATIONS_SERVICE_AGENT: o agente de serviço do Cloud Workstations 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 à sua escolha para realizar criptografia e descriptografia com sua chave gerenciada pelo cliente. Chamamos essa conta de conta de serviço da chave do Cloud KMS. Você pode criar uma conta de serviço ou usar uma já existente. Os requisitos para essa conta são:

  • O administrador do Cloud Workstations precisa ter a permissão iam.serviceAccounts.actAs nessa conta de serviço.
  • A conta de serviço escolhida precisa ter o papel de criptografador/descriptografador de CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) do Cloud KMS na sua chave do Cloud KMS.
  1. Se você quiser criar uma 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 criada 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 administrador do Cloud Workstations do IAM usuário da conta de serviço (roles/iam.serviceAccountUser) 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 da chave 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 à conta de serviço da chave do Cloud KMS o papel criptografador/descriptografador de CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) na sua 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 sua chave.
    • KMS_KEY_SERVICE_ACCOUNT_EMAIL: o e-mail da conta de serviço da chave 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ção de trabalho disponíveis no consoleGoogle Cloud , peça ao administrador do Cloud Workstations para criar um cluster de estação de trabalho para você na mesma região do keyring do Cloud KMS ou verifique se você tem um papel do IAM de administrador do Cloud Workstations no projeto para poder 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 da CLI gcloud.

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

    Substitua:

    • WORKSTATIONS_CLUSTER_NAME: o nome do cluster da estação de trabalho.
    • LOCATION: o nome da região do cluster de estação 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 de inatividade 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 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 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 da chave 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 seu projeto com a chave especificada do Cloud KMS.

Alternar chaves de criptografia gerenciadas pelo cliente

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

A reencriptação ocorre depois que você para a estação de trabalho. Toda vez que você para uma estação de trabalho criptografada, o serviço verifica se a chave foi substituída. Se a chave tiver sido substituída, o serviço de estação de trabalho vai criar um snapshot do disco inicial da estação e excluir o disco. Na próxima vez que você iniciar a estação de trabalho, o serviço dela vai criar um novo disco com base no snapshot, usando a nova versão da chave primária.

Cotas do Cloud KMS e do Cloud Workstations

Quando você usa a 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 externas do Cloud.

A seguir