Criar uma conexão 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 externas (EKM) por uma rede de nuvem privada virtual (VPC).

É possível usar chaves externas na VPC em locais do Cloud KMS que aceitam o 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 seu gerenciador de chaves externas. No console Google Cloud , isso é chamado de conexão EKM via 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 VPC, mas isso não é obrigatório.

  • Crypto Space

    Um contêiner para seus recursos no parceiro de gerenciamento de chaves externas. Seu Crypto Space é 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 Google Cloud , acesse a página "Gerenciar recursos".

    Acessar a página "Gerenciar recursos"

  2. Crie um Google Cloud projeto 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 projeto do seu projetoGoogle Cloud . Essas informações também ficam visíveis sempre que você usa o console Google Cloud 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 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, 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 padrão de modo automático será a maneira mais rápida de começar.

Se o gerenciador de chaves externo estiver sendo executado no local e você se conectar a ele por 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 sua VPC:

  1. ativar o Acesso privado do Google

    O gerenciador de chaves externas precisa verificar o token do OIDC contido em cada solicitação. Para verificar o token, é necessário recuperar a chave pública do OAuth2 do nome de domínio www.googleapis.com. Se o gerenciador de chaves externo 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 do 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 externo está escutando.

Configurar a conectividade híbrida

Se o gerenciador de chaves externo estiver sendo executado no local, 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 externas precisa verificar o token do OIDC contido em cada solicitação. Para verificar o token, é necessário recuperar a chave pública do 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 do firewall para o intervalo de IP 35.199.192.0/19

    As solicitações do Cloud EKM virão desse intervalo. Configure seu firewall de rede local ou equipamentos semelhantes 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. Para 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 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 seu Crypto Space

Se você usa o Cloud EKM como parte de um contrato 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 pelo Cloud KMS, as seguintes etapas de configuração e configuração precisarão ser feitas no EKM:

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

  • Conceda à sua conta de serviço do Cloud KMS acesso ao espaço criptografado 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 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 do serviço do Diretório de serviços está preenchido.

Autorizar o acesso do Cloud EKM à VPC

Para cada projeto de chaves, é preciso 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 do projeto de chave podem usar a VPC do projeto de VPC.

  1. Verifique se uma conta de serviço do Cloud EKM existe 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 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 seu gerenciador de chaves externo ao Cloud EKM, crie uma conexão EKM no projeto de chaves.

Console

  1. No console 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 ela.

  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 da conexão.

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

  7. Em Certificados, clique em Adicionar certificado para fazer upload de um ou mais certificados de servidor X.509 para seu 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 com chaves externas gerenciadas manualmente ou Cloud KMS para usar a conexão do EKM com chaves externas coordenadas.

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

  10. Opcional. Para definir a conexão EKM como 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, ela vai substituir a conexã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 do 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. As chaves do Cloud KMS associadas a essa conexão precisam estar no mesmo local que ela.
  • 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 separada por vírgulas de arquivos que contêm certificados de servidor X.509 para seu gerenciador de chaves externo. Os certificados precisam estar no formato DER.

Para criar uma conexão do 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. As chaves do Cloud KMS associadas a essa conexão precisam estar no mesmo local que ela.
  • 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 separada por vírgulas de arquivos que contêm certificados de servidor X.509 para seu 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 do 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 do 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 criptográfico fornecido pelo seu provedor de EKM.

Para criar uma conexão do 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 do 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 EKM, você pode verificar o status geral do certificado da conexão EKM e o status de cada certificado na página de infraestrutura do KMS.

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

As conexões EKM e os certificados individuais podem ter os seguintes 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 do EKM no consoleGoogle Cloud .

Console

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

    Acesse a infraestrutura do KMS

  2. Clique no nome da conexão EKM via 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 seu 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 a conexão EKM via VPC.

Definir uma conexão do EKM como padrão

É possível definir uma conexão do EKM como padrão para um projeto e local específicos. Quando uma conexão EKM padrão é definida para um projeto e um 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 console Google Cloud , acesse a página Infraestrutura do KMS.

    Acesse a infraestrutura do KMS

  2. Clique na conexão do 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 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 em que você quer definir a conexão padrão do EKM.
  • DEFAULT_EKM_CONNECTION: o nome da conexão do EKM que você quer definir como padrão para este local. O local da conexão EKM precisa corresponder ao local informado em LOCATION.

API

Para definir a conexão padrão do EKM em 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 padrão do EKM.
  • LOCATION: o Cloud KMS para o qual você quer definir a conexão 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.

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

A seguir