En esta página se explica cómo configurar Cloud External Key Manager (Cloud EKM) para conectarse a tu proveedor de gestión de claves externas (EKM) a través de una red de nube privada virtual (VPC).
Puedes usar claves externas a través de VPC en ubicaciones de Cloud KMS que admitan EKM a través de VPC. Para obtener más información, consulta la página Ubicaciones de Cloud KMS.
Terminología
Conexión de EKM
El recurso de Cloud KMS que se usa para configurar una conexión con tu gestor de claves externo. En la consola de Google Cloud , esto se conoce como gestión de claves externa mediante conexión de VPC.
Proyecto de VPC
El proyecto que contiene el recurso de VPC que se usa para conectarse a tu gestor 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 de clave puede ser el mismo que un proyecto de VPC, pero no es obligatorio.
Espacio criptográfico
Un contenedor de tus recursos en tu partner de gestión de claves externo. Tu espacio criptográfico se identifica mediante una ruta de espacio criptográfico única. El formato de la ruta del espacio criptográfico varía según el partner de gestión de claves externas. Por ejemplo,
v0/cryptospaces/YOUR_UNIQUE_PATH
.
Antes de empezar
Una vez que hayas completado los pasos que se indican a continuación, podrás empezar a usar las claves de Cloud EKM para proteger tus datos.
Crear un proyecto
En la Google Cloud consola, ve a la página Gestionar recursos.
Crea un Google Cloud proyecto o selecciona uno que ya tengas.
-
Verify that billing is enabled for your Google Cloud project.
Consulta más información sobre los precios de Cloud EKM.
Habilitar Cloud KMS
Habilita la API Cloud Key Management Service en el proyecto.
Anota la cuenta de servicio de Cloud EKM de tu proyecto. En el ejemplo siguiente, sustituye
PROJECT_NUMBER
por el número de proyecto de tuGoogle Cloud proyecto. Esta información también se muestra cada vez que usas la consola para crear una clave de EKM de Cloud. Google Cloudservice-PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.com
Comprobar que la CLI de gcloud esté actualizada
Si vas a usar la CLI de Google Cloud, asegúrate de que esté actualizada con el siguiente comando:
CLI de gcloud
gcloud components update
Preparar una red de VPC
Hay dos opciones al configurar una red de VPC:
De forma predeterminada, los proyectos nuevos contienen una red de modo automático que tiene reglas de cortafuegos predefinidas. Si la red VPC no se va a usar con fines de producción, la red de modo automático predeterminada es la forma más rápida de empezar.
Si tu gestor de claves externo se ejecuta de forma local y te vas a conectar a él mediante conectividad híbrida, debes usar una red en modo personalizado, ya que te permite controlar los intervalos de direcciones IP de las subredes.
Sigue estos pasos para configurar tu VPC:
Habilita el Acceso privado de Google
El gestor de claves externo debe verificar el token de OIDC incluido en cada solicitud. Para verificar el token, debe obtener la clave pública de OAuth2 del nombre de dominio
www.googleapis.com
. Si el gestor de claves externo se ejecuta en Google Cloud y no tiene acceso a través de Internet (por ejemplo, una VM sin una IP externa o bloqueada por un cortafuegos), sigue las instrucciones para configurar el acceso privado de Google.Configuración del cortafuegos para el intervalo de IPs
35.199.192.0/19
Las solicitudes de Cloud EKM procederán de este intervalo. Crea reglas de cortafuegos de entrada y salida para TCP en el puerto en el que escucha el gestor de claves externo.
Configurar la conectividad híbrida
Si el gestor 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:
Habilita el Acceso privado de Google
El gestor de claves externo debe verificar el token de OIDC incluido en cada solicitud. Para verificar el token, debe obtener la clave pública de OAuth2 del nombre de dominio
www.googleapis.com
. Si el gestor de claves externo se ejecuta de forma local y no tiene acceso a través de Internet, sigue las instrucciones para configurar Acceso privado de Google para hosts on‐premise.Configuración del cortafuegos para el intervalo de IPs
35.199.192.0/19
Las solicitudes de Cloud EKM procederán de este intervalo. Configura tu cortafuegos de red local o un equipo similar para permitir el tráfico TCP en el puerto en el que está escuchando el gestor de claves externo.
Asegúrate de que tu VPC tenga una ruta de retorno al intervalo de IP
35.199.192.0/19
.Tu red local debe tener una ruta para el destino
35.199.192.0/19
. Para obtener información sobre cómo cumplir este requisito, consulta las estrategias de ruta de retorno para destinos locales.
Estrategias de ruta de retorno para destinos locales
En el caso de los túneles de Cloud VPN que usan el enrutamiento estático, crea manualmente una ruta en tu red on-premise cuyo destino sea
35.199.192.0/19
y cuyo siguiente salto sea el túnel de Cloud VPN. En el caso de los túneles de Cloud VPN que utilicen el enrutamiento basado en políticas, configure el selector de tráfico local de Cloud VPN y el selector de tráfico remoto de la pasarela de VPN on-premise para que incluyan35.199.192.0/19
.En el caso de los túneles de Cloud VPN que usan el enrutamiento dinámico o Cloud Interconnect, configura el modo de anuncio personalizado para
35.199.192.0/19
en la sesión BGP del Cloud Router que gestiona el túnel o la vinculación de VLAN.
Configurar tu gestor de claves externo
Sigue las instrucciones de tu proveedor de EKM para configurar tu EKM.
Configurar tu espacio de criptomonedas
Si usas Cloud EKM como parte de un acuerdo de EKM gestionado por un partner, estos pasos se habrán completado por ti como parte del proceso de aprovisionamiento de tu partner.
Si tu proveedor de EKM es compatible con la gestión de claves de EKM desde Cloud KMS, debes seguir estos pasos de configuración en tu EKM:
Crea un espacio criptográfico para los recursos gestionados por Cloud KMS en tu EKM.
Concede 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 de Key Access Justifications para definir qué justificaciones de acceso se deben permitir o denegar.
El proceso exacto de cada uno de estos pasos depende de tu EKM. Para obtener más información, consulta la documentación de tu proveedor de EKM.
Crear un endpoint de servicio de Service Directory
Crea y configura un endpoint de servicio de Directory de servicios en tu proyecto de VPC que apunte a la dirección IP privada y al puerto de tu gestor de claves externo. Si usas un balanceador de carga delante de varias réplicas de EKM, usa la dirección IP y el puerto del balanceador de carga. Asegúrate de que el campo network del endpoint de servicio de Directorio de servicios esté relleno.
Autorizar a Cloud EKM para que acceda a tu VPC
En cada proyecto de claves, debes autorizar a Cloud EKM para que acceda a tu VPC en nombre de ese proyecto, aunque el proyecto de claves y el proyecto de VPC sean el mismo. Al autorizar el acceso, las claves de tu proyecto de claves pueden usar la VPC de tu proyecto de VPC.
Asegúrate de que haya una cuenta de servicio de Cloud EKM en el proyecto.
CLI de gcloud
gcloud beta services identity create \ --service=cloudkms.googleapis.com \ --project=KEY_PROJECT_ID
Concede los roles
servicedirectory.viewer
yservicedirectory.pscAuthorizedService
en tu proyecto de VPC aservice-KEY_PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.com
. Si necesitas ayuda para obtener el ID y el número de tu proyecto, consulta el artículo Crear y gestionar proyectos.CLI de 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
Crear una conexión EKM
Para conectar tu gestor de claves externo a Cloud EKM, crea una conexión EKM en tu proyecto de claves.
Consola
En la Google Cloud consola, ve a la página Infraestructura de KMS.
Haz clic en
Crear conexión.En Connection name (Nombre de la conexión), introduce un nombre para la conexión.
En Región, selecciona una ubicación para la conexión EKM. Las claves de Cloud KMS asociadas a esta conexión deben estar en la misma ubicación que la conexión.
En el campo ID de recurso de servicio (self_link), introduce el valor del servicio de Directory de servicios creado en la sección Crear un endpoint de servicio de Directory de servicios. El servicio de directorio de servicios debe estar en la misma ubicación que la conexión.
En el campo Nombre de host, añade el nombre de host de tu gestor de claves externo.
En Certificates (Certificados), haz clic en Add certificate (Añadir certificado) para subir uno o varios certificados de servidor X.509 para tu gestor de claves externo. Los certificados deben estar en formato DER.
En Modo de gestión de EKM, selecciona Manual para usar la conexión de EKM con claves externas gestionadas manualmente o Cloud KMS para usar la conexión de EKM con claves externas coordinadas.
Si has seleccionado Cloud KMS en Modo de gestión de EKM, en el campo Ruta del espacio criptográfico, introduce la ruta del espacio criptográfico proporcionada por tu EKM.
Opcional. Para definir la conexión EKM como la conexión predeterminada de este proyecto y esta ubicación, marca la casilla Definir conexión como predeterminada. Si actualmente hay otra conexión EKM configurada como conexión predeterminada para este proyecto y esta ubicación, esta conexión EKM sustituirá a la conexión predeterminada.
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 la CLI de Google Cloud.
Para crear una conexión EKM para claves externas gestionadas manualmente, 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
Haz los cambios siguientes:
EKM_CONNECTION
: un nombre para la conexión EKM.LOCATION
: la ubicación de Cloud KMS en la que quieres crear la conexión EKM. Las claves de Cloud KMS asociadas a esta conexión deben estar en la misma ubicación que la conexión.SERVICE_DIRECTORY_SERVICE
: ID de recurso del servicio de Service Directory de tu conexión.HOSTNAME
: el nombre de host de tu gestor de claves externo.SERVER_CERTIFICATE_FILES
: lista de archivos separados por comas que contienen certificados de servidor X.509 para tu gestor de claves externo. Los certificados deben estar en formato DER.
Para crear una conexión 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
Haz los cambios siguientes:
EKM_CONNECTION
: un nombre para la conexión EKM.LOCATION
: la ubicación de Cloud KMS en la que quieres crear la conexión EKM. Las claves de Cloud KMS asociadas a esta conexión deben estar en la misma ubicación que la conexión.SERVICE_DIRECTORY_SERVICE
: ID de recurso del servicio de Service Directory de tu conexión.HOSTNAME
: el nombre de host de tu gestor de claves externo.SERVER_CERTIFICATE_FILES
: lista de archivos separados por comas que contienen certificados de servidor X.509 para tu gestor de claves externo. Los certificados deben estar en formato DER.CRYPTO_SPACE_PATH
: la ruta del espacio criptográfico proporcionada por 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 cliente HTTP para mostrar cómo se usa la API. Para obtener más información sobre el control de acceso, consulta el artículo sobre cómo acceder a la API Cloud KMS.
Para crear una conexión 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" }'
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto en el que quieres crear la conexión EKM.LOCATION
: el Cloud KMS en el que quieres crear la conexión EKM.EKM_CONNECTION
: el nombre que se va a usar para la conexión EKM.SERVER_CERTIFICATES
: una lista de hasta 10 objetosCertificate
que representan certificados de servidor hoja.HOSTNAME
: el nombre de host de tu gestor de claves externo.CRYPTO_SPACE_PATH
: la ruta del espacio criptográfico proporcionada por tu proveedor de EKM.
Para crear una conexión EKM para claves externas gestionadas manualmente, 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 } ] } ] }'
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto en el que quieres crear la conexión EKM.LOCATION
: el Cloud KMS en el que quieres crear la conexión EKM.EKM_CONNECTION
: el nombre que se va a usar para la conexión EKM.SERVER_CERTIFICATES
: lista de hasta 10Certificate
objetos que representan certificados de servidor hoja.HOSTNAME
: el nombre de host de tu gestor de claves externo.
Para obtener más información, consulta la documentación de la API EkmConnection.create
.
Estado del certificado
Una vez que hayas subido un certificado para tu conexión EKM, puedes consultar el estado general del certificado de la conexión EKM, así como 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 EKM tiene un estado distinto de Activo, te recomendamos que actualices los certificados de tu conexión EKM.
Tanto las conexiones de EKM como los certificados individuales pueden tener los siguientes estados:
- Activo: el certificado es válido y no se acerca a su fecha de vencimiento.
- Caduca en los próximos 30 días: el certificado es válido, pero caduca en los próximos 30 días.
- Caducado: el certificado ha caducado y ya no es válido. Te recomendamos que actualices los certificados caducados.
- Aún no es válido: el certificado no está activo. Esto puede ocurrir si la fecha de inicio del certificado es posterior a la actual.
Si tu certificado ya no es válido, actualiza tu conexión EKM en laGoogle Cloud consola.
Consola
En la Google Cloud consola, ve a la página Infraestructura de KMS.
Haga clic en el nombre de la conexión EKM a través de VPC con el certificado que deba actualizarse.
Haz clic en Editar conexión.
Haz clic en Añadir certificado para subir uno o varios certificados de servidor X.509 para tu gestor de claves externo. Los certificados deben estar en formato DER.
Elimina los certificados caducados. Coloca el cursor sobre el certificado caducado y selecciona el icono de eliminar situado a la derecha.
Haz clic en Actualizar conexión para actualizar la EKM mediante la conexión de VPC.
Definir una conexión EKM como predeterminada
Puedes definir una conexión EKM como la conexión predeterminada de un proyecto y una ubicación concretos. Cuando se establece una conexión EKM predeterminada para un proyecto y una ubicación, las nuevas claves de Cloud EKM por VPC creadas en los conjuntos de claves de esa ubicación usan la conexión EKM indicada, a menos que se seleccione otra conexión EKM.
Para definir una conexión EKM como predeterminada para su proyecto y ubicación, siga estos pasos:
Consola
En la Google Cloud consola, ve a la página Infraestructura de KMS.
Haz clic en la conexión EKM que quieras definir como predeterminada.
Haz clic en Editar conexión.
En Conexión predeterminada, selecciona la casilla Establecer conexión como predeterminada para LOCATION.
Haz clic en Actualizar conexión.
CLI de gcloud
gcloud kms ekm-config update --location=LOCATION --default-ekm-connection=projects/PROJECT_ID/locations/LOCATION/ekmConnections/DEFAULT_EKM_CONNECTION
Haz los cambios siguientes:
LOCATION
: el Cloud KMS para el que quieres definir la conexión EKM predeterminada.PROJECT_ID
: el nombre del proyecto para el que quieres definir la conexión EKM predeterminada.DEFAULT_EKM_CONNECTION
: el nombre de la conexión EKM que quieras definir como predeterminada para esta ubicación. La ubicación de la conexión EKM debe coincidir con la ubicación indicada enLOCATION
.
API
Para definir la conexión EKM predeterminada de 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"}'
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto para el que quieres definir una conexión EKM predeterminada.LOCATION
: el Cloud KMS para el que quieres definir la conexión EKM predeterminada.DEFAULT_EKM_CONNECTION
: el nombre de la conexión EKM que quieras definir como predeterminada para esta ubicación. La ubicación de la conexión EKM debe coincidir con la que se indica enLOCATION
.
Si se hubiera definido otra conexión EKM como predeterminada para esta ubicación, la conexión EKM seleccionada la sustituirá como predeterminada. Solo puede haber una conexión EKM predeterminada por proyecto y ubicación.