Use chaves de encriptação geridas pelo cliente (CMEK)

Por predefinição, o Datastream encripta o conteúdo do cliente em repouso. A stream de dados processa a encriptação por si sem ações adicionais da sua parte. Esta opção chama-se Encriptação predefinida da Google.

Se quiser controlar as suas chaves de encriptação, pode usar chaves de encriptação geridas pelo cliente (CMEKs) no Cloud KMS com serviços integrados com CMEKs, incluindo o Datastream. A utilização de chaves do Cloud KMS dá-lhe controlo sobre o respetivo nível de proteção, localização, programação de rotação, utilização, autorizações de acesso e limites criptográficos. A utilização do Cloud KMS também permite monitorizar a utilização das chaves, ver registos de auditoria e controlar os ciclos de vida das chaves. Em vez de a Google possuir e gerir as chaves de encriptação de chaves (KEKs) simétricas que protegem os seus dados, controla e gere estas chaves no Cloud KMS.

Depois de configurar os seus recursos com CMEKs, a experiência de acesso aos recursos do fluxo de dados é semelhante à utilização da encriptação predefinida da Google. Para mais informações acerca das suas opções de encriptação, consulte o artigo Chaves de encriptação geridas pelo cliente (CMEK).

Esta página descreve como as chaves de encriptação geridas pelo cliente (CMEK) funcionam com o Datastream.

O CMEK é adequado para si?

As CMEK destinam-se a organizações que têm dados confidenciais ou regulamentados que exigem que geram as respetivas chaves de encriptação.

Encriptação gerida pela Google versus encriptação gerida pelo cliente

A funcionalidade CMEK permite-lhe usar as suas próprias chaves criptográficas para dados em repouso no Datastream. Depois de adicionar a CMEK, sempre que é feita uma chamada à API, o Datastream usa a sua chave para aceder aos dados.

O fluxo de dados usa chaves de encriptação de dados (DEK) e chaves de encriptação de chaves (KEK) geridas pela Google para encriptar o fluxo de dados. Existem dois níveis de encriptação:

  1. A DEK encripta os dados.
  2. A KEK encripta a DEK.

O fluxo de dados armazena a DEK encriptada juntamente com os dados encriptados, e a Google gere a KEK da Google. Com a CMEK, cria uma chave que envolve a KEK da Google. As CMEK permitem-lhe criar, revogar e eliminar a KEK.

As CMEK, incluindo software, hardware e chaves externas, são todas geridas através da API Cloud Key Management Service (KMS).

Que localizações suportam streams do Datastream com a CMEK ativada?

A CMEK está disponível em todas as localizações do Datastream.

Compreenda as contas de serviço

Quando as suas streams do Datastream têm a CMEK ativada, tem de usar uma conta de serviço para pedir acesso à chave do Cloud Key Management Service.

Para usar uma CMEK num projeto, tem de ter uma conta de serviço e conceder o acesso à chave à conta de serviço. A conta de serviço tem de existir no projeto. A conta de serviço é visível em todas as regiões.

Se usar a Console para criar uma stream, o Datastream cria a conta de serviço automaticamente quando escolher a opção Chave gerida pelo cliente pela primeira vez (se ainda não existir uma conta de serviço). Não precisa de ter autorizações especiais na sua conta de utilizador quando o fluxo de dados cria automaticamente a conta de serviço.

Compreenda as chaves

No Cloud Key Management Service, tem de criar um conjunto de chaves com uma chave criptográfica, definida com uma localização. Quando cria uma nova stream no Datastream, seleciona esta chave para encriptar a stream.

Tem de saber o ID da chave e a região da chave quando cria novas streams que usam CMEK. Tem de colocar as novas streams na mesma região que a CMEK associada às streams. Pode criar um projeto para ambas as chaves e streams ou projetos diferentes para cada uma.

As CMEK usam o seguinte formato:

projects/[CMEK_ENABLED_PROJECT]/locations/[REGION]/keyRings/[RING_NAME]/cryptoKeys/[KEYNAME]

Se o Datastream não conseguir aceder à chave (por exemplo, se desativar a versão da chave), o Datastream altera o estado da stream para FAILED e é apresentada uma mensagem de erro associada. Depois de resolver quaisquer problemas associados à mensagem de erro para que a chave volte a ficar acessível, a stream de dados retoma automaticamente a stream.

Gestores de chaves externos

Pode usar chaves armazenadas em gestores de chaves externos, como Fortanix, Ionic ou Thales, como CMEK. Para saber como usar chaves externas com o Cloud Key Management Service, consulte o Cloud External Key Manager.

Como torna os dados encriptados com CMEK inacessíveis permanentemente?

Pode haver situações em que queira destruir permanentemente dados encriptados com CMEK. Para o fazer, destrói a versão CMEK. Não pode destruir o conjunto de chaves nem a chave, mas pode destruir as versões da chave.

Restrições

Aplicam-se as seguintes restrições quando usa as CMEK:

  • Não pode atualizar a CMEK numa stream em execução.

  • Embora possa usar a CMEK para encriptar linhas da base de dados de origem, não pode usar estas chaves para encriptar metadados de streams, como o ID da stream, o endereço IP da base de dados de origem ou os nomes das tabelas da base de dados de origem.

Use CMEK

Agora que compreende a CMEK, pode configurar uma conta de serviço e chaves para a CMEK. Além disso, vai saber como configurar a stream de dados para usar as CMEK.

Antes de começar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Instale e inicialize o SDK do Google Cloud.
  7. Certifique-se de que tem a função de administrador do fluxo de dados atribuída à sua conta de utilizador.

    Aceda à página IAM

  8. Enable the Cloud Key Management Service API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  9. Ative a API Datastream.

    Ative a API

Fluxo de trabalho para criar uma stream no Datastream com CMEK

  1. Apenas para utilizadores da API e da gcloud: certifique-se de que tem uma conta de serviço para cada projeto que requer a CMEK. Se não tiver uma, veja como criar uma conta de serviço.
  2. Crie um conjunto de chaves e uma chave e defina a localização de cada chave. A localização é a região Google Cloud .
  3. Apenas para utilizadores da API e do gcloud: conceda o acesso da chave à conta de serviço.
  4. Copie ou anote o ID (KMS_KEY_ID) e a localização da chave, bem como o ID (KMS_KEYRING_ID) do conjunto de chaves. Precisa destas informações quando concede o acesso da chave à conta de serviço.
  5. Aceda a um projeto e crie uma stream no Datastream com as seguintes opções:
    1. A mesma localização que a CMEK
    2. A configuração de CMEK
    3. O ID da CMEK

A sua stream no Datastream está agora ativada com a CMEK.

Criar uma conta de serviço

Tem de criar uma conta de serviço para cada projeto que exija CMEK.

Para permitir que um utilizador faça a gestão de contas de serviço, conceda uma das seguintes funções:

  • Utilizador da conta de serviço (roles/iam.serviceAccountUser): inclui autorizações para listar contas de serviço, obter detalhes sobre uma conta de serviço e roubar a identidade de uma conta de serviço.
  • Administrador da conta de serviço (roles/iam.serviceAccountAdmin): inclui autorizações para listar contas de serviço e obter detalhes sobre uma conta de serviço. Também inclui autorizações para criar, atualizar e eliminar contas de serviço, bem como para ver ou alterar a política de streams de dados numa conta de serviço.

Só pode usar comandos gcloud para criar o tipo de conta de serviço de que precisa para a CMEK. Se estiver a usar a Console, o fluxo de dados cria automaticamente esta conta de serviço para si.

Para criar uma conta de serviço com o gcloud, execute o seguinte comando:

gcloud beta services identity create \
--service=datastream.googleapis.com \
--project=PROJECT_ID

O comando anterior devolve um nome de conta de serviço. Usa este nome da conta de serviço durante o procedimento em Conceda o acesso da chave à conta de serviço.

Crie uma chave

Pode criar a chave no mesmo Google Cloud projeto que a stream no Datastream ou num projeto de utilizador separado. A localização do conjunto de chaves do Cloud KMS tem de corresponder à região onde quer criar a stream. Uma chave de região global ou de várias regiões não funciona. Se as regiões não corresponderem, não pode criar a stream.

Para criar uma chave do Cloud KMS:

Consola

  1. Na Google Cloud consola, aceda à página Chaves criptográficas.
  2. Clique em Criar conjunto de chaves.
  3. Adicione um nome do porta-chaves. Tome nota deste nome, pois precisa dele quando concede acesso à chave à conta de serviço.
  4. Adicione uma localização do porta-chaves.
  5. Clique em Criar. É apresentada a página Criar chave.
  6. Adicione um Nome da chave.
  7. Selecione uma Finalidade (simétrica ou assimétrica).
  8. Selecione um Período de rotação e uma Data de início.
  9. Clique em Criar.
  10. Na tabela Chaves, clique nos três pontos na última coluna e selecione Copiar ID do recurso ou anote-o. Este é o KMS_KEY_ID. Precisa do KMS_KEY_ID quando concede acesso à chave à conta de serviço.

gcloud

  1. Crie um novo conjunto de chaves.
    gcloud kms keyrings create KMS_KEYRING_ID \
    --location=GCP_REGION
      
    Anote este nome, pois vai precisar dele quando conceder acesso à chave à conta de serviço.
  2. Crie uma chave no conjunto de chaves.
    gcloud kms keys create KMS_KEY_ID \
    --location=GCP_REGION \
    --keyring=KMS_KEYRING_ID \
    --purpose=encryption
      
    Anote este nome, pois vai precisar dele quando conceder acesso à chave à conta de serviço.

Conceda à chave acesso à conta de serviço

Só tem de realizar este procedimento se estiver a usar o gcloud ou a API.

Para conceder acesso à conta de serviço, use o seguinte código:

gcloud kms keys add-iam-policy-binding KMS_KEY_ID \
--location=GCP_REGION \
--keyring=KMS_KEYRING_ID \
--member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-datastream.iam.gserviceaccount.com \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter

Crie uma stream no Datastream com CMEK

Como parte da criação de uma stream no Datastream, pode usar a sua CMEK para gerir a encriptação dos seus dados.

O que se segue?