Criar uma conexão do EKM

Nesta página, mostramos como configurar o gerenciador de chaves externas do Cloud (Cloud EKM) para se conectar ao provedor de gerenciamento de chaves externo (EKM, na sigla em inglês) em uma rede de nuvem privada virtual (VPC).

É possível usar chaves externas sobre VPC em locais do Cloud KMS que aceitam o EKM via VPC. Para mais informações, consulte a página Locais do Cloud KMS.

Terminologia

  • Conexão EKM

    O recurso do Cloud KMS usado para configurar uma conexão com o gerenciador de chaves externo. No console do Google Cloud, isso é chamado de EKM via conexão VPC.

  • Projeto de VPC

    O projeto que contém o recurso de VPC usado para se conectar ao gerenciador de chaves externo.

  • Principais projetos

    Os projetos que contêm recursos de conexão e chaves do Cloud EKM no Cloud KMS. Um projeto principal pode ser igual a um projeto VPC, mas não é obrigatório.

  • Espaço de criptografia

    Um contêiner para seus recursos no parceiro de gerenciamento de chaves externo. Seu espaço de criptomoeda é identificado por um caminho exclusivo. O formato do caminho do espaço de criptografia varia de acordo com o parceiro de gerenciamento de chaves externo, por exemplo, v0/cryptospaces/YOUR_UNIQUE_PATH.

Antes de começar

Depois de concluir as etapas abaixo, comece a usar as chaves do Cloud EKM para proteger seus dados.

Criar um novo projeto

  1. No console do Google Cloud, acesse a página "Gerenciar recursos".

    Acessar a página "Gerenciar recursos"

  2. Crie um novo projeto do Google Cloud ou selecione um projeto atual.

  3. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  4. Saiba mais sobre os preços do Cloud EKM.

Ativar o Cloud KMS

  1. Ative a API Cloud Key Management Service para o projeto.

    Ativar a API Cloud Key Management Service

  2. Anote a conta de serviço do Cloud EKM do seu projeto. No exemplo a seguir, substitua PROJECT_NUMBER pelo número do seu projeto do Google Cloud. Essas informações também ficam visíveis sempre que você usa o console do Google Cloud para criar uma chave do Cloud EKM.

    service-PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.com
    

Verifique se a CLI gcloud está atualizada

Se você for usar a Google Cloud CLI, verifique se ela está atualizada com o seguinte comando:

CLI da gcloud

gcloud components update

Preparar uma rede VPC

Há duas opções ao configurar uma rede VPC:

Por padrão, os novos projetos contêm uma rede de modo automático pré-preenchida com regras de firewall. Se a rede VPC não for usada para fins de produção, a rede de modo automático padrão será a maneira mais rápida de começar.

Se o gerenciador de chaves externo estiver em execução no local e você se conectar a ele por meio de conectividade híbrida, use uma rede de modo personalizado, porque ela fornece controle sobre os intervalos de endereços IP da sub-rede.

Siga estas etapas para configurar a VPC:

  1. ativar o Acesso privado do Google

    O gerenciador de chaves externo precisa verificar o token OIDC contido em cada solicitação. Para verificar o token, ele precisa recuperar a chave pública OAuth2 do nome de domínio www.googleapis.com. Se o gerenciador de chaves externo for executado no Google Cloud e não tiver acesso pela Internet (por exemplo, uma VM sem IP externo ou bloqueada por um firewall), siga as instruções para configurar o acesso privado do Google.

  2. Configuração de firewall para o intervalo de IP 35.199.192.0/19

    As solicitações do Cloud EKM virão desse intervalo. Crie regras de firewall de entrada e saída para TCP na porta em que o gerenciador de chaves externo está detectando.

Configurar a conectividade híbrida

Se o gerenciador de chaves externo estiver em execução no local, use uma solução de conectividade híbrida para conectar a VPC à rede local. Depois de configurar a conectividade, siga estas outras etapas:

  1. ativar o Acesso privado do Google

    O gerenciador de chaves externo precisa verificar o token OIDC contido em cada solicitação. Para verificar o token, ele precisa recuperar a chave pública OAuth2 do nome de domínio www.googleapis.com. Se o gerenciador de chaves externo for executado no local e não tiver acesso pela Internet, siga as instruções para configurar o acesso privado do Google para hosts locais.

  2. Configuração de firewall para o intervalo de IP 35.199.192.0/19

    As solicitações do Cloud EKM virão desse intervalo. Configure o firewall de rede local ou equipamento semelhante para permitir o tráfego TCP na porta em que o gerenciador de chaves externo está atendendo.

  3. Verifique se a VPC tem uma rota de retorno para o intervalo de IP 35.199.192.0/19

    A rede local precisa ter uma rota para o destino 35.199.192.0/19. Para mais informações sobre como atender a esse requisito, consulte estratégias de rota de retorno para destinos locais.

Estratégias de rota de retorno para destinos no local

  • Para túneis do Cloud VPN que usam roteamento estático, crie manualmente uma rota na rede local que tenha o destino 35.199.192.0/19 e o próximo salto seja o túnel do Cloud VPN. Para túneis do Cloud VPN que usam roteamento com base na política, configure o seletor de tráfego local do Cloud VPN e o seletor de tráfego remoto do gateway da VPN local para incluir 35.199.192.0/19.

  • Para túneis do Cloud VPN que usam roteamento dinâmico ou para o Cloud Interconnect, configure uma divulgação de rota personalizada para 35.199.192.0/19 na sessão do BGP do Cloud Router que gerencia o túnel ou o anexo da VLAN.

Configurar o gerenciador de chaves externo

Siga as instruções do seu provedor de EKM para configurá-lo.

Configure seu espaço de criptomoedas

Se você usa o Cloud EKM como parte de um acordo de EKM gerenciado pelo parceiro, estas etapas foram concluídas para você como parte do processo de provisionamento do seu parceiro.

Se o provedor de EKM for compatível com o gerenciamento de chaves EKM do Cloud KMS, será necessário realizar as seguintes etapas de configuração no EKM:

  • Crie um espaço de cripto para seus recursos gerenciados pelo Cloud KMS no seu EKM.

  • Conceda à sua conta de serviço do Cloud KMS acesso ao espaço de cripto e às chaves criadas nele.

  • Configure a política de justificativas de acesso às chaves para definir quais justificativas de acesso precisam ser permitidas ou negadas.

O processo exato para cada uma dessas etapas depende do seu EKM. Para mais informações, consulte a documentação do seu provedor de EKM.

Criar um endpoint de serviço do Diretório de serviços

Crie e configure um endpoint de serviço do Diretório de serviços no projeto de VPC que aponte para o endereço IP particular e a porta do gerenciador de chaves externo. Se você estiver usando um balanceador de carga na frente de várias réplicas do EKM, use o endereço IP e a porta do balanceador de carga. Verifique se o campo network do endpoint de serviço do Diretório de serviços está preenchido.

Autorizar o acesso do Cloud EKM à VPC

Para cada projeto principal, é necessário autorizar o Cloud EKM a acessar a VPC em nome dele, mesmo que o projeto principal e o projeto de VPC sejam os mesmos. Ao autorizar o acesso, as chaves no projeto da chave podem usar a VPC no projeto da VPC.

  1. Verifique se existe uma conta de serviço do Cloud EKM para o projeto.

    CLI da gcloud

    gcloud beta services identity create \
      --service=cloudkms.googleapis.com \
      --project=KEY_PROJECT_ID
    
  2. Conceda a servicedirectory.viewer e a servicedirectory.pscAuthorizedService no projeto de VPC a service-KEY_PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.com. Se precisar de ajuda para conseguir o ID e o número do projeto, consulte Como criar e gerenciar projetos.

    CLI da gcloud

    gcloud projects add-iam-policy-binding VPC_PROJECT_ID \
      --member='serviceAccount:service-KEY_PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.com' \
      --role='roles/servicedirectory.viewer'
    
    gcloud projects add-iam-policy-binding VPC_PROJECT_ID \
      --member='serviceAccount:service-KEY_PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.com' \
      --role='roles/servicedirectory.pscAuthorizedService'
    

Criar uma conexão do EKM

Para conectar o gerenciador de chaves externo ao Cloud EKM, crie uma conexão EKM no seu projeto de chave.

Console

  1. No console do Google Cloud, acesse a página Infraestrutura do KMS.

    Acessar a infraestrutura do KMS

  2. Clique em Criar conexão.

  3. Em Nome da conexão, insira um nome para sua conexão.

  4. Em Região, selecione um local para a conexão do EKM. Todas as chaves do Cloud KMS associadas a essa conexão precisam estar no mesmo local.

  5. No campo ID do recurso do serviço (self_link), insira o valor do serviço do Diretório de serviços criado na seção Criar um endpoint de serviço do Diretório de serviços. O serviço do diretório de serviços precisa estar no mesmo local da conexão.

  6. No campo Nome do host, adicione o nome do host do gerenciador de chaves externo.

  7. Em Certificados, clique em Adicionar certificado para fazer upload de um ou mais certificados de servidor X.509 para o gerenciador de chaves externo. Os certificados precisam estar no formato DER.

  8. Em Modo de gerenciamento do EKM, selecione Manual para usar a conexão do EKM para chaves externas gerenciadas manualmente ou selecione Cloud KMS para usar a conexão do EKM para chaves externas coordenadas.

  9. Se você selecionou Cloud KMS para o Modo de gerenciamento EKM, no campo Caminho do espaço de criptografia, insira o caminho do espaço de criptografia fornecido pelo EKM.

  10. Opcional. Para definir a conexão EKM como a conexão padrão para este projeto e local, marque a caixa de seleção Definir conexão como padrão. Se outra conexão EKM estiver definida como padrão para esse projeto e local, essa conexão EKM vai substituir o padrão atual.

  11. Clique em Criar.

gcloud

Para usar o Cloud KMS na linha de comando, primeiro instale ou faça upgrade para a versão mais recente da Google Cloud CLI.

Para criar uma conexão EKM para chaves externas gerenciadas manualmente, execute o seguinte comando:

gcloud beta kms ekm-connections create EKM_CONNECTION \
    --location LOCATION \
    --service-directory-service SERVICE_DIRECTORY_SERVICE \
    --hostname HOSTNAME \
    --server-certificates-files SERVER_CERTIFICATE_FILES \
    --key-management-mode manual

Substitua:

  • EKM_CONNECTION: um nome para a conexão EKM.
  • LOCATION: o local do Cloud KMS em que você quer criar a conexão EKM. Todas as chaves do Cloud KMS associadas a essa conexão precisam estar no mesmo local que a conexão.
  • SERVICE_DIRECTORY_SERVICE: o ID do recurso do serviço do Diretório de serviços para sua conexão.
  • HOSTNAME: o nome do host do gerenciador de chaves externo.
  • SERVER_CERTIFICATE_FILES: uma lista de arquivos separados por vírgulas que contêm certificados do servidor X.509 para o gerenciador de chaves externo. Os certificados precisam estar no formato DER.

Para criar uma conexão EKM para chaves externas coordenadas, execute o seguinte comando:

gcloud beta kms ekm-connections create EKM_CONNECTION \
    --location LOCATION \
    --service-directory-service SERVICE_DIRECTORY_SERVICE \
    --hostname HOSTNAME \
    --server-certificates-files SERVER_CERTIFICATE_FILES \
    --key-management-mode cloud-kms \
    --crypto-space-path CRYPTO_SPACE_PATH

Substitua:

  • EKM_CONNECTION: um nome para a conexão EKM.
  • LOCATION: o local do Cloud KMS em que você quer criar a conexão EKM. Todas as chaves do Cloud KMS associadas a essa conexão precisam estar no mesmo local que a conexão.
  • SERVICE_DIRECTORY_SERVICE: o ID do recurso do serviço do Diretório de serviços para sua conexão.
  • HOSTNAME: o nome do host do gerenciador de chaves externo.
  • SERVER_CERTIFICATE_FILES: uma lista de arquivos separados por vírgulas que contêm certificados do servidor X.509 para o gerenciador de chaves externo. Os certificados precisam estar no formato DER.
  • CRYPTO_SPACE_PATH: o caminho do espaço de criptografia fornecido pelo provedor do EKM.

Para informações sobre todas as sinalizações e valores possíveis, execute o comando com a sinalização --help.

API

Estes exemplos usam curl como um cliente HTTP para demonstrar o uso da API. Para mais informações sobre controle de acesso, consulte Como acessar a API Cloud KMS.

Para criar uma conexão EKM para chaves externas coordenadas, execute o seguinte comando:

curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ekmConnections" \
    --request "POST" \
    --header "authorization: Bearer TOKEN" \
    --header "content-type: application/json" \
    --header "x-goog-user-project: PROJECT_ID" \
    --data '{
      "name": "EKM_CONNECTION",
      "serviceResolvers": [
        {
          "serviceDirectoryService": "SERVICE_DIRECTORY_SERVICE",
          "hostname": "HOSTNAME",
          "serverCertificates": [
            {
              SERVER_CERTIFICATES
            }
          ]
        }
      ]
      "keyManagementMode": "CLOUD_KMS",
      "cryptoSpacePath": "CRYPTO_SPACE_PATH"
    }'

Substitua:

  • PROJECT_ID: o ID do projeto em que você quer criar a conexão EKM.
  • LOCATION: o Cloud KMS em que você quer criar a conexão do EKM.
  • EKM_CONNECTION: o nome a ser usado para a conexão do EKM.
  • SERVER_CERTIFICATES: uma lista de até 10 objetos Certificate que representam certificados de servidor folha.
  • HOSTNAME: o nome do host do gerenciador de chaves externo.
  • CRYPTO_SPACE_PATH: o caminho do espaço de criptografia fornecido pelo provedor do EKM.

Para criar uma conexão EKM para chaves externas gerenciadas manualmente, execute o seguinte comando:

curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ekmConnections" \
    --request "POST" \
    --header "authorization: Bearer TOKEN" \
    --header "content-type: application/json" \
    --header "x-goog-user-project: PROJECT_ID" \
    --data '{
      "name": "EKM_CONNECTION",
      "serviceResolvers": [
        {
          "serviceDirectoryService": "SERVICE_DIRECTORY_SERVICE",
          "hostname": "HOSTNAME",
          "serverCertificates": [
            {
              SERVER_CERTIFICATES
            }
          ]
        }
      ]
    }'

Substitua:

  • PROJECT_ID: o ID do projeto em que você quer criar a conexão EKM.
  • LOCATION: o Cloud KMS em que você quer criar a conexão do EKM.
  • EKM_CONNECTION: o nome a ser usado para a conexão do EKM.
  • SERVER_CERTIFICATES: uma lista de até 10 objetos Certificate que representam certificados de servidor folha.
  • HOSTNAME: o nome do host do gerenciador de chaves externo.

Consulte a documentação da API EkmConnection.create para mais informações.

Status do certificado

Depois de fazer upload de um certificado para sua conexão do EKM, é possível verificar o status geral do certificado da conexão do EKM, bem como o status de cada certificado na página de infraestrutura do KMS.

As conexões EKM têm um status geral na coluna Status do certificado de cada conexão. Se uma conexão EKM tiver um status diferente de Ativa, recomendamos atualizar os certificados na conexão do EKM.

As conexões EKM e certificados individuais podem ter o seguinte status:

  • Ativo: o certificado é válido e está próximo da data de expiração.
  • Expira em 30 dias: o certificado é válido, mas tem uma data de validade nos próximos 30 dias.
  • Expirado: o certificado expirou e não é mais válido. Recomendamos atualizar os certificados expirados.
  • Ainda não é válido: o certificado não está ativo. Isso pode acontecer se a data de início do certificado for no futuro.

Se o certificado não for mais válido, atualize a conexão do EKM no console do Google Cloud.

Console

  1. No console do Google Cloud, acesse a página Infraestrutura do KMS.

    Acessar a infraestrutura do KMS

  2. Clique no nome do EKM via conexão VPC com o certificado que precisa ser atualizado.

  3. Clique em Editar conexão.

  4. Clique em Adicionar certificado para fazer upload de um ou mais certificados de servidor X.509 para o gerenciador de chaves externo. Os certificados precisam estar no formato DER.

  5. Remova os certificados expirados. Passe o cursor sobre o certificado expirado e selecione o ícone Excluir à direita.

  6. Clique em Atualizar conexão para atualizar o EKM usando a conexão VPC.

Definir uma conexão EKM como padrão

É possível definir uma conexão EKM como padrão para um determinado projeto e local. Quando uma conexão EKM padrão é definida para um projeto e um local, os novos Cloud EKM por chaves VPC criadas em keyrings nesse local usam a conexão EKM indicada, a menos que outra conexão EKM seja selecionada.

Para definir uma conexão EKM como padrão para o projeto e o local, siga estas etapas:

Console

  1. No console do Google Cloud, acesse a página Infraestrutura do KMS.

    Acessar a infraestrutura do KMS

  2. Clique na conexão EKM que você quer definir como padrão.

  3. Clique em Editar conexão.

  4. Em Conexão padrão, marque a caixa de seleção Definir a conexão como padrão para LOCATION.

  5. Clique em Atualizar conexão.

CLI da gcloud

gcloud beta kms ekm-config update
  --location=LOCATION
  --default-ekm-connection=projects/PROJECT_ID/locations/LOCATION/ekmConnections/DEFAULT_EKM_CONNECTION

Substitua:

  • LOCATION: o Cloud KMS em que você quer definir a conexão EKM padrão.
  • PROJECT_ID: o nome do projeto em que você quer definir a conexão EKM padrão.
  • DEFAULT_EKM_CONNECTION: o nome da conexão EKM que você quer definir como padrão para esse local. O local da conexão do EKM precisa corresponder ao local fornecido em LOCATION.

API

Para definir a conexão EKM padrão de um local, use o método EkmConfig.patch:

curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ekmConfig" \
    --request "PATCH" \
    --header "authorization: Bearer TOKEN" \
    --header "content-type: application/json" \
    --data '{"defaultEkmConnection": "projects/PROJECT_ID/locations/LOCATION/ekmConnections/DEFAULT_EKM_CONNECTION"}'

Substitua:

  • PROJECT_ID: o ID do projeto em que você quer definir uma conexão EKM padrão.
  • LOCATION: o Cloud KMS em que você quer definir a conexão EKM padrão.
  • DEFAULT_EKM_CONNECTION: o nome da conexão EKM que você quer definir como padrão para esse local. O local da conexão do EKM precisa corresponder ao local fornecido em LOCATION.

Se outra conexão EKM tiver sido definida como padrão para esse local, a conexão EKM selecionada a substituirá como padrão. Apenas uma conexão EKM pode ser padrão para um determinado projeto e local.

A seguir