Resumen
Enterprise Key Management (EKM) permite a OpenAI cifrar datos usando una clave maestra que tú controlas. Este documento muestra cómo configurar tu cuenta de GCP para otorgar a OpenAI permisos limitados sobre tu KMS.

Pasos
1. Crea una identidad federada para OpenAI
OpenAI emitirá un token de identidad desde una cuenta de GCP propiedad de OpenAI que tendrá un aspecto similar a este.
Los campos azp y sub son el ID de la cuenta de servicio de OpenAI en GCP
El aud es tu ID de organización de OpenAI. También puedes elegir otra audiencia, como tu ID de proyecto de OpenAI; consulta las instrucciones a continuación
{
"aud": "org-xxxx",
"azp": "105900137572174660365",
"exp": 1747876928,
"iat": 1747873328,
"iss": "https://accounts.google.com",
"sub": "105900137572174660365"
}Este paso reconoce las reclamaciones realizadas por ese token de identidad y permite que tu STS de GCP emita un token de acceso cuando se proporcione ese token de identidad.
Ve a IAM & Admin -> Workload Identity Federation y haz clic en Create Pool

En el paso Create an identity pool, introduce cualquier valor para el nombre del pool.
Recuérdalo para más tarde: tendrás que registrarlo en OpenAI
En el paso Add a provider to pool:
En Select a provider, selecciona OpenID Connect (OIDC)
Introduce cualquier valor para el nombre del proveedor.
En la sección Issuer (URL), introduce https://accounts.google.com
En la sección Audiences
Selecciona Allowed audiences
Introduce la audiencia que OpenAI debe indicar cuando te pasemos un token.
Para ChatGPT o API: puedes introducir el ID de organización de la API de OpenAI (org-xxx)
Para la API: puedes introducir un id de proyecto de API específico para tener más granularidad.

En la sección Attribute mapping
para google.subject introduce assertion.sub

En la sección Attribute conditions
introduce
assertion.sub == "105900137572174660365"
Ahora deberías ver tu workload identity pool y tu workload identity provider en la página https://console.cloud.google.com/iam-admin/workload-identity-pools
Id. del workload identity pool

ID del workload identity provider

2. Asegúrate de que KMS esté habilitado
Ve a https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview para habilitar KMS. No es necesario que crees tu KMS en el mismo proyecto de GCP en el que reconociste la identidad federada de OpenAI; sin embargo, si los proyectos son distintos, el producto KMS debe estar al menos habilitado en ambos proyectos.
3. Crea una nueva clave de KMS
Ve a Security -> Data Protection > Key Management
En la pestaña Overview, haz clic en Create key ring
Elige cualquier nombre para tu key ring
Para Purpose and algorithm, selecciona Symmetric encrypt/decrypt

Una vez que hayas creado un key ring, debería aparecer en la pestaña Key Rings. Haz clic en el key ring.
En los detalles del key ring, haz clic en Create Key
Elige cualquier nombre para tu clave
4. Crea un rol limitado para operaciones de cifrado/descifrado en el KMS
Ve a IAM & Admin -> Roles -> Create role
Introduce cualquier valor para el título y el ID del rol
Haz clic en Add Permissions y, a continuación, añade lo siguiente
cloudkms.cryptoKeyVersions.useToDecrypt
cloudkms.cryptoKeyVersions.useToEncrypt
5. Asigna la identidad federada de OpenAI al rol limitado de KMS para operaciones de cifrado/descifrado
Ve a Security -> Data Protection > Key Management
Haz clic en el nombre de tu key ring y, a continuación, en el nombre de tu clave para ir a la página de detalles de tu clave.
Si no lo tienes, vuelve a la sección Create a KMS
Haz clic en la pestaña Permissions y, a continuación, en el botón Grant Access

Asigna la identidad federada de OpenAI al rol personalizado que creaste anteriormente
En la sección Add principals, introduce principal://iam.googleapis.com/projects/<YOUR_GCP_PROJECT_NUMBER>/locations/global/workloadIdentityPools/<YOUR_GCP_WORKLOAD_IDENTITY_POOL>/subject/105900137572174660365
YOUR_GCP_PROJECT_NUMBER aquí es el proyecto en el que reconociste la identidad federada de OpenAI al crear un YOUR_GCP_WORKLOAD_IDENTITY_POOL. Puede estar, pero no es obligatorio, en el mismo proyecto donde se encuentra tu KMS.
Si los proyectos son distintos, asegúrate de que KMS esté al menos habilitado en el otro proyecto yendo a https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview
En la sección Assign roles, selecciona el rol personalizado que creaste en el paso anterior para permisos limitados de EKM
6. Aplica cualquier restricción adicional en línea con tus propias prácticas de seguridad
Lo anterior es la información mínima requerida que OpenAI necesita para configurar EKM. Puedes aplicar políticas de clave o restricciones adicionales en línea con tus propias prácticas internas de seguridad, siempre que OpenAI pueda llamar a las operaciones de cifrado y descifrado en tu KMS. Cuando llames al punto de acceso de registro de claves con OpenAI que se describe a continuación, validaremos tu configuración.
Después de completar los pasos anteriores
ChatGPT Enterprise
Ponte en contacto con tu contacto de OpenAI y comparte lo siguiente:
"workload_identity_project_number": "123456789012",
El número de proyecto de GCP de 12 dígitos en el que registraste la workload identity de OpenAI
"workload_identity_pool_id": "openai-azure",
El pool que contiene el proveedor de Workload Identity que registraste para OpenAI
"workload_identity_provider_id": "openai-ekm-service-role",
El proveedor de Workload Identity que registraste para OpenAI
"kms_project_id": "adjective-noun-12345",
El nombre del proyecto de GCP donde se encuentra tu KMS
"kms_key_name": "openai-kms-key",
El nombre de la clave maestra del Key Management System
"kms_key_ring_name": "openai-kms-key-ring",
El key ring del Key Management System que contiene la clave maestra que administras
"kms_key_location": "us-east1"
La región donde se encuentra tu clave maestra del Key Management System
Habilitaremos EKM para tu organización/Área de trabajo de ChatGPT.
API
Registra tu clave externa con OpenAI
Sigue las instrucciones de esta referencia de la API Claves externas en la API de administración
Primero, registra tu clave externa a nivel de organización de OpenAI, lo que generará un id de clave externa.
En este paso, validaremos tu configuración en GCP comprobando que podemos autenticarnos en tu KMS.
Esto todavía no añadirá EKM a tu proyecto de OpenAI.
curl -X POST \
-H "Content-type: application/json" \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/external_keys" \
-d '{
"type": "gcp",
"name": "Configuración de GCP EKM",
"workload_identity_project_number": "123456789012",
"workload_identity_pool_id": "openai-azure",
"workload_identity_provider_id": "openai-ekm-service-role",
"audience": <tu id de organización o id de proyecto>,
"kms_project_id": "adjective-noun-12345",
"kms_key_name": "openai-kms-key",
"kms_key_ring_name": "openai-kms-key-ring",
"kms_key_location": "us-east1"
}'A continuación, crea un proyecto de OpenAI asociado a la clave externa. Después de esto, EKM se activa en tu proyecto.
curl -X POST \
-H "Content-type: application/json" \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/projects" \
-d '{
"name": "Algún proyecto",
"external_key_id": "extkey_xxxx"
}'