Ative a CMEK para Looker (Google Cloud Core)

Por padrão, Google Cloud criptografa automaticamente os dados em repouso usando chaves de criptografia gerenciadas pelo Google. Se você tiver requisitos regulatórios ou de compliance específicos relacionados às chaves que protegem seus dados, use as chaves de criptografia gerenciadas pelo cliente (CMEKs) para a criptografia no nível do aplicativo do Looker (núcleo do Google Cloud).

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

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

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

O Looker (núcleo do Google Cloud) usa uma única chave CMEK (por meio de uma hierarquia de chaves secundárias) para ajudar a proteger os dados sensíveis gerenciados pela instância do Looker (núcleo do Google Cloud). Durante a inicialização, cada processo na instância do Looker faz uma chamada inicial para o Cloud Key Management Service (KMS) para descriptografar a chave. Durante a operação normal (após a inicialização), toda a instância do Looker faz uma única chamada para o KMS aproximadamente a cada cinco minutos para verificar se a chave ainda é válida.

Quais tipos de instâncias do Looker (Google Cloud Core) são compatíveis com a CMEK?

As instâncias do Looker (Google Cloud Core) são compatíveis com a CMEK quando dois critérios são atendidos:

  • As etapas de configuração da CMEK descritas nesta página são concluídas antes de a instância do Looker (núcleo do Google Cloud) ser criada. Não é possível ativar chaves de criptografia gerenciadas pelo cliente em instâncias atuais.
  • As edições de instância precisam ser Enterprise ou Incorporar.

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

Nesta página, você vai encontrar as etapas a seguir para configurar a CMEK em uma instância do Looker (Google Cloud Core).

  1. Configure seu ambiente.
  2. Somente usuários da CLI do Google Cloud, do Terraform e da API:crie uma conta de serviço para cada projeto que exige chaves de criptografia gerenciadas pelo cliente, se uma conta de serviço do Looker não tiver sido configurada para o projeto.
  3. Crie um keyring e uma chave e defina o local da chave. O local é a região do Google Cloud em que você quer criar a instância do Looker (Google Cloud Core).
  4. Somente usuários da CLI, do Terraform e da API do Google Cloud: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 à conta de serviço o acesso à chave.
  5. Somente usuários da CLI, do Terraform e da API do Google Cloud:conceda à conta de serviço o acesso à chave.
  6. Acesse seu projeto e crie uma instância do Looker (núcleo do Google Cloud) com as seguintes opções:
    1. Selecione o mesmo local usado pela chave de criptografia gerenciada pelo cliente.
    2. Defina a edição como Enterprise ou Embed.
    3. Ative a configuração da chave gerenciada pelo cliente.
    4. Adicione a chave de criptografia gerenciada pelo cliente por nome ou ID.

Depois que todas essas etapas forem concluídas, a instância do Looker (Google Cloud Core) será ativada com a CMEK.

Antes de começar

Se ainda não tiver feito isso, verifique se o ambiente está configurado para seguir as instruções desta página. Siga as etapas desta seção para garantir que a configuração esteja correta.

  1. No Google Cloud console, na página do seletor de projetos, selecione ou crie um Google Cloud projeto. Observação:se você não pretende manter os recursos criados neste procedimento, crie um projeto novo em vez de selecionar um que já existe. Depois de concluir essas etapas, é possível excluir o projeto, o que remove os recursos associados a ele.

    Acessar o seletor de projetos

  2. Verifique se o faturamento foi ativado para o Google Cloud projeto. Saiba como verificar se o faturamento está ativado em um projeto.
  3. Instale a CLI do Google Cloud.
  4. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
    

  5. Ative a API Cloud Key Management Service.

    Ativar a API

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

    Ativar a API

Funções exigidas

Para entender os papéis necessários para configurar a CMEK, acesse a página Controle de acesso com o IAM da documentação do Cloud Key Management Service.

Para criar uma instância do Looker (Google Cloud Core), é preciso ter o papel do IAM de Administrador do Looker no projeto em que a instância do Looker (Google Cloud Core) foi criada. Para ativar a CMEK na instância no console do Google Cloud, verifique se você tem a função do IAM Criptografador/Descriptografador da CryptoKey do Cloud KMS na chave que está sendo usada para a CMEK.

Se você precisar conceder à conta de serviço do Looker acesso a uma chave do Cloud KMS, será necessário ter o papel de IAM Administrador do Cloud KMS na chave que está sendo usada.

Criar uma conta de serviço

Se você estiver usando a CLI do Google Cloud, o Terraform ou a API para criar sua instância do Looker (núcleo do Google Cloud) e uma conta de serviço do Looker não tiver sido criada para o projeto Google Cloud em que ela vai residir, será necessário criar uma conta de serviço para esse projeto. Se você for criar mais de uma instância do Looker (núcleo do Google Cloud) no projeto, a mesma conta de serviço será aplicada a todas as instâncias do Looker (núcleo do Google Cloud) nesse projeto, e a criação da conta de serviço precisa ser feita apenas uma vez. Se você usar o console para criar uma instância, o Looker (Google Cloud Core) vai criar automaticamente a conta de serviço e conceder acesso à chave CMEK conforme você configura a opção Usar uma chave de criptografia gerenciada 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, receber 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.

No momento, só é possível usar comandos da CLI do Google Cloud para criar o tipo de conta de serviço necessário para chaves de criptografia gerenciadas pelo cliente. Se você estiver usando o console do Google Cloud, o Looker (núcleo do Google Cloud) vai criar essa conta de serviço automaticamente.

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 em que a instância do Looker (núcleo do Google Cloud) está armazenada.

Esse comando cria a conta de serviço e retorna o nome dela. Você usa esse nome de conta de serviço durante o procedimento em Como conceder acesso à chave para a conta de serviço.

Após criar a conta de serviço, aguarde alguns minutos para que ela seja propagada.

Crie um keyring e uma chave.

É possível criar a chave no mesmo projeto Google Cloud que a instância do Looker (Google Cloud Core) ou em um projeto de usuário separado. O local do keyring do Cloud KMS precisa corresponder à região em que você quer criar a instância do Looker (Google Cloud Core). 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 Looker (Google Cloud Core) falhará se as regiões não corresponderem.

Siga as instruções nas páginas de documentação Criar um keyring e Criar uma chave para criar um keyring e uma chave que atendam aos dois critérios a seguir:

  • O campo Local do keyring precisa corresponder à região que você vai definir para a instância do Looker (Google Cloud Core).
  • O campo Finalidade da chave precisa ser Criptografar/descriptografar simétrico.

Consulte a seção Girar a chave para saber como fazer isso e criar novas versões.

Copie ou anote o KMS_KEY_ID e o KMS_KEYRING_ID

Se você estiver usando a CLI do Google Cloud, o Terraform ou a API para configurar sua instância do Looker (núcleo do Google Cloud), siga as instruções na página de documentação Como conseguir um ID de recurso do Cloud KMS para localizar os IDs de recurso do chaveiro e da chave que você acabou de criar. 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 à conta de serviço o acesso à chave.

Conceda à conta de serviço acesso a chave

Você só precisa realizar este procedimento se as duas condições a seguir forem verdadeiras:

  • Você está usando a CLI do Google Cloud, o Terraform ou a API.
  • A conta de serviço ainda não tem acesso à chave. Por exemplo, se já houver uma instância do Looker (núcleo do Google Cloud) no mesmo projeto que usa a mesma chave, não será necessário conceder acesso. Se o acesso à chave já tiver sido concedido por outra pessoa, não será necessário conceder acesso.

Você precisa ter a função do IAM Administrador do Cloud KMS na chave que está sendo 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:

  • KMS_KEY_ID: o ID da chave do KMS
  • REGION: a região em que o Looker (Google Cloud Core) é criado e o local do keyring
  • KMS_KEYRING_ID: o ID do keyring do KMS
  • SERVICE_ACCOUNT_NAME: o nome da conta de serviço retornado quando você criou a conta de serviço

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

Criar uma instância do Looker (Google Cloud Core) com a CMEK

Para criar uma instância com chaves de criptografia gerenciadas pelo cliente no Google Cloud console, siga as etapas na seção Criar um chaveiro e uma chave, mostrada anteriormente, para criar um chaveiro e uma chave na mesma região que você vai usar para a instância do Looker (núcleo do Google Cloud). Em seguida, usando as configurações a seguir, 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 configurações de CMEK, selecione uma das seguintes opções:

Console

  1. Verifique se você tem a função do IAM Criptografador/Descriptografador do CryptoKey do Cloud KMS na chave que está sendo usada para a CMEK.
  2. Na seção Edição da página Criar uma instância, selecione Enterprise ou Inserir para usar a CMEK.
  3. Na seção Criptografia da página Criar uma instância, selecione o botão de opção Chave de criptografia gerenciada pelo cliente (CMEK). Isso revela um campo suspenso Selecionar uma chave gerenciada pelo cliente.
  4. No campo Selecionar uma chave gerenciada pelo cliente, defina a chave que você quer usar. A chave precisa estar em um keyring com um local definido como a mesma região da instância do Looker (Google Cloud Core) que você está criando. Caso contrário, a criação da instância vai falhar. É possível selecionar a chave usando um dos dois métodos a seguir:
    1. Selecione o nome da chave na lista suspensa:as chaves disponíveis no seu projeto do Google Cloud aparecem em uma lista suspensa. Depois de selecionar a chave, clique em OK.
    2. Insira o ID do recurso da chave:clique no texto Não encontrou sua chave? Inserir o ID de recurso da chave, que aparece na parte de baixo do menu suspenso.Isso revela uma caixa de diálogo Enter key resource ID, em que você pode inserir o ID da chave. Depois de inserir o ID, selecione Salvar.
  5. Depois de selecionar uma chave, uma mensagem vai aparecer solicitando que você conceda permissão à conta de serviço para usar a chave. Clique no botão Permitir.
  6. Uma mensagem vai aparecer se a conta de serviço não tiver permissão para criptografar e descriptografar com a chave selecionada. Se isso acontecer, clique em Conceder para conceder à conta de serviço o papel de IAM do criptografador/descriptografador do Cloud KMS CryptoKey na chave 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:

  • INSTANCE_NAME: um nome para sua instância do Looker (Google Cloud Core), que não está associado ao URL da instância
  • PROJECT_ID: o nome do Google Cloud projeto em que você está criando a instância do Looker (Google Cloud Core)
  • OAUTH_CLIENT_ID e OAUTH_CLIENT_SECRET: o ID do cliente e a chave secreta OAuth que você criou ao configurar seu cliente OAuth. Depois que a instância for criada, insira o URL dela na seção URIs de redirecionamento autorizados do cliente OAuth.
  • KMS_KEY_ID: o ID da chave do KMS
  • REGION: a região em que sua instância do Looker (Google Cloud Core) está hospedada. As regiões disponíveis estão listadas na página de documentação Locais do Looker (Google Cloud Core).
  • EDITION: para ativar o CMEK, EDITION precisa ser core-embed-annual ou core-enterprise-annual.
  • CONSUMER_NETWORK: sua rede VPC ou VPC compartilhada. Precisa ser definido se você estiver criando uma instância de IP particular.
  • RESERVED_RANGE: o intervalo de endereços IP na VPC em que o Google provisionará uma sub-rede para sua instância do Looker (Google Cloud Core). Precisa ser definido se você estiver criando uma instância de IP particular.

É possível incluir as seguintes flags:

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

Terraform

Use o recurso do Terraform a seguir para provisionar uma instância do Looker (Google Cloud Core) Enterprise com uma conexão de rede particular:

# 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 Comandos básicos do Terraform.

Sua instância do Looker (Google Cloud Core) agora está ativada com a CMEK.

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

Depois de criar uma instância do Looker (Google Cloud Core), verifique se a CMEK está ativada.

Para saber se o CMEK está ativado, selecione uma das seguintes opções:

Console

  1. No Google Cloud console, acesse a página Instâncias do Looker.
  2. Clique no nome de uma instância para abrir a página Detalhes. Se uma instância tiver a CMEK ativada, uma linha Criptografia vai indicar a criptografia usada para a instância. O campo Chave de criptografia gerenciada pelo cliente (CMEK) mostra o identificador da chave.

gcloud

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

Substitua:

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

Esse comando precisa retornar um kmsKeyName, um kmsKeyNameVersion e um kmsKeyState para confirmar que a instância foi configurada com o CMEK.

Usar o Cloud External Key Manager (Cloud EKM)

Para proteger dados em instâncias do Looker (núcleo do Google Cloud), use chaves gerenciadas em um parceiro externo de gerenciamento de chaves com suporte. Para mais informações, consulte a página de documentação do Gerenciador de chaves externo do Cloud, incluindo a seção Considerações.

Quando estiver tudo pronto para criar uma chave do Cloud EKM, consulte a seção Como funciona da página de documentação do Gerenciador de chaves externas do Cloud. Depois que a chave for criada, informe o nome da chave ao criar uma instância do Looker (Google Cloud Core).

O Google não controla a disponibilidade de chaves em um sistema parceiro de gerenciamento de chaves externas.

Gire a chave

Você pode fazer a rotação da chave para ajudar a promover a segurança. Cada vez que a chave é girada, uma nova versão é criada. Para saber mais sobre a rotação de chaves, consulte a página de documentação Rotação de chaves.

Se você alternar a chave usada para proteger sua instância do Looker (Google Cloud Core), a versão anterior ainda será necessária para acessar os backups ou as exportações feitas quando essa versão estava em uso. Por isso, o Google recomenda manter a versão anterior da chave ativada por pelo menos 45 dias após a rotação para garantir que esses itens permaneçam acessíveis. As versões de chave são mantidas por padrão até serem desativadas ou destruídas.

Desativar e reativar versões de chave

Consulte as páginas de documentação a seguir:

Se uma versão da chave usada para ajudar a proteger uma instância do Looker (Google Cloud Core) for desativada, a instância do Looker (Google Cloud Core) será obrigada a parar de operar, limpar todos os dados sensíveis não criptografados que ela possa ter na memória e esperar até que a chave fique disponível novamente. O processo é o seguinte:

  1. A versão da chave usada para ajudar a proteger uma instância do Looker (núcleo do Google Cloud) está desativada.
  2. Em aproximadamente 15 minutos, a instância do Looker (núcleo do Google Cloud) detecta que a versão da chave foi revogada, para de operar e limpa todos os dados criptografados na memória.
  3. Depois que a instância para de operar, as chamadas para as APIs do Looker retornam uma mensagem de erro.
  4. Depois que a instância para de funcionar, a interface do Looker (Google Cloud Core) retorna uma mensagem de erro.
  5. Se você reativar a versão da chave, será necessário acionar manualmente uma reinicialização da instância.

Se você desativar uma versão da chave e não quiser esperar que a instância do Looker (Google Cloud Core) seja interrompida sozinha, é possível acionar manualmente uma reinicialização para que a instância do Looker (Google Cloud Core) detecte a versão da chave revogada imediatamente.

Como destruir versões de chaves

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

Se uma versão de chave usada para ajudar a proteger uma instância do Looker (núcleo do Google Cloud) for destruída, a instância do Looker ficará inacessível. A instância precisa ser excluída, e você não poderá acessar os dados dela.

Resolver problemas

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

As operações de administrador do Looker (núcleo do Google Cloud), como criar ou atualizar, podem falhar devido a erros do Cloud KMS e ausência de funções 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 Looker (núcleo do Google Cloud). Use a tabela de solução de problemas a seguir para diagnosticar e resolver problemas comuns.

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

Mensagem de erro Possíveis causas Estratégias para solução de problemas
Conta de serviço por produto, por projeto não encontrada O nome da conta de serviço está incorreto. Verifique se você criou 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 à sua conta de usuário ou serviço.

ACESSAR A PÁGINA "CONTAS DO 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 instância do Looker (Google Cloud Core) precisa ser excluída.
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.

ACESSE A PÁGINA "GERENCIAMENTO DE CHAVES"

Permissão insuficiente para usar a chave do Cloud KMS O papel cloudkms.cryptoKeyEncrypterDecrypter está ausente na conta de usuário ou de serviço que você está usando para executar operações em instâncias do Looker (núcleo do Google Cloud) ou a versão da chave do Cloud KMS não existe.

Adicione a função cloudkms.cryptoKeyEncrypterDecrypter à sua conta de usuário ou serviço.

ACESSAR A PÁGINA "CONTAS DO IAM"

Se o papel já estiver na sua conta, consulte a seção Criar um keyring e uma chave para saber como criar uma nova versão da chave. Em seguida, conclua as etapas de criação da instância novamente.

A chave do Cloud KMS não foi encontrada A versão da chave não existe. Crie uma nova versão da chave e siga as etapas de criação de instância novamente. Consulte a seção Criar um keyring e uma chave.
A instância do Looker (núcleo do Google Cloud) 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 (Google Cloud Core) 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 e conclua as etapas de criação de instâncias novamente. Consulte a seção Criar um keyring e uma chave.

A seguir