Criar uma conexão EKM

Esta página mostra como configurar o Gerenciador de chaves externas do Cloud (Cloud EKM) para se conectar ao seu provedor de gerenciamento de chaves externas (EKM) em uma rede de nuvem privada virtual (VPC).

É possível usar chaves externas na VPC em locais do Cloud KMS que ofereçam suporte ao EKM pela 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 externas. No console do Google Cloud, isso é chamado de EKM via conexão VPC.

  • Projeto de VPC

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

  • Projetos principais

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

  • Espaço criptográfico

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

Antes de começar

Depois de concluir as etapas abaixo, você poderá começar a usar as chaves do Cloud EKM para proteger seus dados.

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

  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 comando a seguir:

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 que é preenchida com regras de firewall. Se a rede VPC não for usada para fins de produção, a rede padrão de modo automático é a maneira mais rápida de começar.

Se o gerenciador de chaves externo estiver em execução no local e você for se conectar a ele por meio de conexão híbrida, use uma rede de modo personalizado, porque ela oferece 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, é necessário 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 um IP externo ou bloqueada por um firewall), siga as instruções para configurar o Acesso privado do Google.

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

    As solicitações do Cloud EKM vêm deste intervalo. Crie regras de firewall de entrada e saída para TCP para a porta em que o gerenciador de chaves externo está escutando.

Configurar a conectividade híbrida

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

  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, é necessário extrair a chave pública OAuth2 do nome de domínio www.googleapis.com. Se o gerenciador de chaves externo for executado localmente e não tiver acesso pela Internet, siga as instruções para configurar o Acesso privado do Google para hosts locais.

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

    As solicitações do Cloud EKM vêm deste intervalo. Configure seu firewall de rede local ou equipamento semelhante para permitir o tráfego TCP na porta em que o gerenciador de chaves externo está escutando.

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

    Sua rede local precisa ter uma rota para o destino 35.199.192.0/19. Saiba mais sobre como atender a esse requisito em Retornar estratégias de rota para destinos locais.

Estratégias de rota de retorno para destinos locais

  • Para túneis do Cloud VPN que usam roteamento estático, crie manualmente uma rota na rede local com o destino 35.199.192.0/19 e o próximo salto sendo 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 o Cloud Interconnect, configure o modo de divulgação 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.

Configurar o Crypto Space

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

Se o provedor de EKM for compatível com o gerenciamento de chaves do EKM do Cloud KMS, as etapas de configuração a seguir precisarão ser feitas no EKM:

  • Crie um espaço criptográfico para seus recursos gerenciados pelo Cloud KMS no EKM.

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

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

O processo exato de 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 da VPC que aponte para o endereço IP e a porta particulares do gerenciador de chaves externo. Se você estiver usando um balanceador de carga em 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 do serviço do Diretório de serviços está preenchido.

Autorizar o acesso do Cloud EKM à VPC

Para cada projeto de chaves, você precisa autorizar o Cloud EKM a acessar sua VPC em nome desse projeto, mesmo que o projeto de chaves e o projeto de VPC sejam os mesmos. Ao autorizar o acesso, as chaves no projeto de chaves podem usar a VPC no projeto de VPC.

  1. Verifique se há 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 os papéis servicedirectory.viewer e servicedirectory.pscAuthorizedService no seu projeto de VPC a service-KEY_PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.com. Para receber ajuda com o ID e o número do projeto, consulte 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 EKM

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

Console

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

    Acesse a infraestrutura do KMS

  2. Clique em Criar conexão.

  3. Em Nome da conexão, insira um nome para a 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 que a conexão.

  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 de diretório de serviço precisa estar no mesmo local que a conexão.

  6. No campo Hostname, 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. Para o 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 do EKM, insira o caminho do espaço criptográfico fornecido pelo EKM no campo Caminho do espaço criptográfico.

  10. Opcional. Para definir a conexão do EKM como padrão para este projeto e local, marque a caixa de seleção Definir a conexão como padrão. Se outra conexão EKM estiver definida como padrão para esse projeto e local, ela vai substituir a 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 do EKM.
  • LOCATION: o local do Cloud KMS em que você quer criar a conexão do 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 de 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 do EKM.
  • LOCATION: o local do Cloud KMS em que você quer criar a conexão do 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 de servidor X.509 para o gerenciador de chaves externo. Os certificados precisam estar no formato DER.
  • CRYPTO_SPACE_PATH: o caminho do espaço criptográfico fornecido pelo provedor de 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 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 de folha.
  • HOSTNAME: o nome do host do gerenciador de chaves externo.
  • CRYPTO_SPACE_PATH: o caminho do espaço criptográfico fornecido pelo provedor de 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 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 de 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 a 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 Ativo, recomendamos atualizar os certificados na sua conexão EKM.

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

  • Ativo: o certificado é válido e não está se aproximando da data de validade.
  • 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 todos 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 estiver no futuro.

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

Console

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

    Acesse a infraestrutura do KMS

  2. Clique no nome do EKM pela 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 uma 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 local, as novas chaves do Cloud EKM por VPC criadas em chaveiros nesse local usam a conexão EKM indicada, a menos que outra conexão EKM seja selecionada.

Para definir uma conexão de 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.

    Acesse 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 para o qual você quer definir a conexão EKM padrão.
  • PROJECT_ID: o nome do projeto para o qual você quer definir a conexão de EKM padrão.
  • DEFAULT_EKM_CONNECTION: o nome da conexão do EKM que você quer definir como padrão para esse local. O local da conexão EKM precisa corresponder ao local informado em LOCATION.

API

Para definir a conexão de EKM padrão para 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 para o qual você quer definir uma conexão EKM padrão.
  • LOCATION: o Cloud KMS para o qual você quer definir a conexão EKM padrão.
  • DEFAULT_EKM_CONNECTION: o nome da conexão de EKM que você quer definir como padrão para esse local. O local da conexão do EKM precisa corresponder ao local informado em LOCATION.

Se outra conexão de EKM tiver sido definida como padrão para esse local, a conexão de EKM selecionada vai substituí-la como padrão. Apenas uma conexão EKM pode ser padrão para um determinado projeto e local.

A seguir