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
Com o recurso de CMEK, você usa as próprias chaves criptográficas nos dados em repouso no Datastream. Depois de adicionar a CMEK, sempre que uma chamada de API for feita, o Datastream usará sua chave para acessar os dados.
O Datastream usa chaves de criptografia de dados (DEK) e chaves de criptografia de chaves (KEK) gerenciadas pelo Google para criptografar o Datastream. 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 a 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 software, hardware e chaves externas, é gerenciada pela API Cloud Key Management Service (KMS).
Quais locais são compatíveis com streams do Datastream habilitados para CMEK?
A CMEK está disponível em todos os locais do Datastream.
Entender as contas de serviço
Quando os streams do Datastream têm a CMEK ativada, você precisa 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 a ela para a chave. A conta de serviço precisa existir dentro do projeto. Ela 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 pela primeira vez (se uma conta de serviço ainda não existir). Não é necessário ter permissões especiais na sua conta de usuário quando o Datastream cria a conta de serviço automaticamente.
Noções básicas sobre chaves
No Cloud Key Management Service, é preciso criar um keyring com uma chave criptográfica definida com um local. Ao criar um novo stream no Datastream, você seleciona essa chave para criptografar o stream.
É preciso saber qual é o ID e a região da chave ao criar novos fluxos que usam a CMEK. Coloque novos streams na mesma região da CMEK associada a eles. É possível criar um projeto para as 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 sua CMEK. Para saber como usar chaves externas com o Cloud Key Management Service, consulte Cloud External Key Manager.
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 da CMEK:
Não é possível atualizar a CMEK em um fluxo 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 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ê entende a CMEK, já pode configurar uma conta de serviço e chaves para ela. Além disso, você vai aprender a configurar o Datastream para usar a 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.
- Somente usuários da gcloud e da API:verifique se você tem uma conta de serviço para cada projeto que exige a CMEK. Se não tiver, saiba 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
), 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:
- O mesmo local da CMEK
- A configuração da CMEK
- O ID da CMEK
- 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 Google Cloud console, 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. Este é o
KMS_KEY_ID
. Você precisa doKMS_KEY_ID
para conceder o acesso de chave à conta de serviço. - 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
- 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.
Fluxo de trabalho para criar um stream no Datastream com 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:
No momento, só é possível usar comandos gcloud
para criar o tipo de
conta de serviço necessária para a 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 acesso à chave para a 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 fluxo. Uma chave de região global ou de várias regiões não vai funcionar. Se as regiões não forem iguais, não será possível criar o stream.
Para criar uma chave do Cloud KMS:
Console
gcloud
Conceder acesso à chave para a conta de serviço
Você só precisa executar 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
Ao criar um stream no Datastream, você pode usar sua CMEK para gerenciar a criptografia dos dados.