Usar chaves de criptografia gerenciadas pelo cliente (CMEK)

Nesta página, você vai aprender a configurar uma conta de serviço e as chaves de criptografia gerenciadas pelo cliente, além de saber como criar uma instância que usa uma chave de criptografia gerenciada pelo cliente criada manualmente. Para saber mais sobre como usar chaves de criptografia gerenciadas pelo cliente com o Cloud SQL, consulte Visão geral das chaves de criptografia gerenciadas pelo cliente.

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. Make sure that billing is enabled for your Google Cloud project.

  4. Install the Google Cloud CLI.
  5. To initialize the gcloud CLI, run the following command:

    gcloud init
  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  7. Make sure that billing is enabled for your Google Cloud project.

  8. Install the Google Cloud CLI.
  9. To initialize the gcloud CLI, run the following command:

    gcloud init
  10. Verifique se você tem o papel Administrador do Cloud SQL em sua conta de usuário.

    Acessar a página IAM

  11. Enable the Cloud Key Management Service API.

    Enable the API

  12. Enable the Cloud SQL Admin API.

    Enable the API

Fluxo de trabalho para criar uma instância do Cloud SQL com CMEK

  1. Somente usuários da gcloud e da API: crie uma conta de serviço para cada projeto que exige chaves de criptografia gerenciadas pelo cliente.
  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 à conta de serviço o acesso à chave.
  4. Anote o ID da chave (KMS_KEY_ID), o local da chave (GCP_REGION) e o ID do keyring (KMS_KEYRING_ID).
  5. Acesse um projeto e crie uma instância do Cloud SQL com as seguintes opções:
    1. O mesmo local da chave de criptografia gerenciada pelo cliente
    2. A configuração de chave gerenciada pelo cliente
    3. O ID da chave de criptografia gerenciada pelo cliente

Sua instância do Cloud SQL agora está ativada com CMEK.

Crie uma conta de serviço

Você precisa criar uma conta de serviço para cada projeto que exige chaves de criptografia gerenciadas pelo cliente.

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 Cloud SQL para MySQL em uma conta de serviço.

No momento, só é possível usar comandos da CLI gcloud para criar o tipo de conta de serviço necessária para chaves de criptografia gerenciadas pelo cliente. Se você estiver usando o Console, o Cloud SQL criará automaticamente essa conta de serviço para você.

gcloud

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

Terraform

Para criar uma conta de serviço, use um recurso do Terraform.

resource "google_project_service_identity" "gcp_sa_cloud_sql" {
  provider = google-beta
  service  = "sqladmin.googleapis.com"
}

Aplique as alterações

Para aplicar a configuração do Terraform em um projeto do Google Cloud, conclua as etapas nas seções a seguir.

Preparar o Cloud Shell

  1. Inicie o Cloud Shell.
  2. Defina o projeto padrão do Google Cloud em que você quer aplicar as configurações do Terraform.

    Você só precisa executar esse comando uma vez por projeto, e ele pode ser executado em qualquer diretório.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    As variáveis de ambiente serão substituídas se você definir valores explícitos no arquivo de configuração do Terraform.

Preparar o diretório

Cada arquivo de configuração do Terraform precisa ter o próprio diretório, também chamado de módulo raiz.

  1. No Cloud Shell, crie um diretório e um novo arquivo dentro dele. O nome do arquivo precisa ter a extensão .tf, por exemplo, main.tf. Neste tutorial, o arquivo é chamado de main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Se você estiver seguindo um tutorial, poderá copiar o exemplo de código em cada seção ou etapa.

    Copie o exemplo de código no main.tf recém-criado.

    Se preferir, copie o código do GitHub. Isso é recomendado quando o snippet do Terraform faz parte de uma solução de ponta a ponta.

  3. Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
  4. Salve as alterações.
  5. Inicialize o Terraform. Você só precisa fazer isso uma vez por diretório.
    terraform init

    Opcionalmente, para usar a versão mais recente do provedor do Google, inclua a opção -upgrade:

    terraform init -upgrade

Aplique as alterações

  1. Revise a configuração e verifique se os recursos que o Terraform vai criar ou atualizar correspondem às suas expectativas:
    terraform plan

    Faça as correções necessárias na configuração.

  2. Para aplicar a configuração do Terraform, execute o comando a seguir e digite yes no prompt:
    terraform apply

    Aguarde até que o Terraform exiba a mensagem "Apply complete!".

  3. Abra seu projeto do Google Cloud para ver os resultados. No console do Google Cloud, navegue até seus recursos na IU para verificar se foram criados ou atualizados pelo Terraform.

O comando anterior retorna um nome de conta de serviço. Você usa esse nome de conta de serviço durante o procedimento em Como conceder acesso à chave para a conta de serviço.

Crie uma chave

É possível criar a chave no mesmo projeto do Google Cloud que a instância do Cloud SQL ou em um projeto diferente do usuário. O local do keyring do Cloud KMS precisa corresponder à região em que você quer criar a instância do Cloud SQL. Uma chave de região global ou de várias regiões não funcionará. A solicitação de criação de instância do Cloud SQL falhará se as regiões não corresponderem.

Para criar uma chave do Cloud KMS:

Console

  1. No console do Google Cloud, acesse a página Gerenciamento de chaves.

    Acessar "Gerenciamento de chaves"

  2. Clique em Criar keyring.
  3. Adicione um nome do keyring. Anote esse nome porque você precisa dele para conceder à chave o acesso à 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. Em Finalidade, selecione Criptografia/descriptografia simé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. É o ID KMS_KEY_ID. Você precisa do KMS_KEY_ID para conceder o acesso de 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 de chave à 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 de chave à conta de serviço.

Terraform

Para criar um keyring, use um recurso do Terraform.

resource "google_kms_key_ring" "keyring" {
  provider = google-beta
  name     = "keyring-name"
  location = "us-central1"
}

Para criar uma chave, use um recurso do Terraform.

resource "google_kms_crypto_key" "key" {
  provider = google-beta
  name     = "crypto-key-name"
  key_ring = google_kms_key_ring.keyring.id
  purpose  = "ENCRYPT_DECRYPT"
}

Aplique a configuração do Terraform:

terraform apply

Conceda à conta de serviço acesso a chave

Ao criar a instância do Cloud SQL com a CMEK, você só precisará executar este procedimento se estiver usando a gcloud ou a API. Siga este procedimento se tiver problemas de permissão após a criação da instância.

Para conceder acesso à conta de serviço:

Console

  1. No console do Google Cloud, acesse a página Gerenciamento de chaves.

    Acessar "Gerenciamento de chaves"

  2. Para selecionar o projeto que hospeda a chave, use o seletor de projeto.
  3. Clique no nome do keyring;
  4. Clique no nome da chave.
  5. Clique na guia Permissões.
  6. Para abrir o painel, clique em Conceder acesso.
  7. Informe a conta de serviço como principal e selecione "Criptografador/Descriptografador do Cloud KMS CryptoKey" como papel.
  8. Clique em Salvar.

Como alternativa, também é possível concedê-la na página do IAM do projeto.

ACESSAR A PÁGINA "IAM DO PROJETO"

gcloud

gcloud kms keys add-iam-policy-binding KMS_KEY_ID \
--location=GCP_REGION \
--keyring=KMS_KEYRING_ID \
--member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloud-sql.iam.gserviceaccount.com \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter

Terraform

Para conceder acesso à chave, use um recurso do Terraform.

resource "google_kms_crypto_key_iam_binding" "crypto_key" {
  provider      = google-beta
  crypto_key_id = google_kms_crypto_key.key.id
  role          = "roles/cloudkms.cryptoKeyEncrypterDecrypter"

  members = [
    "serviceAccount:${google_project_service_identity.gcp_sa_cloud_sql.email}",
  ]
}

Aplique a configuração do Terraform:

terraform apply

Criar uma instância do Cloud SQL com CMEK

Para criar uma instância com chaves de criptografia gerenciadas pelo cliente:

Console

  1. No console do Google Cloud, acesse a página Instâncias do Cloud SQL.

    Acesse Instâncias do Cloud SQL

  2. Clique em Criar instância.
  3. Escolha o mecanismo do banco de dados.
  4. Digite um nome para a instância. Não inclua informações confidenciais ou de identificação pessoal no nome da sua instância. Ela é visível externamente. Não é necessário incluir o ID do projeto no nome da instância. Isso é feito automaticamente quando necessário, como nos arquivos de registro.
  5. Digite a senha do usuário 'root'@'%'.
  6. Configure a região para a instância. Coloque a instância na mesma região que os recursos que a acessam. Na maioria dos casos, você não precisa especificar uma zona.
  7. Na seção Opções de configuração, selecione todas as opções até chegar a Tipo de máquina e armazenamento.
  8. Expanda Tipo de máquina e armazenamento.
  9. Na seção Criptografia, selecione Chave gerenciada pelo cliente.
  10. Selecione a chave KMS no menu suspenso ou insira manualmente o KMS_KEY_ID. São exibidas somente as chaves do KMS no mesmo projeto e na mesma região que a instância. A versão principal da chave é usada. Portanto, se uma versão for fornecida no nome da chave, ela será cortada. Para escolher uma chave KMS pertencente a um projeto diferente, mas na mesma região, selecione Não encontra sua chave? Insira o ID de recurso da chave e o KMS_KEY_ID registrado anteriormente.
  11. Uma mensagem será exibida se a conta de serviço não tiver permissão para criptografar/descriptografar com a chave selecionada. Se isso acontecer, clique em Conceder para conceder à conta de serviço o papel roles/cloudkms.cryptoKeyEncrypterDecrypter> do IAM na chave KMS selecionada.
  12. Depois de selecionar as opções de configuração, clique em Criar.
  13. Você verá uma mensagem explicando as implicações do uso da chave de criptografia gerenciada pelo cliente. Leia e confirme para prosseguir com a criação da instância.

gcloud

gcloud sql instances create INSTANCE_NAME \
--project=PROJECT_ID \
--disk-encryption-key=KMS_KEY_ID \
--database-version=VERSION \
--tier=MACHINE_TYPE \
--region=REGION \
--root-password=INSERT-PASSWORD-HERE

Terraform

Para criar uma instância com o CMEK, use um recurso do Terraform.

resource "google_sql_database_instance" "mysql_instance_with_cmek" {
  name                = "mysql-instance-cmek"
  provider            = google-beta
  region              = "us-central1"
  database_version    = "MYSQL_8_0"
  encryption_key_name = google_kms_crypto_key.key.id
  settings {
    tier = "db-n1-standard-2"
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

Excluir as alterações

Para excluir as mudanças, faça o seguinte:

  1. Para desativar a proteção contra exclusão, no arquivo de configuração do Terraform, defina o argumento deletion_protection como false.
    deletion_protection =  "false"
  2. Para aplicar a configuração atualizada do Terraform, execute o comando a seguir e digite yes no prompt:
    terraform apply
  1. Remova os recursos aplicados anteriormente com a configuração do Terraform executando o seguinte comando e inserindo yes no prompt:

    terraform destroy

REST v1

Para criar uma instância com chaves de criptografia gerenciadas pelo cliente, insira diskEncryptionConfiguration no comando.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto
  • instance-id: o ID da instância
  • region: a região
  • database-version: string de versão de enum (por exemplo, MYSQL_8_0)
  • kms-resource-id: o ID que você recebeu da criação de uma chave.

Método HTTP e URL:

POST https://sqladmin.googleapis.com/v1/projects/project-id/instances

Corpo JSON da solicitação:

{
  "name":"instance-id",
  "region":"region",
  "databaseVersion": "database-version",
  "diskEncryptionConfiguration" :
  {
      "kmsKeyName" : "kms-resource-id"
  },
  "settings":
  {
     "backupConfiguration":
      {
         "binaryLogEnabled": true,
         "enabled":true
      }
   }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "UPDATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}
Este exemplo usa instances:insert.

REST v1beta4

Para criar uma instância com chaves de criptografia gerenciadas pelo cliente, insira diskEncryptionConfiguration no comando.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto
  • instance-id: o ID da instância
  • region: a região
  • database-version: string de versão de enum (por exemplo, MYSQL_8_0)
  • kms-resource-id: o ID que você recebeu da criação de uma chave.

Método HTTP e URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances

Corpo JSON da solicitação:

{
  "name":"instance-id",
  "region":"region",
  "databaseVersion": "database-version",
  "diskEncryptionConfiguration" :
  {
      "kmsKeyName" : "kms-resource-id"
  },
  "settings":
  {
     "backupConfiguration":
      {
         "binaryLogEnabled": true,
         "enabled":true
      }
   }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "UPDATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}
Este exemplo usa instances:insert.

Criar um backup para uma instância ativada para CMEK

Quando você cria um backup de uma instância do Cloud SQL, o backup é criptografado com a mesma versão de chave primária que a chave gerenciada pelo cliente da instância principal. Se a instância usar uma CMEK criada pela chave automática do Cloud KMS, o backup ainda usará a mesma chave da instância principal. A chave automática não cria chaves para backups.

Consulte Como criar e gerenciar backups automáticos e sob demanda.

Você verá uma mensagem no formulário Criar um backup que diz: "Seu backup será criptografado com a versão principal da chave de criptografia gerenciada pelo cliente desta instância. Se esta versão da chave for destruída ou desativada, todos os dados de backup criptografados com ela serão perdidos permanentemente. É possível verificar a versão principal da chave no Cloud KMS."

Na página de backups, a lista de backups ativados com chaves de criptografia gerenciadas pelo cliente tem duas colunas extras. Uma coluna mostra que o backup é de uma instância ativada para CMEK. Outra coluna exibe a versão da chave usada para criptografar o backup.

Criar uma réplica para uma instância ativada para CMEK

Quando você cria uma réplica de leitura de uma instância do Cloud SQL na mesma região, ela herda a mesma chave de criptografia gerenciada pelo cliente que a instância pai. Se você criar uma réplica de leitura em uma região diferente, receberá uma nova lista de chaves de criptografia gerenciadas pelo cliente. Cada região usa seu próprio conjunto de chaves.

Consulte Como criar réplicas de leitura.

Na página Criar réplica de leitura, você verá as seguintes informações:

  1. A Criptografia mostra gerenciado pelo cliente.
  2. A chave de criptografia da réplica é exibida.
  3. A mensagem "Sua réplica será criptografada com a chave gerenciada pelo cliente da instância principal" será exibida. Se alguém destruir essa chave, todos os dados criptografados com ela serão permanentemente perdidos."

Para uma réplica entre regiões, você verá a seguinte mensagem:

"Sua réplica entre regiões será criptografada com a chave gerenciada pelo cliente selecionada. Se alguém destruir essa chave, todos os dados criptografados com ela serão perdidos permanentemente."

Criar um clone de uma instância ativada para CMEK

Quando você cria um clone da instância do Cloud SQL, ele herda a mesma chave de criptografia gerenciada pelo cliente que foi usada para criptografar a instância de origem.

Veja Como clonar instâncias.

Na página Criar clone, você verá as seguintes informações:

  1. A Criptografia mostra gerenciado pelo cliente.
  2. A chave de criptografia do clone é exibida.
  3. Há uma mensagem dizendo "Seu clone será criptografado com a chave gerenciada pelo cliente da instância de origem. Se alguém destruir essa chave, todos os dados criptografados com ela serão permanentemente perdidos."

Visualizar informações da chave em uma instância ativada para CMEK

Depois de criar uma instância do Cloud SQL, consulte a lista de instâncias ou a página de visão geral da instância para ver se ela foi criada por meio de uma chave de criptografia gerenciada pelo cliente. Os detalhes também mostram a chave usada para criar a instância.

  1. No console do Google Cloud, acesse a página Instâncias do Cloud SQL.

    Acesse Instâncias do Cloud SQL

  2. Na lista "Instâncias", role a tela para a direita até ver a coluna Criptografia. Nessa coluna, você verá Gerenciado pelo Google e Gerenciado pelo cliente.
  3. Clique no nome de uma instância para abrir a página Visão geral. A chave de criptografia gerenciada pelo cliente está listada no painel Configuração.

Criptografar novamente uma instância ou réplica atual ativada para CMEK

É possível criptografar novamente as instâncias e réplicas atuais do Cloud SQL com a versão mais recente da chave primária. Para mais informações sobre como criptografar novamente sua instância ou réplica atual ativada para CMEK, consulte Sobre chaves.

Adquirir a nova versão da chave primária

  • Para criptografar novamente sua instância ou réplica com uma nova versão, você precisa da nova versão da chave primária. Se você precisar de uma nova versão da chave para as instâncias, será necessário fazer a rotação da chave usando o Cloud Key Management Service. Para fazer isso, consulte Girar uma chave.

  • Após a conclusão da rotação da chave, aguarde até que a alteração da chave primária seja propagada para criptografar novamente as instâncias. Se a alteração da versão da chave não for consistente, a instância continuará usando a versão antiga da chave após a nova criptografia. Para mais informações, consulte Consistência das versões de chave.

Criptografar novamente sua instância ativada para CMEK

Depois que a rotação da chave for concluída, criptografe novamente sua instância ou réplica atual ativada para CMEK.

Console

  1. No console do Google Cloud, acesse a página Instâncias do Cloud SQL.

    Acesse Instâncias do Cloud SQL

  2. Para abrir a página Visão geral de uma instância, clique no nome da instância.
  3. Na seção Configuração, clique em Criptografar novamente uma instância.
  4. Na caixa de diálogo exibida, confirme a seleção clicando em Criptografar novamente.

gcloud

Para criptografar novamente a instância ou réplica, execute o seguinte comando:

gcloud sql instances reencrypt INSTANCE_NAME
Substitua INSTANCE_NAME pelo nome da instância ou réplica que você está criptografando novamente.

REST v1

Para criptografar novamente sua instância ou réplica com a nova chave, execute o seguinte comando:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/reencrypt

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto
  • INSTANCE_ID: o ID da instância

Método HTTP e URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/reencrypt

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2023-06-28T21:19:09.503Z",
  "operationType": "REENCRYPT",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

REST v1beta4

Para criptografar novamente a instância ou réplica com a nova chave, execute o seguinte comando:
    POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/reencrypt

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto
  • INSTANCE_ID: o ID da instância

Método HTTP e URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/reencrypt

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2023-06-28T21:22:13.663Z",
  "operationType": "REENCRYPT",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Backups automáticos de nova criptografia

Quando você criptografa novamente uma instância primária com uma nova versão da chave primária, o Cloud SQL cria automaticamente um backup sob demanda chamado "backup de nova criptografia".

Na lista de backups da instância do Cloud SQL, o backup de nova criptografia está listado como o tipoon-demand e rotulado com backup created automatically for data before CMEK re-encryption.

Assim como outros backups sob demanda, os backups de nova criptografia são mantidos até você excluí-los ou excluir a instância.

Limitações de nova criptografia

Ao criptografar novamente uma instância, observe as seguintes limitações:

  • Não é possível executar outras operações de administrador na instância enquanto a operação de nova criptografia está em andamento.
  • A operação de nova criptografia aciona uma inatividade que depende do tamanho da instância ou da réplica.
  • As réplicas de uma instância não são criptografadas novamente quando ela é criptografada. É necessário criptografar novamente cada réplica separadamente.
  • Quando você criptografa novamente sua instância, os backups não são criptografados novamente de maneira automática com a nova versão da chave. Para restaurar o backup ou a recuperação pontual para um horário posterior ao backup, mantenha a versão da chave do Cloud KMS com que o backup foi criptografado.

Para solução de problemas, consulte a Tabela de solução de problemas de nova criptografia.

Usar o Cloud External Key Manager (Cloud EKM)

Para proteger dados em instâncias do Cloud SQL, use chaves que você gerencia em um parceiro de gerenciamento de chaves externo compatível. Para mais informações, consulte Gerenciador de chaves externo do Cloud, incluindo a seção Considerações.

Quando achar que é a hora de criar uma chave do Cloud EKM, consulte Como gerenciar chaves do Cloud EKM. Depois que a chave for criada, informe o nome da chave ao criar uma instância do Cloud SQL.

É possível usar as justificativas de acesso às chaves (KAJ, na sigla em inglês) como parte do Cloud EKM. As KAJ permitem que você veja o motivo de cada solicitação do Cloud EKM. Além disso, com base na justificativa fornecida, é possível aprovar ou negar automaticamente uma solicitação. Para saber mais, consulte a Visão geral.

Portanto, as KAJ fornecem controle extra sobre seus dados fornecendo uma justificativa para cada tentativa de descriptografia dos dados.

O Google não tem controle sobre a disponibilidade de chaves em um sistema parceiro de gerenciamento de chaves externo.

Desativar e reativar versões de chave

Veja os seguintes tópicos:

Resolver problemas

Nesta seção, descrevemos as ações possíveis quando você receber uma mensagem de erro ao configurar ou usar instâncias ativadas para CMEK.

As operações de administrador do Cloud SQL (como criação, clonagem ou atualização) podem falhar devido a erros do Cloud KMS e ausência de papéis ou permissões. Motivos comuns de falha incluem uma versão ausente da chave do Cloud KMS, uma versão da chave do Cloud KMS desativada ou destruída, permissões de IAM insuficientes para acessar a versão da chave do Cloud KMS ou a versão da chave do Cloud KMS está em uma região diferente da instância do Cloud SQL. Use a seguinte tabela de solução de problemas para diagnosticar e resolver problemas comuns.

Tabela de solução de problemas de chaves de criptografia gerenciadas pelo cliente

Para este erro... O problema pode ser... Tente o seguinte...
Conta de serviço por produto, por projeto não encontrada O nome da conta de serviço está incorreto. Certifique-se de ter criado uma conta de serviço para o projeto de usuário correto.

ACESSAR A PÁGINA "CONTAS DE SERVIÇO"

Não é possível conceder acesso à conta de serviço A conta de usuário não tem permissão para conceder acesso a esta versão de chave. Adicione a função Administrador da organização em sua conta de usuário ou serviço.

ACESSAR A PÁGINA "CONTAS DE IAM"

A versão da chave do Cloud KMS foi destruída A versão da chave foi destruída. Se a versão da chave for destruída, você não poderá usá-la para criptografar ou descriptografar dados.
A versão da chave do Cloud KMS está desativada A versão da chave está desativada. Reative a versão da chave do Cloud KMS.

ACESSAR A PÁGINA "CHAVES DE CRIPTOGRAFIA"

Permissão insuficiente para usar a chave do Cloud KMS O papel cloudkms.cryptoKeyEncrypterDecrypter está ausente na conta de usuário ou serviço que você está usando para executar operações em instâncias do Cloud SQL ou a versão da chave do Cloud KMS não existe. No projeto do Google Cloud que hospeda a chave, adicione o papel cloudkms.cryptoKeyEncrypterDecrypter à sua conta de usuário ou serviço.

ACESSAR A PÁGINA "CONTAS DE IAM"


Se o papel já tiver sido concedido à sua conta, consulte Como criar uma chave para saber como criar uma nova versão da chave. Consulte a observação.
A chave do Cloud KMS não foi encontrada A versão da chave não existe. Crie uma nova versão de chave. Consulte Como criar uma chave. Consulte a observação.
A instância do Cloud SQL e a versão da chave do Cloud KMS estão em diferentes regiões A versão da chave do Cloud KMS e a instância do Cloud SQL precisam estar na mesma região. Ela não funcionará se a versão da chave do Cloud KMS estiver em uma região global ou em várias regiões. Crie uma versão de chave na mesma região em que você quer criar instâncias. Consulte Como criar uma chave. Consulte a observação.
A versão da chave do Cloud KMS é restaurada, mas a instância ainda está suspensa A versão da chave está desativada ou não concede as permissões adequadas. Reative a versão da chave e conceda o papel cloudkms.cryptoKeyEncrypterDecrypter à conta de usuário ou serviço no projeto do Google Cloud que hospeda a chave.

Tabela de solução de problemas de nova criptografia

Para este erro... O problema pode ser... Tente o seguinte...
A nova criptografia de recursos do CMEK falhou porque a chave do Cloud KMS está inacessível. Verifique se a versão da chave primária está ativada e se a permissão foi concedida corretamente. A versão da chave está desativada ou não concede as permissões adequadas.

Reative a versão da chave do Cloud KMS:

ACESSAR A PÁGINA "CHAVES DE CRIPTOGRAFIA"

No projeto do Google Cloud que hospeda a chave, confirme se o papel cloudkms.cryptoKeyEncrypterDecrypter foi concedido ao usuário ou à conta de serviço:

ACESSAR A PÁGINA "CONTAS DO IAM"

A nova criptografia de recursos do CMEK falhou devido a um erro interno do servidor. Tente de novo mais tarde Há um erro interno do servidor. Tente fazer a criptografia novamente. Para mais informações, consulte Criptografar novamente uma réplica ou instância atual ativada para CMEK

A seguir