Crea una conexión de EKM

En esta página, se muestra cómo configurar Cloud External Key Manager (Cloud EKM) para conectarte a tu proveedor de administración de claves externas (EKM) a través de una red de nube privada virtual (VPC).

Puedes usar claves externas sobre VPC en ubicaciones de Cloud KMS que admitan EKM a través de VPC. Para obtener más información, consulta la página de ubicaciones de Cloud KMS.

Terminología

  • Conexión de EKM

    El recurso de Cloud KMS que se usa para configurar una conexión a tu administrador de claves externo. En la consola de Google Cloud, esto se conoce como EKM mediante una conexión de VPC.

  • Proyecto de VPC

    El proyecto que contiene el recurso de VPC que se usa para conectarse a tu administrador de claves externo.

  • Proyectos clave

    Los proyectos que contienen recursos de conexión de EKM y claves de Cloud EKM en Cloud KMS. Un proyecto clave puede ser el mismo que un proyecto de VPC, pero no es obligatorio.

  • Espacio criptográfico

    Es un contenedor para tus recursos dentro de tu socio de administración de claves externo. Tu espacio criptográfico se identifica con una ruta única. El formato de la ruta del espacio criptográfico varía según el socio de administración de claves externo, por ejemplo, v0/cryptospaces/YOUR_UNIQUE_PATH.

Antes de comenzar

Después de completar los pasos que se indican a continuación, puedes comenzar a usar las claves de Cloud EKM para proteger tus datos.

Crear un nuevo proyecto

  1. En la consola de Google Cloud, ve a la página Administrar recursos.

    Ir a la página Administración de recursos

  2. Crea un proyecto de Google Cloud nuevo o selecciona uno existente.

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  4. Obtén más información sobre los precios de Cloud EKM.

Habilite Cloud KMS

  1. Habilita la API de Cloud Key Management Service para el proyecto.

    Habilitar la API de Cloud Key Management Service

  2. Anota la cuenta de servicio de Cloud EKM de tu proyecto. En el siguiente ejemplo, reemplaza PROJECT_NUMBER por el número de proyecto de tu proyecto de Google Cloud. Esta información también es visible cada vez que usas la consola de Google Cloud para crear una clave de Cloud EKM.

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

Asegúrate de que gcloud CLI esté actualizada

Si vas a usar Google Cloud CLI, asegúrate de que esté actualizada con el siguiente comando:

gcloud CLI

gcloud components update

Prepara una red de VPC

Hay dos opciones cuando configuras una red de VPC:

De forma predeterminada, los proyectos nuevos contienen una red de modo automático que se propaga previamente con las reglas de firewall. Si la red de VPC no se utilizará para fines de producción, la red de modo automático predeterminada es la forma más rápida de comenzar.

Si tu administrador de claves externo se ejecuta de manera local y te conectarás a él a través de la conectividad híbrida, debes usar una red de modo personalizado, ya que proporciona control sobre los rangos de direcciones IP de la subred.

Sigue estos pasos para configurar tu VPC:

  1. Habilite el Acceso privado a Google

    El administrador de claves externo debe verificar el token de OIDC que contiene cada solicitud. Para verificar el token, debe recuperar la clave pública OAuth2 del nombre de dominio www.googleapis.com. Si el administrador de claves externo se ejecuta en Google Cloud y no tiene acceso a través de Internet (p.ej., una VM sin una IP externa o bloqueada por un firewall), sigue las instrucciones para configurar el Acceso privado a Google.

  2. Configuración de firewall para el rango de IP 35.199.192.0/19

    Las solicitudes de Cloud EKM provendrán de este rango. Crea reglas de firewall de permiso de entrada y salida para TCP en el puerto en el que escucha el administrador de claves externo.

Configura la conectividad híbrida

Si el administrador de claves externo se ejecuta de forma local, usa una solución de conectividad híbrida para conectar la VPC con tu red local. Una vez que hayas configurado la conectividad, sigue estos pasos adicionales:

  1. Habilite el Acceso privado a Google

    El administrador de claves externo debe verificar el token OIDC incluido en cada solicitud. Para verificar el token, debe recuperar la clave pública OAuth2 del nombre de dominio www.googleapis.com. Si el administrador de claves externo se ejecuta de manera local y no tiene acceso a través de Internet, sigue las instrucciones a fin de configurar el acceso privado a Google para hosts locales.

  2. Configuración de firewall para el rango de IP 35.199.192.0/19

    Las solicitudes de Cloud EKM provendrán de este rango. Configura el firewall de la red local o un equipo similar para permitir el tráfico de TCP en el puerto en el que escucha el administrador de claves externo.

  3. Asegúrate de que tu VPC tenga una ruta de retorno al rango de IP 35.199.192.0/19

    Tu red local debe tener una ruta para el destino 35.199.192.0/19. Si deseas obtener información sobre cómo cumplir con este requisito, consulta estrategias de rutas de retorno para destinos locales.

Estrategias de ruta de retorno para los destinos locales

  • Para los túneles de Cloud VPN que usan enrutamiento estático, crea de forma manual una ruta en tu red local cuyo destino sea 35.199.192.0/19 y cuyo siguiente salto sea el túnel de Cloud VPN. En los túneles de Cloud VPN que usan enrutamiento basado en políticas, configura el selector de tráfico local de Cloud VPN y el selector de tráfico remoto de la puerta de enlace de VPN local para incluir 35.199.192.0/19.

  • Para los túneles de Cloud VPN que usan enrutamiento dinámico o Cloud Interconnect, configura un anuncio de ruta personalizado para 35.199.192.0/19 en la sesión de BGP del Cloud Router que administra el túnel o el adjunto de VLAN.

Configura tu administrador de claves externo

Sigue las instrucciones de tu proveedor de EKM para configurar tu EKM.

Configura tu espacio criptográfico

Si usas Cloud EKM como parte de un arreglo de EKM administrado por un socio, estos pasos ya se completaron como parte del proceso de aprovisionamiento de tu socio.

Si tu proveedor de EKM es compatible con la administración de claves de EKM desde Cloud KMS, debes realizar los siguientes pasos de configuración en tu EKM:

  • Crea un espacio criptográfico para los recursos administrados por Cloud KMS en tu EKM.

  • Otorga a tu cuenta de servicio de Cloud KMS acceso a tu espacio criptográfico y a las claves creadas en él.

  • Configura la política Key Access Justifications para definir qué justificaciones de acceso se deben permitir o rechazar.

El proceso exacto para cada uno de estos pasos depende de tu EKM. Para obtener más información, consulta la documentación de tu proveedor de EKM.

Crea un extremo de servicio del Directorio de servicios

Crea y configura un extremo de servicio del Directorio de servicios en el proyecto de VPC que apunte a la dirección IP privada y al puerto de tu administrador de claves externo. Si usas un balanceador de cargas frente a varias réplicas de EKM, usa la dirección IP y el puerto del balanceador de cargas. Asegúrate de que se propague el campo network del extremo de servicio del Directorio de servicios.

Autoriza el acceso de Cloud EKM a tu VPC

Para cada proyecto clave, debes autorizar a Cloud EKM a acceder a tu VPC en nombre de ese proyecto, incluso si el proyecto de clave y el de VPC son los mismos. Cuando autorices el acceso, las claves de tu proyecto de clave podrán usar la VPC en tu proyecto de VPC.

  1. Asegúrate de que exista una cuenta de servicio de Cloud EKM para el proyecto.

    gcloud CLI

    gcloud beta services identity create \
      --service=cloudkms.googleapis.com \
      --project=KEY_PROJECT_ID
    
  2. Otorga servicedirectory.viewer y servicedirectory.pscAuthorizedService en tu proyecto de VPC a service-KEY_PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.com. Para obtener ayuda con la obtención del ID y el número del proyecto, consulta Crea y administra proyectos.

    gcloud CLI

    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'
    

Crea una conexión de EKM

Para conectar tu administrador de claves externo a Cloud EKM, crea una conexión de EKM en tu proyecto de clave.

Consola

  1. En la consola de Google Cloud, ve a la página Infraestructura de KMS.

    Ir a Infraestructura de KMS

  2. Haz clic en Crear conexión.

  3. En Nombre de la conexión, ingresa un nombre para tu conexión.

  4. En Región, selecciona una ubicación para la conexión de EKM. Todas las claves de Cloud KMS asociadas con esta conexión deben estar en la misma ubicación que la conexión.

  5. En el campo ID de recurso del servicio (self_link), ingresa el valor del servicio del Directorio de servicios creado en la sección Crea un extremo de servicio del Directorio de servicios. El servicio del directorio de servicios debe estar en la misma ubicación que la conexión.

  6. En el campo Nombre de host, agrega el nombre de host de tu administrador de claves externo.

  7. En Certificados, haz clic en Agregar certificado a fin de subir uno o más certificados de servidor X.509 para tu administrador de claves externo. Los certificados deben estar en formato DER.

  8. En Modo de administración de EKM, selecciona Manual a fin de usar la conexión de EKM para las claves externas administradas de forma manual o Cloud KMS a fin de usar la conexión de EKM para las claves externas coordinadas.

  9. Si seleccionaste Cloud KMS en Modo de administración de EKM, en el campo Ruta del espacio criptográfico, ingresa la ruta del espacio criptográfico que proporcionó tu EKM.

  10. Opcional. Si quieres establecer la conexión de EKM como la predeterminada para este proyecto y ubicación, selecciona la casilla de verificación Establecer conexión como predeterminada. Si actualmente hay otra conexión de EKM configurada como la predeterminada para este proyecto y esta ubicación, esta conexión de EKM reemplazará la predeterminada existente.

  11. Haz clic en Crear.

gcloud

Para usar Cloud KMS en la línea de comandos, primero instala o actualiza a la versión más reciente de Google Cloud CLI.

Si quieres crear una conexión de EKM para claves externas administradas de forma manual, ejecuta el siguiente 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

Reemplaza lo siguiente:

  • EKM_CONNECTION: Es un nombre para la conexión de EKM.
  • LOCATION: Es la ubicación de Cloud KMS en la que deseas crear la conexión de EKM. Todas las claves de Cloud KMS asociadas con esta conexión deben estar en la misma ubicación que la conexión.
  • SERVICE_DIRECTORY_SERVICE: Es el ID de recurso del servicio del Directorio de servicios para tu conexión.
  • HOSTNAME: Es el nombre de host de tu administrador de claves externo.
  • SERVER_CERTIFICATE_FILES: Es una lista de archivos separados por comas que contienen certificados de servidor X.509 para el administrador de claves externas. Los certificados deben estar en formato DER.

Si quieres crear una conexión de EKM para claves externas coordinadas, ejecuta el siguiente 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

Reemplaza lo siguiente:

  • EKM_CONNECTION: Es un nombre para la conexión de EKM.
  • LOCATION: Es la ubicación de Cloud KMS en la que deseas crear la conexión de EKM. Todas las claves de Cloud KMS asociadas con esta conexión deben estar en la misma ubicación que la conexión.
  • SERVICE_DIRECTORY_SERVICE: Es el ID de recurso del servicio del Directorio de servicios para tu conexión.
  • HOSTNAME: Es el nombre de host de tu administrador de claves externo.
  • SERVER_CERTIFICATE_FILES: Es una lista de archivos separados por comas que contienen certificados de servidor X.509 para el administrador de claves externas. Los certificados deben estar en formato DER.
  • CRYPTO_SPACE_PATH: La ruta de acceso al espacio criptográfico que proporciona tu proveedor de EKM.

Para obtener información sobre todas las marcas y los valores posibles, ejecuta el comando con la marca --help.

API

En estos ejemplos, se usa curl como un cliente HTTP para demostrar el uso de la API. Para obtener más información sobre el control de acceso, consulta Accede a la API de Cloud KMS.

Si quieres crear una conexión de EKM para claves externas coordinadas, ejecuta el siguiente 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"
    }'

Reemplaza lo siguiente:

  • PROJECT_ID: El ID del proyecto en el que deseas crear la conexión de EKM
  • LOCATION: Es el Cloud KMS en el que deseas crear la conexión de EKM.
  • EKM_CONNECTION: Es el nombre que se usará para la conexión de EKM.
  • SERVER_CERTIFICATES: Es una lista de hasta 10 objetos Certificate que representan certificados de servidor de hoja.
  • HOSTNAME: Es el nombre de host de tu administrador de claves externo.
  • CRYPTO_SPACE_PATH: La ruta de acceso al espacio criptográfico que proporciona tu proveedor de EKM.

Si quieres crear una conexión de EKM para claves externas administradas de forma manual, ejecuta el siguiente 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
            }
          ]
        }
      ]
    }'

Reemplaza lo siguiente:

  • PROJECT_ID: El ID del proyecto en el que deseas crear la conexión de EKM
  • LOCATION: Es el Cloud KMS en el que deseas crear la conexión de EKM.
  • EKM_CONNECTION: Es el nombre que se usará para la conexión de EKM.
  • SERVER_CERTIFICATES: Es una lista de hasta 10 objetos Certificate que representan certificados de servidor de hoja.
  • HOSTNAME: Es el nombre de host de tu administrador de claves externo.

Consulta la documentación sobre la API de EkmConnection.create para obtener más información.

Estado del certificado

Una vez que hayas subido un certificado para tu conexión de EKM, puedes verificar el estado general del certificado de la conexión de EKM y el estado de cada certificado en la página de infraestructura de KMS.

Las conexiones de EKM tienen un estado general en la columna Estado del certificado de cada conexión. Si una conexión de EKM tiene un estado diferente a Activa, te recomendamos que actualices los certificados de tu conexión de EKM.

Tanto las conexiones de EKM como los certificados individuales pueden tener el siguiente estado:

  • Activo: El certificado es válido y no está cerca de su fecha de vencimiento.
  • Vence dentro de 30 días: El certificado es válido, pero tiene una fecha de vencimiento en los próximos 30 días.
  • Vencido: El certificado está vencido y ya no es válido. Te recomendamos que actualices los certificados vencidos.
  • Aún no es válido: El certificado no está activo. Esto puede suceder si la fecha de inicio del certificado es en el futuro.

Si tu certificado ya no es válido, actualiza tu conexión de EKM en la consola de Google Cloud.

Consola

  1. En la consola de Google Cloud, ve a la página Infraestructura de KMS.

    Ir a Infraestructura de KMS

  2. Haz clic en el nombre del EKM a través de la conexión de VPC con el certificado que se debe actualizar.

  3. Haz clic en Editar conexión.

  4. Haz clic en Agregar certificado para subir uno o más certificados de servidor X.509 para tu administrador de claves externas. Los certificados deben estar en formato DER.

  5. Quita los certificados vencidos. Coloca el cursor sobre el certificado vencido y selecciona el ícono Borrar que se encuentra a la derecha.

  6. Haz clic en Actualizar conexión para actualizar el EKM a través de la conexión de VPC.

Establecer una conexión de EKM como predeterminada

Puedes configurar una conexión de EKM como la predeterminada para un proyecto y una ubicación determinados. Cuando se configura una conexión de EKM predeterminada para un proyecto y una ubicación, las claves de VPC nuevas de Cloud EKM creadas en llaveros de claves en esa ubicación usan la conexión de EKM indicada, a menos que se seleccione otra conexión de EKM.

A fin de configurar una conexión de EKM como predeterminada para su proyecto y ubicación, completa los siguientes pasos:

Consola

  1. En la consola de Google Cloud, ve a la página Infraestructura de KMS.

    Ir a Infraestructura de KMS

  2. Haz clic en la conexión de EKM que deseas establecer como predeterminada.

  3. Haz clic en Editar conexión.

  4. En Conexión predeterminada, selecciona la casilla de verificación Establecer conexión como predeterminada para LOCATION.

  5. Haz clic en Actualizar conexión.

gcloud CLI

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

Reemplaza lo siguiente:

  • LOCATION: Es el Cloud KMS para el que deseas establecer la conexión de EKM predeterminada.
  • PROJECT_ID: Es el nombre del proyecto para el que deseas establecer la conexión de EKM predeterminada.
  • DEFAULT_EKM_CONNECTION: Es el nombre de la conexión de EKM que deseas establecer como predeterminada para esta ubicación. La ubicación de la conexión de EKM debe coincidir con la ubicación proporcionada en LOCATION.

API

Si deseas establecer la conexión de EKM predeterminada para una ubicación, usa el 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"}'

Reemplaza lo siguiente:

  • PROJECT_ID: El ID del proyecto para el que deseas establecer una conexión de EKM predeterminada
  • LOCATION: Es el Cloud KMS para el que deseas establecer la conexión de EKM predeterminada.
  • DEFAULT_EKM_CONNECTION: Es el nombre de la conexión de EKM que deseas establecer como predeterminada para esta ubicación. La ubicación de la conexión de EKM debe coincidir con la ubicación indicada en LOCATION.

Si se configuró otra conexión de EKM como predeterminada para esta ubicación, la conexión de EKM seleccionada la reemplazará como predeterminada. Solo una conexión de EKM puede ser predeterminada para un proyecto y una ubicación determinados.

¿Qué sigue?