Criar uma conexão do EKM

Nesta página, mostramos como configurar o Cloud External Key Manager (Cloud EKM) para se conectar ao seu provedor de gerenciamento de chaves externas (EKM) por uma rede VPC.

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

  • Projeto de VPC

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

  • Projetos de chaves

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

  • Crypto Space

    Um contêiner para seus recursos no parceiro de gerenciamento de chaves externas. O Crypto Space é identificado por um caminho exclusivo. O formato do caminho do Crypto Space varia de acordo com o parceiro de gerenciamento de chaves externas. 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 Google Cloud console do, acesse a página Gerenciar recursos.

    Acessar a página "Gerenciar recursos"

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

  3. Verifique se o faturamento está ativado para o Google Cloud projeto.

  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 Google Cloud número do seu projeto. Essas informações também ficam visíveis sempre que você usa o Google Cloud console para criar uma chave do Cloud EKM.

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

Verificar se a CLI gcloud está atualizada

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

CLI gcloud

gcloud components update

Preparar uma rede VPC

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

Por padrão, novos projetos contêm uma rede de modo automático que é preenchida previamente 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 externas estiver em execução no local e você se conectar a ele via conectividade 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 externas precisa verificar o token OIDC contido em cada solicitação. Para verificar o token, ele precisa recuperar a chave pública do OAuth2 do nome de domínio www.googleapis.com. Se o gerenciador de chaves externas for executado em 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 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 permissão de entrada e saída para TCP na porta em que o gerenciador de chaves externas está escutando.

Configurar a conectividade híbrida

Se o gerenciador de chaves externas 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 etapas adicionais:

  1. Ativar o Acesso privado do Google

    O gerenciador de chaves externas precisa verificar o token OIDC contido em cada solicitação. Para verificar o token, ele precisa recuperar a chave pública do OAuth2 do nome de domínio www.googleapis.com. Se o gerenciador de chaves externas 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 equipamentos semelhantes para permitir o tráfego TCP na porta em que o gerenciador de chaves externas 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. 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 locais

  • Para túneis do Cloud VPN que usam roteamento estático, crie manualmente uma rota na rede local em que o destino seja 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 o modo de divulgação personalizado 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 externas

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 parceiros, essas etapas foram concluídas como parte do processo de provisionamento do parceiro.

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

  • Crie um Crypto Space para seus recursos gerenciados pelo Cloud KMS no EKM.

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

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

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

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

Crie e configure um endpoint de serviço doDiretório de serviços no projeto de VPC que aponte para o endereço IP particular e a porta do gerenciador de chaves externas. 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 de chaves, você precisa autorizar o acesso do Cloud EKM à 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 do projeto de chaves podem usar a VPC do projeto de VPC.

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

    CLI gcloud

    gcloud beta services identity create \
      --service=cloudkms.googleapis.com \
      --project=KEY_PROJECT_ID
    
  2. Conceda os 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 do projeto e o número, consulte Como criar e gerenciar projetos.

    CLI 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 Google Cloud console do, 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 a conexão.

  4. Em Região, selecione um local para a conexão 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 de 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 que a conexão.

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

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

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

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

  10. Opcional. Para definir a conexão EKM como a conexão padrão para esse projeto e local, marque a caixa de seleção Definir conexão como padrão. Se outra conexão EKM estiver definida como a conexão padrão para esse projeto e local, essa conexão EKM 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 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 externas.
  • SERVER_CERTIFICATE_FILES: uma lista separada por vírgulas de arquivos que contêm certificados de servidor X.509 para o gerenciador de chaves externas. 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 externas.
  • SERVER_CERTIFICATE_FILES: uma lista separada por vírgulas de arquivos que contêm certificados de servidor X.509 para o gerenciador de chaves externas. Os certificados precisam estar no formato DER.
  • CRYPTO_SPACE_PATH: o caminho do Crypto Space 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 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 externas.
  • CRYPTO_SPACE_PATH: o caminho do Crypto Space 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 EKM.
  • SERVER_CERTIFICATES: uma lista de até 10 Certificate objetos que representam certificados de servidor folha.
  • HOSTNAME: o nome do host do gerenciador de chaves externas.

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

Status do certificado

Depois de fazer o upload de um certificado para a conexão EKM, você pode verificar o status geral do certificado da conexão 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, nós recomendamos atualizar os certificados na 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á perto 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 for no futuro.

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

Console

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

    Acessar a infraestrutura do KMS

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

  3. Clique em Editar conexão.

  4. Clique em Adicionar certificado para fazer o upload de um ou mais certificados de servidor X.509 para o gerenciador de chaves externas. 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 por conexão VPC.

Definir uma conexão EKM como padrão

É possível definir uma conexão EKM como a conexão 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 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 Google Cloud console do, 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 conexão como padrão para LOCATION.

  5. Clique em Atualizar conexão.

CLI gcloud

gcloud 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 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 EKM precisa corresponder ao local fornecido em LOCATION.

API

Para definir a conexão 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 EKM que você quer definir como padrão para esse local. O local da conexão 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 vai substituí-la como padrão. Apenas uma conexão EKM pode ser padrão para um determinado projeto e local.

A seguir