Ative as CMEK para o Looker (Google Cloud Core)

Por predefinição,o Ads Data Hub Google Cloud encripta automaticamente os dados quando estão em repouso através de chaves de encriptação geridas pela Google. Se tiver requisitos regulamentares ou de conformidade específicos relacionados com as chaves que protegem os seus dados, pode usar chaves de encriptação geridas pelo cliente (CMEK) para a encriptação ao nível da aplicação do Looker (Google Cloud core).

Para mais informações sobre as CMEK em geral, incluindo quando e por que motivo as ativar, consulte a documentação do Cloud Key Management Service.

Esta página explica como configurar uma instância do Looker (essencial para o Google Cloud) para usar a CMEK.

Como é que o Looker (Google Cloud Core) interage com a CMEK?

O Looker (Google Cloud core) usa uma única chave CMEK (através de uma hierarquia de chaves secundárias) para ajudar a proteger os dados sensíveis geridos pela instância do Looker (Google Cloud core). Durante o arranque, cada processo na instância do Looker faz uma chamada inicial ao Cloud Key Management Service (KMS) para desencriptar a chave. Durante o funcionamento normal (após o arranque), a instância do Looker completa faz uma única chamada ao KMS aproximadamente a cada cinco minutos para verificar se a chave ainda é válida.

Que tipos de instâncias do Looker (Google Cloud core) suportam a CMEK?

As instâncias do Looker (Google Cloud core) suportam CMEK quando são cumpridos dois critérios:

  • Os passos de configuração da CMEK descritos nesta página são concluídos antes de a instância do Looker (Google Cloud core) ser criada. Não pode ativar chaves de encriptação geridas pelo cliente em instâncias existentes.
  • As edições de instância têm de ser Enterprise ou Embed.

Fluxo de trabalho para criar uma instância do Looker (Google Cloud Core) com CMEK

Esta página explica os seguintes passos para configurar as CMEK para uma instância do Looker (Google Cloud core).

  1. Configure o seu ambiente.
  2. Apenas para utilizadores da Google Cloud CLI, do Terraform e da API: crie uma conta de serviço para cada projeto que exija chaves de encriptação geridas pelo cliente, se ainda não tiver sido configurada uma conta de serviço do Looker para o projeto.
  3. Crie um conjunto de chaves e uma chave e defina a localização da chave. A localização é a região do Google Cloud na qual quer criar a instância do Looker (Google Cloud core).
  4. Apenas para utilizadores da Google Cloud CLI, do Terraform e da API: copie ou anote o ID da chave (KMS_KEY_ID) e a localização da chave, juntamente com o ID (KMS_KEYRING_ID) do conjunto de chaves. Precisa destas informações quando concede à conta de serviço acesso à chave.
  5. Apenas para utilizadores da Google Cloud CLI, do Terraform e da API: conceda à conta de serviço acesso à chave.
  6. Aceda ao seu projeto e crie uma instância do Looker (Google Cloud core) com as seguintes opções:
    1. Selecione a mesma localização que a chave de encriptação gerida pelo cliente usa.
    2. Defina a edição como Enterprise ou Embed.
    3. Ative a configuração de chave gerida pelo cliente.
    4. Adicione a chave de encriptação gerida pelo cliente através do nome ou do ID.

Quando todos estes passos estiverem concluídos, a sua instância do Looker (Google Cloud core) é ativada com a CMEK.

Antes de começar

Se ainda não o fez, certifique-se de que o seu ambiente está configurado para lhe permitir seguir as instruções nesta página. Siga os passos nesta secção para se certificar de que a configuração está correta.

  1. Na Google Cloud consola, na página do seletor de projetos, selecione ou crie um Google Cloud projeto. Nota: se não planeia manter os recursos que cria neste procedimento, crie um projeto em vez de selecionar um projeto existente. Depois de concluir estes passos, pode eliminar o projeto, o que remove os recursos associados ao projeto.

    Aceder ao seletor de projetos

  2. Certifique-se de que a faturação está ativada para o seu Google Cloud projeto. Saiba como verificar se a faturação está ativada num projeto.
  3. Instale a CLI Google Cloud.
  4. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
    

  5. Ative a Cloud Key Management Service API.

    Ative a API

  6. Ative a API Looker (Google Cloud Core).

    Ative a API

Funções necessárias

Para compreender as funções necessárias para configurar a CMEK, visite a página Controlo de acesso com a IAM da documentação do Cloud Key Management Service.

Para criar uma instância do Looker (Google Cloud core), certifique-se de que tem a função de IAM Administrador do Looker para o projeto no qual a instância do Looker (Google Cloud core) é criada. Para ativar as CMEK para a instância na Google Cloud consola, certifique-se de que tem a função da IAM Encriptador/desencriptador de CryptoKey do Cloud KMS na chave que está a ser usada para as CMEK.

Se precisar de conceder à conta de serviço do Looker acesso a uma chave do Cloud KMS, precisa da função da IAM administrador do Cloud KMS na chave que está a ser usada.

Criar uma conta de serviço

Se estiver a usar a CLI Google Cloud, o Terraform ou a API para criar a sua instância do Looker (essencial para o Google Cloud) e ainda não tiver sido criada uma conta de serviço do Looker para o Google Cloud projeto no qual vai residir, tem de criar uma conta de serviço para esse projeto. Se for criar mais do que uma instância do Looker (essencial para o Google Cloud) no projeto, a mesma conta de serviço aplica-se a todas as instâncias do Looker (essencial para o Google Cloud) nesse projeto, e a criação da conta de serviço só tem de ser feita uma vez. Se usar a consola para criar uma instância, o Looker (Google Cloud core) cria automaticamente a conta de serviço e concede-lhe acesso à chave CMEK à medida que configura a opção Usar uma chave de encriptação gerida pelo cliente.

Para permitir que um utilizador faça a gestão de contas de serviço, conceda uma das seguintes funções:

  • Utilizador da conta de serviço (roles/iam.serviceAccountUser): inclui autorizações para listar contas de serviço, obter detalhes sobre uma conta de serviço e usar a identidade de uma conta de serviço.
  • Administrador da conta de serviço (roles/iam.serviceAccountAdmin): inclui autorizações para listar contas de serviço e obter detalhes sobre uma conta de serviço. Também inclui autorizações para criar, atualizar e eliminar contas de serviço.

Atualmente, só pode usar comandos da CLI do Google Cloud para criar o tipo de conta de serviço de que precisa para chaves de encriptação geridas pelo cliente. Se estiver a usar a Google Cloud consola, o Looker (essencial para o Google Cloud) cria automaticamente esta conta de serviço para si.

gcloud

Execute o seguinte comando para criar a conta de serviço:

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

Substitua PROJECT_ID pelo projeto no qual a instância do Looker (Google Cloud core) reside.

Este comando cria a conta de serviço e devolve o nome da conta de serviço. Usa este nome da conta de serviço durante o procedimento em Conceder acesso à chave à conta de serviço.

Depois de criar a conta de serviço, aguarde alguns minutos para que a conta de serviço seja propagada.

Crie um conjunto de chaves e uma chave

Pode criar a chave no mesmo Google Cloud projeto que a instância do Looker (Google Cloud core) ou num projeto de utilizador separado. A localização do conjunto de chaves do Cloud KMS tem de corresponder à região onde quer criar a instância do Looker (Google Cloud core). Uma chave de região global ou multirregional não funciona. O pedido de criação da instância do Looker (Google Cloud core) falha se as regiões não corresponderem.

Siga as instruções nas páginas de documentação Crie um conjunto de chaves e Crie uma chave para criar um conjunto de chaves e uma chave que cumpram os dois critérios seguintes:

  • O campo Localização do conjunto de chaves tem de corresponder à região que vai definir para a instância do Looker (essencial para o Google Cloud).
  • O campo Purpose da chave tem de ser Encriptação/desencriptação simétrica.

Consulte a secção Rode a sua chave para saber como rodar a chave e criar novas versões da chave.

Copie ou anote o KMS_KEY_ID e o KMS_KEYRING_ID

Se estiver a usar a Google Cloud CLI, o Terraform ou a API para configurar a sua instância do Looker (Google Cloud core), siga as instruções na página de documentação Obter um ID de recurso do Cloud KMS para localizar os IDs de recursos do conjunto de chaves e da chave que acabou de criar. Copie ou anote o ID da chave (KMS_KEY_ID) e a localização da chave, juntamente com o ID (KMS_KEYRING_ID) do conjunto de chaves. Precisa destas informações quando concede à conta de serviço acesso à chave.

Conceda à conta de serviço acesso à chave

Só tem de realizar este procedimento se forem cumpridos os seguintes requisitos:

  • Está a usar a CLI Google Cloud, o Terraform ou a API.
  • A conta de serviço ainda não tiver recebido acesso à chave. Por exemplo, se já existir uma instância do Looker (Google Cloud core) no mesmo projeto que usa a mesma chave, não precisa de conceder acesso. Em alternativa, se o acesso à chave já tiver sido concedido por outra pessoa, não precisa de conceder acesso.

Tem de ter a função da IAM Administrador do Cloud KMS na chave que está a ser usada para conceder acesso à conta de serviço.

Para conceder acesso à conta de serviço:

gcloud

gcloud kms keys add-iam-policy-binding KMS_KEY_ID \
--location=REGION \
--keyring=KMS_KEYRING_ID \
--member=serviceAccount:SERVICE_ACCOUNT_NAME \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter

Substitua o seguinte:

  • KMS_KEY_ID: o ID da chave do KMS
  • REGION: a região na qual o Looker (Google Cloud Core) é criado e a localização do conjunto de chaves
  • KMS_KEYRING_ID: o ID do conjunto de chaves do KMS
  • SERVICE_ACCOUNT_NAME: o nome da conta de serviço devolvido quando criou a conta de serviço

Depois de conceder a função IAM à conta de serviço, aguarde alguns minutos para que a autorização seja propagada.

Crie uma instância do Looker (Google Cloud core) com CMEK

Para criar uma instância com chaves de encriptação geridas pelo cliente na Google Cloud consola, siga primeiro os passos na secção Crie um conjunto de chaves e uma chave, apresentada anteriormente, para criar um conjunto de chaves e uma chave na mesma região que vai usar para a sua instância do Looker (Google Cloud core). Em seguida, com as seguintes definições, siga as instruções para criar uma instância do Looker (Google Cloud core).

Para criar uma instância do Looker (Google Cloud core) com definições de CMEK, selecione uma das seguintes opções:

consola

  1. Certifique-se de que tem a função da IAM Encriptador/desencriptador de CryptoKey do Cloud KMS na chave que está a ser usada para a CMEK.
  2. Na secção Edição da página Criar uma instância, tem de selecionar uma edição Enterprise ou Incorporar para usar as CMEK.
  3. Na secção Encriptação da página Criar uma instância, selecione o botão de opção Chave de encriptação gerida pelo cliente (CMEK). Esta ação revela um campo pendente Selecionar uma chave gerida pelo cliente.
  4. No campo Selecione uma chave gerida pelo cliente, defina a chave que quer usar. A chave tem de estar num conjunto de chaves com uma localização definida para a mesma região que a instância do Looker (Google Cloud core) que está a criar. Caso contrário, a criação da instância falha. Pode selecionar a chave através de um dos dois métodos seguintes:
    1. Selecione o nome da chave na lista pendente: as chaves disponíveis no seu projeto do Google Cloud são apresentadas numa lista pendente. Depois de selecionar a tecla, clique em OK.
    2. Introduza o ID do recurso da chave: clique no texto Não vê a sua chave? Introduza o ID de recurso da chave, que aparece na parte inferior do menu pendente.É apresentada uma caixa de diálogo Introduza o ID de recurso da chave, onde pode introduzir o ID da chave. Depois de introduzir o ID, selecione Guardar.
  5. Depois de selecionar uma chave, é apresentada uma mensagem a pedir-lhe que conceda autorização à sua conta de serviço para usar a chave. Clique no botão Conceder.
  6. Se a conta de serviço não tiver autorização para encriptar e desencriptar com a chave selecionada, é apresentada uma mensagem. Se isto acontecer, clique em Conceder para conceder à conta de serviço a função da IAM de encriptador/desencriptador de CryptoKey do Cloud KMS na chave do KMS selecionada.
  7. Depois de concluir toda a configuração da instância do Looker (Google Cloud core), clique em Criar.

gcloud

gcloud looker instances create INSTANCE_NAME \
--project=PROJECT_ID \
--oauth-client-id=OAUTH_CLIENT_ID\
--oauth-client-secret=OAUTH_CLIENT_SECRET \
--kms-key=KMS_KEY_ID
--region=REGION \
--edition=EDITION
[--consumer-network=CONSUMER_NETWORK --private-ip-enabled --reserved-range=RESERVED_RANGE]
[--no-public-ip-enabled]
[--public-ip-enabled]

Substitua o seguinte:

  • INSTANCE_NAME: um nome para a sua instância do Looker (Google Cloud Core); não está associado ao URL da instância
  • PROJECT_ID: o nome do projeto no qual está a criar a instância do Looker (Google Cloud Core) Google Cloud
  • OAUTH_CLIENT_ID e OAUTH_CLIENT_SECRET: o ID de cliente OAuth e o segredo do OAuth que criou quando configurou o cliente OAuth. Depois de criar a instância, introduza o URL da instância na secção URIs de redirecionamento autorizados do cliente OAuth.
  • KMS_KEY_ID: o ID da chave do KMS
  • REGION: a região na qual a sua instância do Looker (Google Cloud Core) está alojada. As regiões disponíveis estão listadas na página de documentação Localizações do Looker (Google Cloud core).
  • EDITION: para ativar as CMEK, EDITION tem de ser core-embed-annual ou core-enterprise-annual
  • CONSUMER_NETWORK: a sua rede VPC ou VPC partilhada. Tem de ser definido se estiver a criar uma instância de IP privado.
  • RESERVED_RANGE: o intervalo de endereços IP na VPC em que a Google vai aprovisionar uma sub-rede para a sua instância do Looker (Google Cloud Core). Tem de ser definido se estiver a criar uma instância de IP privado.

Pode incluir as seguintes flags:

  • O --private-ip-enabled ativa o IP privado.
  • --public-ip-enabled ativa o IP público.
  • --no-public-ip-enabled desativa o IP público.

Terraform

Use o seguinte recurso do Terraform para aprovisionar uma instância do Looker (essencial para o Google Cloud) Enterprise com uma ligação de rede privada:

# Creates an Enterprise edition Looker (Google Cloud core) instance with full, Private IP functionality.
resource "google_looker_instance" "main" {
  name               = "my-instance"
  platform_edition   = "LOOKER_CORE_ENTERPRISE_ANNUAL"
  region             = "us-central1"
  private_ip_enabled = true
  public_ip_enabled  = false
  reserved_range     = google_compute_global_address.main.name
  consumer_network   = data.google_compute_network.main.id
  admin_settings {
    allowed_email_domains = ["google.com"]
  }
  encryption_config {
    kms_key_name = google_kms_crypto_key.main.id
  }
  maintenance_window {
    day_of_week = "THURSDAY"
    start_time {
      hours   = 22
      minutes = 0
      seconds = 0
      nanos   = 0
    }
  }
  deny_maintenance_period {
    start_date {
      year  = 2050
      month = 1
      day   = 1
    }
    end_date {
      year  = 2050
      month = 2
      day   = 1
    }
    time {
      hours   = 10
      minutes = 0
      seconds = 0
      nanos   = 0
    }
  }
  oauth_config {
    client_id     = "my-client-id"
    client_secret = "my-client-secret"
  }
  depends_on = [
    google_service_networking_connection.main,
    google_kms_crypto_key.main
  ]
}

resource "google_kms_key_ring" "main" {
  name     = "keyring-example"
  location = "us-central1"
}

resource "google_kms_crypto_key" "main" {
  name     = "crypto-key-example"
  key_ring = google_kms_key_ring.main.id
}

resource "google_service_networking_connection" "main" {
  network                 = data.google_compute_network.main.id
  service                 = "servicenetworking.googleapis.com"
  reserved_peering_ranges = [google_compute_global_address.main.name]
}

resource "google_compute_global_address" "main" {
  name          = "looker-range"
  purpose       = "VPC_PEERING"
  address_type  = "INTERNAL"
  prefix_length = 20
  network       = data.google_compute_network.main.id
}

data "google_project" "main" {}

data "google_compute_network" "main" {
  name = "default"
}

resource "google_kms_crypto_key_iam_member" "main" {
  crypto_key_id = google_kms_crypto_key.main.id
  role          = "roles/cloudkms.cryptoKeyEncrypterDecrypter"
  member        = "serviceAccount:service-${data.google_project.main.number}@gcp-sa-looker.iam.gserviceaccount.com"
}

Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.

A sua instância do Looker (Google Cloud core) está agora ativada com a CMEK.

Veja informações importantes para uma instância com CMEK ativada

Depois de criar com êxito uma instância do Looker (Google Cloud core), pode verificar se a CMEK está ativada.

Para ver se a CMEK está ativada, selecione uma das seguintes opções:

consola

  1. Na Google Cloud consola, aceda à página Instâncias do Looker.
  2. Clique no nome de uma instância para abrir a respetiva página Detalhes. Se uma instância tiver a CMEK ativada, uma linha Encriptação indica a encriptação usada para a instância. O campo Chave de encriptação gerida pelo cliente (CMEK) mostra o identificador da chave.

gcloud

gcloud looker instances describe INSTANCE_NAME --region=REGION --format config

Substitua o seguinte:

  • INSTANCE_NAME: um nome para a sua instância do Looker (Google Cloud Core); não está associado ao URL da instância
  • REGION: a região em que a instância foi criada

Este comando deve devolver um kmsKeyName, um kmsKeyNameVersion e um kmsKeyState para confirmar que a instância foi configurada com a CMEK.

Use o Cloud External Key Manager (Cloud EKM)

Para proteger os dados em instâncias do Looker (Google Cloud core), pode usar chaves que gere num parceiro de gestão de chaves externo suportado. Para mais informações, consulte a página de documentação do Cloud External Key Manager, incluindo a secção Considerações.

Quando tiver tudo pronto para criar uma chave do Cloud EKM, consulte a secção Como funciona da página de documentação do Cloud External Key Manager. Depois de criar uma chave, indique o nome da chave quando criar uma instância do Looker (Google Cloud core).

A Google não controla a disponibilidade de chaves num sistema de parceiros de gestão de chaves externo.

Alterne a chave

Recomendamos que rode a chave para ajudar a promover a segurança. Sempre que a chave é alterada, é criada uma nova versão da chave. Para saber mais sobre a rotação de chaves, consulte a página de documentação Rotação de chaves.

Se rodar a chave usada para ajudar a proteger a sua instância do Looker (Google Cloud core), a versão anterior da chave continua a ser necessária para aceder a cópias de segurança ou exportações feitas quando essa versão da chave estava em utilização. Por esse motivo, a Google recomenda que mantenha a versão da chave anterior ativada durante, pelo menos, 45 dias após a rotação para ajudar a garantir que esses itens permanecem acessíveis. As versões das chaves são mantidas por predefinição até serem desativadas ou destruídas.

Desative e reative versões de chaves

Consulte as seguintes páginas de documentação:

Se uma versão de chave usada para ajudar a proteger uma instância do Looker (Google Cloud core) for desativada, a instância do Looker (Google Cloud core) tem de parar de funcionar, limpar todos os dados confidenciais não encriptados que possa ter na memória e aguardar até que a chave fique novamente disponível. O processo é o seguinte:

  1. A versão da chave usada para ajudar a proteger uma instância do Looker (Google Cloud core) está desativada.
  2. No prazo de aproximadamente 15 minutos, a instância do Looker (Google Cloud core) deteta que a versão da chave foi revogada, para de funcionar e limpa todos os dados encriptados na memória.
  3. Depois de a instância deixar de funcionar, as chamadas para as APIs Looker devolvem uma mensagem de erro.
  4. Depois de a instância deixar de funcionar, a IU do Looker (Google Cloud core) devolve uma mensagem de erro.
  5. Se reativar a versão da chave, tem de acionar manualmente um reinício da instância.

Se desativar uma versão de chave e não quiser esperar que a instância do Looker (Google Cloud core) pare automaticamente, pode acionar manualmente um reinício da instância para que a instância do Looker (Google Cloud core) detete imediatamente a versão de chave revogada.

Destruição de versões de chaves

Consulte a seguinte página de documentação:

Se uma versão da chave usada para ajudar a proteger uma instância do Looker (Google Cloud core) for destruída, a instância do Looker torna-se inacessível. A instância tem de ser eliminada e não vai poder aceder aos respetivos dados.

Resolver problemas

Esta secção descreve o que pode experimentar quando recebe uma mensagem de erro ao configurar ou usar instâncias ativadas com CMEK.

As operações de administrador do Looker (Google Cloud core), como a criação ou a atualização, podem falhar devido a erros do Cloud KMS e à falta de funções ou autorizações. Os motivos comuns para a falha incluem uma versão da chave do Cloud KMS em falta, uma versão da chave do Cloud KMS desativada ou destruída, autorizações do IAM insuficientes para aceder à versão da chave do Cloud KMS ou a versão da chave do Cloud KMS estar numa região diferente da instância do Looker (Google Cloud core). Use a seguinte tabela de resolução de problemas para diagnosticar e resolver problemas comuns.

Tabela de resolução de problemas de chaves de encriptação geridas pelo cliente

Mensagem de erro Causas possíveis Estratégias de resolução de problemas
Não foi encontrada uma conta de serviço por produto e por projeto O nome da conta de serviço está incorreto. Certifique-se de que criou uma conta de serviço para o projeto de utilizador correto.

ACEDA À PÁGINA DE CONTAS DE SERVIÇO

Não é possível conceder acesso à conta de serviço A conta de utilizador não tem autorização para conceder acesso a esta versão da chave.

Adicione a função de administrador da organização à sua conta de utilizador ou de serviço.

ACEDA À PÁGINA DE CONTAS DO IAM

A versão da chave do Cloud KMS é destruída A versão da chave é destruída. Se a versão da chave for destruída, não a pode usar para encriptar nem desencriptar dados. A instância do Looker (Google Cloud Core) tem de ser eliminada.
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.

ACEDER À PÁGINA DE GESTÃO DE CHAVES

Autorização insuficiente para usar a chave do Cloud KMS A função cloudkms.cryptoKeyEncrypterDecrypter está em falta no utilizador ou na conta de serviço que está a usar para executar operações em instâncias do Looker (Google Cloud core), ou a versão da chave do Cloud KMS não existe.

Adicione a função cloudkms.cryptoKeyEncrypterDecrypter ao seu utilizador ou conta de serviço.

ACEDA À PÁGINA DE CONTAS DO IAM

Se a função já estiver na sua conta, consulte a secção Crie um conjunto de chaves e uma chave para saber como criar uma nova versão da chave. Em seguida, conclua novamente os passos de criação da instância.

Não foi encontrada a chave do Cloud KMS A versão da chave não existe. Crie uma nova versão da chave e conclua novamente os passos de criação da instância. Consulte a secção Crie um conjunto de chaves e uma chave.
A instância do Looker (Google Cloud Core) e a versão da chave do Cloud KMS estão em regiões diferentes A versão da chave do Cloud KMS e a instância do Looker (essencial para o Google Cloud) têm de estar na mesma região. Não funciona se a versão da chave do Cloud KMS estiver numa região global ou em várias regiões. Crie uma versão da chave na mesma região onde quer criar instâncias e conclua novamente os passos de criação de instâncias. Consulte a secção Crie um conjunto de chaves e uma chave.

O que se segue?