Usar chaves de criptografia gerenciadas pelo cliente (CMEK) para migrações contínuas

Nesta página, descrevemos como as chaves de criptografia gerenciadas pelo cliente (CMEK) funcionam com jobs de migração do Database Migration Service.

Por padrão, o Database Migration Service (do Oracle para o Cloud SQL para PostgreSQL) criptografa o conteúdo do cliente em repouso. O Database Migration Service (para migração do Oracle para o Cloud SQL para PostgreSQL) processa a criptografia para você sem que você precise fazer nada. Essa opção é chamada de criptografia padrão do Google.

Se 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 Database Migration Service (para Oracle no Cloud SQL para PostgreSQL). 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 os recursos com CMEKs, a experiência de acesso aos recursos do Database Migration Service (do Oracle para o Cloud SQL para PostgreSQL) é semelhante à criptografia padrão do Google. Para saber mais sobre suas opções de criptografia, consulte Chaves de criptografia gerenciadas pelo cliente (CMEK).

Regiões em que o Database Migration Service oferece suporte à CMEK

A CMEK está disponível em todos os locais do Database Migration Service.

CMEK com o Cloud KMS Autokey

É possível criar CMEKs manualmente para proteger seus recursos do Database Migration Service (do Oracle para o Cloud SQL para PostgreSQL) ou usar a chave automática do Cloud KMS. Com o Autokey, keyrings e chaves são gerados sob demanda para dar suporte à criação ou atualização de recursos no Database Migration Service (do Oracle para o Cloud SQL para PostgreSQL). Os agentes de serviço que usam as chaves para operações de criptografia e descriptografia são criados se ainda não existirem e receberem os papéis necessários do Identity and Access Management (IAM). Para mais informações, consulte Visão geral das chaves automáticas.

Entender as contas de serviço

Quando os jobs de migração do Database Migration Service têm a CMEK ativada, é necessário usar uma conta de serviço para solicitar acesso à chave do Cloud Key Management Service.

Para usar uma CMEK em um projeto, é necessário ter uma conta de serviço e conceder acesso à chave para essa conta. A conta de serviço precisa estar dentro do projeto. A conta de serviço fica visível em todas as regiões.

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 job de migração no Database Migration Service, selecione essa chave para criptografar o job.

É preciso saber qual é o ID e a região da chave ao criar novos jobs de migração que usam CMEK. Você precisa colocar os bancos de dados de destino na mesma região que a CMEK associada ao job de migração. É possível criar um projeto para as duas chaves e bancos de dados de destino ou projetos diferentes para cada um.

A CMEK usa o seguinte formato:

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

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

Pode haver casos em que você precise 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 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 job de migração em execução.

  • Embora seja possível usar a CMEK para criptografar dados do banco de dados de origem, não é possível usar essas chaves para criptografar metadados de jobs de migração, como o ID do job de migração, o endereço IP 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 um job de migração para usar a CMEK.

Antes de começar

  1. Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
  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 role (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 role (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 Cloud.
  7. Verifique se você tem o papel de administrador de migração do banco de dados atribuído à sua conta de usuário.

    Acessar a página do IAM

  8. Ative a API Cloud Key Management Service, se ela ainda não estiver ativada.

    Funções necessárias para ativar APIs

    Para ativar APIs, você precisa da permissão serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão com o papel de Proprietário (roles/owner). Caso contrário, é possível receber essa permissão com o papel de Administrador do Service Usage (roles/serviceusage.serviceUsageAdmin). Saiba como conceder papéis.

    Ativar a API

  9. Ative a API Database Migration Service.

    Ativar a API

Fluxo de trabalho para criar jobs de migração no Database Migration Service 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 a CMEK. Para mais informações, consulte 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 Google Cloud .

  3. Conceda o acesso à chave para a 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 para conceder o acesso de chave à conta de serviço.

  5. Acesse um projeto, crie um job de migração no Database Migration Service e use sua CMEK na seção Opções avançadas de criptografia.

Seu job de migração no Database Migration Service 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 Database Migration Service (do Oracle para o Cloud SQL para PostgreSQL) em uma conta de serviço.

No momento, só é possível usar comandos gcloud para criar o tipo de conta de serviço necessária para a CMEK.

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

gcloud beta services identity create \
--service=datamigration.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 Google Cloud que o job de migração no Database Migration Service ou em um projeto de usuário separado. O local do keyring do Cloud KMS precisa corresponder à região do banco de dados de destino associado ao job de migração. Não há suporte para chaves multirregionais ou globais. Se as regiões não corresponderem, não será possível criar o job de migração.

Para criar uma chave do Cloud KMS:

Console

  1. No console Google Cloud , acesse a página Jobs de migração.

    Acessar 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. Este é o KMS_KEY_ID. Você precisa do KMS_KEY_ID ao conceder o acesso à chave para a conta de serviço.

gcloud

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

Conceder acesso à chave para a conta de serviço

Você só precisará 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=REGION \
--keyring=KMS_KEYRING_ID \
--member=serviceAccount:service-PROJECT_NUMBER@datamigrationiam.gserviceaccount.com \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter

Criar um job de migração no Database Migration Service com CMEK

Ao criar um job de migração, você pode usar sua CMEK para gerenciar a criptografia dos dados.

Desativar e reativar versões de chave

Veja os seguintes tópicos: