Por padrão, o Datastream criptografa o conteúdo do cliente em repouso. O Datastream processa a criptografia para você sem que você precise realizar outras ações. 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 Datastream. Ao usar chaves do Cloud KMS, é possível 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. Ao usar o Cloud KMS, é possível também monitorar o uso de chaves, ver registros de auditoria e controlar ciclos de vida de chaves. Em vez de o Google ser proprietário e responsável pelo gerenciamento das chaves de criptografia de chaves (KEKs) simétricas que protegem seus dados, você controla e gerencia essas chaves no Cloud KMS.
Depois de configurar seus recursos com CMEKs, a experiência de acesso aos seus recursos do Datastream é semelhante ao uso da criptografia padrão do Google. Para saber mais sobre suas opções de criptografia, consulte Chaves de criptografia gerenciadas pelo cliente (CMEK).
Nesta página, descrevemos como as chaves de criptografia gerenciadas pelo cliente (CMEK) funcionam com o Datastream.
A CMEK é adequada para você?
A CMEK é destinada a organizações que têm dados sensíveis ou regulamentados que exigem o gerenciamento das 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 for feita, o Datastream usará sua chave para acessar dados.
O Datastream usa chaves de criptografia de dados (DEK, na sigla em inglês) gerenciadas pelo Google e chaves de criptografia de chaves (KEK, na sigla em inglês) 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. A CMEK permite criar, revogar e excluir a KEK.
A CMEK, incluindo software, hardware e chaves externas, é gerenciada pela API Cloud Key Management Service (KMS).
Quais locais oferecem suporte a streams do Datastream ativados para CMEK?
A CMEK está disponível em todos os locais do Datastream locations.
Noções básicas sobre 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 à chave para essa conta. 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ê usa o Console para criar um stream, o Datastream cria a conta de serviço automaticamente quando você escolhe a opção Chave gerenciada pelo cliente pela primeira vez (se ela ainda não existir). Não é necessário ter permissões especiais na sua conta de usuário quando o Datastream cria automaticamente a conta de serviço.
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 streams que usam CMEK. Você precisa colocar novos streams na mesma região da CMEK associada a eles. É possível criar um projeto para ambas 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), 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 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 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 a keyring ou a chave, mas você pode destruir versões da chave.
Restrições
As seguintes restrições se aplicam ao uso de CMEK:
Não é possível atualizar a CMEK em um stream 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 ou os nomes das tabelas do banco de dados de origem.
Usar CMEK
Agora que você entende 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.
Antes de começar
- Faça login na sua Google Cloud conta do. Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
-
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 role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify 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.
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 role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Instalar e inicializar o SDK Cloud.
- Verifique se você tem o papel Administrador do Datastream atribuído à sua conta de usuário.
Ative a API Cloud Key Management Service.
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter a permissão
serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão com o papel Proprietário (roles/owner). Caso contrário, você pode receber essa permissão com o papel Administrador de uso do serviço (roles/serviceusage.serviceUsageAdmin). Saiba como conceder papéis.- 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. Se não tiver, veja como criar uma conta de serviço.
- Crie um keyring e uma chave e defina o local de cada chave. O local é a Google Cloud região.
- 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
Seu stream no Datastream agora está ativado com a 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.
Só é possível usar comandos gcloud para criar o tipo de conta de serviço necessário para a CMEK. Se você estiver usando o Console, 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 em Conceder o acesso de chave à conta de serviço.
Crie uma chave
É possível criar a chave no mesmo Google Cloud projeto que o stream 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 corresponderem, não será possível criar o stream.
Para criar uma chave do Cloud KMS:
Console
- Noconsole, acesse a página Chaves criptográficas. Google Cloud
- 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 ou anote o ID. Esse é o
KMS_KEY_ID. Você precisa doKMS_KEY_IDpara 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 de chave à conta de serviço
Você só precisará executar este procedimento se estiver usando a gcloud ou a API.
Para conceder acesso à conta de serviço, use o código a seguir:
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 stream no Datastream, você pode usar a CMEK para gerenciar a criptografia dos dados.
A seguir
- Para saber como desativar uma versão de chave ativada, 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.