Usar chaves de criptografia gerenciadas pelo cliente (CMEK)

Visão geral

Nesta página, descrevemos como as chaves de criptografia gerenciadas pelo cliente (CMEK) funcionam com o Datastream.

Uma CMEK é ideal para você?

A CMEK é destinada a organizações com dados sensíveis ou regulamentados que exigem o gerenciamento das próprias chaves de criptografia.

Criptografia gerenciada pelo Google e criptografia gerenciada pelo cliente

O recurso CMEK permite que você use suas próprias chaves criptográficas para dados em repouso no Datastream. Depois de adicionar a CMEK, sempre que uma chamada de API é feita, o Datastream usa sua chave para acessar os dados.

O Datastream usa chaves de criptografia de dados (DEK) gerenciadas pelo Google e chaves de criptografia de chaves (KEK) para criptografar o Datastream. Há dois níveis de criptografia:

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

O Datastream armazena a DEK criptografada com os dados criptografados, e o Google gerencia a KEK. Com o CMEK, você cria uma chave que encapsula a KEK do Google. Com a CMEK, é possível criar, revogar e excluir a KEK.

A CMEK, incluindo chaves de software, hardware e externas, é gerenciada pela API Cloud Key Management Service (KMS).

Quais locais oferecem suporte a streams do Datastream ativados para CMEK?

As CMEKs estão disponíveis em todos os locais do Datastream.

Entender as contas de serviço

Quando a CMEK estiver ativada nos fluxos do Datastream, você precisará usar uma conta de serviço para solicitar acesso à chave do Cloud Key Management Service.

Para usar uma CMEK em um projeto, você precisa ter uma conta de serviço e conceder a ela o acesso de chave. A conta de serviço precisa existir dentro do projeto. A conta de serviço fica visível em todas as regiões.

Se você usar o Console para criar um fluxo, o Datastream vai criar a conta de serviço automaticamente quando você escolher a opção Chave gerenciada pelo cliente (se uma conta de serviço ainda não existir). Você não precisa ter permissões especiais na conta de usuário quando o Datastream criar a conta de serviço automaticamente.

Entender as chaves

No Cloud Key Management Service, é preciso criar um keyring com uma chave criptográfica definida com um local. Ao criar um novo fluxo no Datastream, selecione essa chave para criptografar o fluxo.

É preciso saber qual é o ID e a região da chave ao criar novos streams que usam CMEK. Você precisa colocar os novos streams na mesma região que a CMEK associada aos streams. É possível criar um projeto para as chaves e os streams ou projetos diferentes para cada uma delas.

A CMEK usa o seguinte formato:

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

Se o Datastream não conseguir acessar a chave (por exemplo, se você desativar a versão dela), o Datastream mudará o estado do stream para FAILED, e uma mensagem de erro associada será exibida. Depois de resolver os problemas associados à mensagem de erro para que a chave fique acessível novamente, o Datastream retoma o fluxo automaticamente.

Gerenciadores de chaves externas

É possível usar chaves armazenadas em gerenciadores de chaves externos, como Fortanix, Ionic ou Thales, como sua CMEK. Para saber como usar chaves externas com o Cloud Key Management Service, consulte Gerenciador de chaves externo do Cloud.

Como tornar os dados criptografados com CMEK permanentemente inacessíveis?

Pode haver casos em que você queira destruir permanentemente os dados criptografados com CMEK. Para isso, destrua a versão da CMEK. Não é possível destruir o keyring ou a chave, mas sim as versões da chave.

Restrições

As seguintes restrições se aplicam ao uso da CMEK:

  • Não é possível atualizar a CMEK em um stream em execução.

  • Embora a CMEK possa ser usada para criptografar linhas do banco de dados de origem, não é possível usar essas chaves para criptografar metadados de stream, como o ID do stream, o endereço IP do banco de dados de origem, os nomes das tabelas do banco de dados de origem e assim por diante.

Usar CMEK

Agora que você conhece a CMEK, está tudo pronto para configurar uma conta de serviço e chaves para a CMEK. Além disso, você vai aprender a configurar o Datastream para usar a CMEK. Para saber mais sobre a CMEK, consulte Visão geral.

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.

    Go to project selector

  3. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

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

    Go to project selector

  5. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  6. Instalar e inicializar o SDK do Cloud.
  7. Verifique se você tem o papel Administrador do Datastream atribuído à sua conta de usuário.

    Acessar a página IAM

  8. Enable the Cloud Key Management Service API.

    Enable the API

  9. Ative a API Datastream.

    Ativar a API

Fluxo de trabalho para criar um stream no Datastream com CMEK

  1. Somente usuários da gcloud e da API:verifique se você tem uma conta de serviço para cada projeto que exige CMEK. Caso não tenha, veja como criar uma conta de serviço.
  2. Crie um keyring e uma chave e defina o local de cada chave. O local é a região do Google Cloud.
  3. Somente usuários da gcloud e da API: conceda o acesso de chave à conta de serviço.
  4. Copie ou anote o ID da chave (KMS_KEY_ID) e o local da chave, além do ID (KMS_KEYRING_ID) do keyring. Você precisa dessas informações ao conceder o acesso de chave à conta de serviço.
  5. Acesse um projeto e crie um fluxo no Datastream com as seguintes opções:
    1. O mesmo local da CMEK
    2. Configuração da CMEK
    3. O ID da CMEK

Sua transmissão no Datastream agora está ativada com o CMEK.

Crie uma conta de serviço

Você precisa criar uma conta de serviço para cada projeto que exige CMEK.

Para permitir que um usuário gerencie contas de serviço, conceda um dos seguintes papéis:

  • Usuário da conta de serviço (roles/iam.serviceAccountUser): inclui permissões para listar contas de serviço, acessar detalhes sobre uma conta de serviço e representar uma conta de serviço.
  • Administrador da conta de serviço (roles/iam.serviceAccountAdmin): inclui permissões para listar contas de serviço e acessar detalhes sobre uma conta de serviço. Também inclui permissões para criar, atualizar e excluir serviços contas e para visualizar ou alterar a política do Datastream em um conta de serviço.

No momento, só é possível usar comandos gcloud para criar o tipo de conta de serviço necessário para CMEK. Se você usa o Datastream criará essa conta de serviço automaticamente.

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

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

O comando anterior retorna um nome de conta de serviço. Você usa esse nome de conta de serviço durante o procedimento Conceda o acesso à chave à conta de serviço.

Crie uma chave

É possível criar a chave no mesmo projeto do Google Cloud que o fluxo no Datastream ou em um projeto de usuário separado. O local do keyring do Cloud KMS precisa corresponder à região em que você quer criar o stream. Um uma chave de região global ou de várias regiões não vai funcionar. Se as regiões não forem correspondentes, não será possível criar o fluxo.

Para criar uma chave do Cloud KMS:

Console

  1. No console do Google Cloud, acesse a página Chaves criptográficas.
  2. Clique em Criar keyring.
  3. Adicione um nome do keyring. Anote esse nome porque você precisará dele para conceder o acesso de chave à conta de serviço.
  4. Adicione um local de keyring.
  5. Clique em Criar. A página Criar chave é aberta.
  6. Adicione um nome de chave.
  7. Selecione uma Finalidade (simétrica ou assimétrica).
  8. Selecione um Período de rotação e A partir da data.
  9. Clique em Criar.
  10. Na tabela Chaves, clique nos três pontos na última coluna e selecione Copiar ID do recurso. Se preferir, anote o ID. Esta é a KMS_KEY_ID: Você precisa do KMS_KEY_ID ao conceder o acesso à chave à conta de serviço.

gcloud

  1. Crie um novo keyring.
    gcloud kms keyrings create KMS_KEYRING_ID \
    --location=GCP_REGION
      
    Anote esse nome porque você precisa dele para conceder o acesso à chave a conta de serviço.
  2. Crie uma chave no keyring.
    gcloud kms keys create KMS_KEY_ID \
    --location=GCP_REGION \
    --keyring=KMS_KEYRING_ID \
    --purpose=encryption
      
    Anote esse nome porque você precisa dele para conceder o acesso à chave a conta de serviço.

Conceda o acesso de chave à conta de serviço

Você só vai precisar realizar esse procedimento se estiver usando 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

Criar um stream no Datastream com CMEK

Como parte da criação de um fluxo no Datastream, é possível usar a CMEK para gerenciar a criptografia dos dados.

A seguir