Esta página descreve como as chaves de criptografia gerenciadas pelo cliente (CMEKs) 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
Com o recurso CMEK, você pode usar suas próprias chaves criptográficas para dados em repouso no Datastream. Depois de adicionar a CMEK, sempre que uma chamada de API for feita, o Datastream vai usar sua chave para acessar os dados.
O Datastream usa chaves de criptografia de dados (DEK, na sigla em inglês) e chaves de criptografia de chaves (KEK, na sigla em inglês) gerenciadas pelo Google para criptografar dados. Há dois níveis de criptografia:
- A DEK criptografa os dados.
- 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, você pode 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 são compatíveis com os fluxos do Datastream ativados para CMEK?
O CMEK está disponível 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 acesso à chave a ela. 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). Não é necessário ter permissões especiais na conta de usuário quando o Datastream cria 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. Coloque os novos streams na mesma região da CMEK associada a eles. É possível criar um projeto para chaves e streams ou projetos diferentes para cada um.
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 da chave), ele vai mudar o estado do fluxo para FAILED
, e uma mensagem de erro associada vai aparecer. Depois de resolver os problemas associados à mensagem de erro para que a chave fique acessível novamente, o Datastream retoma o stream automaticamente.
Gerenciadores de chaves externas
É possível usar chaves armazenadas em gerenciadores de chaves externas, como Fortanix, Ionic ou Thales, como 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ê precise destruir permanentemente os dados criptografados com a CMEK. Para isso, destrua a versão da CMEK. Não é possível destruir o keyring ou a chave, mas você pode destruir versões da chave.
Restrições
As seguintes restrições se aplicam ao uso de CMEKs:
Não é possível atualizar a CMEK em uma transmissão em execução.
Embora seja possível usar a CMEK para criptografar linhas do banco de dados de origem, não é possível usar essas chaves para criptografar metadados do fluxo, como o ID do fluxo, 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ê entendeu 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 o CMEK.
Antes de começar
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Instalar e inicializar o SDK do Cloud.
- Verifique se você tem o papel Administrador do Datastream atribuído à sua conta de usuário.
-
Enable the Cloud Key Management Service API.
- Ative a API Datastream.
Fluxo de trabalho para criar um stream no Datastream com CMEK
- Somente usuários da gcloud e da API:verifique se você tem uma conta de serviço para cada projeto que exige CMEK. Caso contrário, confira como criar uma conta de serviço.
- Crie um keyring e uma chave e defina o local de cada chave. O local é a região Google Cloud .
- Somente usuários da gcloud e da API: conceda o acesso de chave à conta de serviço.
- Copie ou anote o ID da chave (
KMS_KEY_ID
) e o local da chave e o ID (KMS_KEYRING_ID
) do keyring. Você precisa dessas informações para conceder o acesso de chave à conta de serviço. - Acesse um projeto e crie um stream no Datastream com as seguintes opções:
- No mesmo local da CMEK
- A configuração do CMEK
- O ID da CMEK
Sua transmissão no Datastream agora está ativada com o CMEK.
Criar 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 contas de serviço, e para visualizar ou alterar a política do Datastream em uma 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ê estiver usando
o Console, o Datastream vai 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 em Conceder o acesso da 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. Uma chave de região global ou de várias regiões não 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
- No console do Google Cloud, acesse a página Chaves criptográficas.
- Clique em Criar keyring.
- Adicione um nome do keyring. Anote esse nome porque você precisará dele para conceder o acesso de chave à conta de serviço.
- Adicione um local de keyring.
- Clique em Criar. A página Criar chave é aberta.
- Adicione um nome de chave.
- Selecione uma Finalidade (simétrica ou assimétrica).
- Selecione um Período de rotação e A partir da data.
- Clique em Criar.
- Na tabela Chaves, clique nos três pontos na última coluna e
selecione Copiar ID do recurso. Se preferir, anote o ID. Esse é o
KMS_KEY_ID
. Você precisa doKMS_KEY_ID
para conceder o acesso de chave à conta de serviço.
gcloud
- Crie um novo keyring.
Anote esse nome porque você precisa dele para conceder o acesso de chave à conta de serviço.gcloud kms keyrings create KMS_KEYRING_ID \ --location=GCP_REGION
- Crie uma chave no keyring.
Anote esse nome porque você precisa dele para conceder o acesso de chave à conta de serviço.gcloud kms keys create KMS_KEY_ID \ --location=GCP_REGION \ --keyring=KMS_KEYRING_ID \ --purpose=encryption
Conceder o acesso à chave à conta de serviço
Você só precisa executar este 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
Ao criar um stream no Datastream, você pode usar a CMEK para gerenciar a criptografia dos seus dados.
A seguir
- Para saber como desativar uma versão de chave, consulte Desativar uma versão de chave ativada.
- Para saber como reativar uma versão de chave, consulte Ativar uma versão de chave desativada.