Présentation
La gestion des clés d'entreprise (EKM) permet à OpenAI de chiffrer les données à l'aide d'une clé maîtresse que vous contrôlez. Ce document explique comment configurer votre compte GCP pour accorder à OpenAI des autorisations limitées sur votre KMS.

Étapes
1. Créez une identité fédérée pour OpenAI
OpenAI émettra un token d'identité depuis un compte GCP appartenant à OpenAI, qui ressemble à ceci.
Les champs azp et sub sont les identifiants du compte de service d'OpenAI dans GCP.
L'aud est votre identifiant d'organisation OpenAI. Vous pouvez également choisir une autre audience, comme votre identifiant de projet OpenAI ; consultez les instructions ci-dessous.
{
"aud" : "org-xxxx",
"azp" : "105900137572174660365",
"exp" : 1747876928,
"iat" : 1747873328,
"iss" : "https://accounts.google.com",
"sub" : "105900137572174660365"
}Cette étape reconnaît les revendications faites par ce token d'identité et permet à votre GCP STS d'émettre un token d'accès lorsque ce token d'identité est fourni.
Allez sur IAM & Administration -> Fédération d'identité de charge de travail et cliquez sur Créer un pool

À l'étape Créer un pool d'identités, saisissez n'importe quel nom pour le nom du pool.
Gardez ceci pour plus tard : vous devrez l'enregistrer auprès d'OpenAI
Dans l'étape Ajouter un fournisseur au pool :
Dans Sélectionner un fournisseur, sélectionnez OpenID Connect (OIDC)
Indiquez n'importe quoi pour le nom du fournisseur.
Dans la section Issuer (URL), saisissez https://accounts.google.com
Dans la section Audiences
Sélectionnez Audiences autorisées
Indiquez l'audience qu'OpenAI doit spécifier lorsque nous vous transmettons un token.
Pour ChatGPT ou l'API : vous pouvez saisir l'identifiant d'organisation de l'API OpenAI (org-xxx)
Pour l'API : vous pouvez indiquer un identifiant de projet API spécifique pour plus de granularité.

Dans la section mappage d'attributs
Pour google.subject, saisissez assertion.sub

Dans la section conditions des attributs
mettez
assertion.sub == "105900137572174660365"
Vous devriez maintenant voir votre pool d'identités de charge de travail et votre fournisseur d'identité de charge de travail répertoriés dans https://console.cloud.google.com/iam-admin/workload-identity-pools page
ID du pool d'identités de charge de travail

ID du fournisseur d'identité de charge de travail

2. Assurez-vous que KMS est activé
Allez sur https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview pour activer KMS. Vous n'êtes pas tenu de créer votre KMS dans le même projet GCP que celui dans lequel vous avez reconnu l'identité fédérée d'OpenAI ; toutefois, si les projets sont différents, le produit KMS doit au moins être activé dans les deux projets.
3. Créer une nouvelle clé KMS
Allez sur Sécurité -> protection des données > gestion des clés
Sous Vue d'ensemble, cliquez sur Créer un trousseau de clés
Choisissez un nom pour votre trousseau de clés
Pour objectif et algorithme, sélectionnez chiffrement-déchiffrement symétrique

Une fois que vous avez créé un trousseau de clés, il devrait être listé dans l'onglet Trousseaux de clés. Cliquez sur le porte-clés.
Dans les détails du trousseau de clés, cliquez sur Créer une clé
Choisissez un nom quelconque pour votre clé
4. Créez un rôle limité pour les opérations de chiffrement/déchiffrement sur le KMS
Allez sur IAM et Admin -> Roles -> Créer un poste
Saisissez n'importe quelle valeur pour l'intitulé de poste et l'ID
Cliquez sur Ajouter des autorisations, puis ajoutez les éléments suivants
cloudkms.cryptoKeyVersions.useToDecrypt
cloudkms.cryptoKeyVersions.useToEncrypt
5. Attribuez l'identité fédérée d'OpenAI au rôle KMS limité pour les opérations de chiffrement-déchiffrement
Allez sur Sécurité -> Protection des données > Gestion des clés
Cliquez sur le nom de votre trousseau de clés, puis cliquez sur le nom de votre clé pour accéder à la page des détails de votre clé.
Si vous ne l'avez, revenez à la section Créer un KMS
Cliquez sur l'onglet Autorisations, puis cliquez sur le bouton Accorder l'accès

Attribuez l'identité fédérée OpenAI au rôle personnalisé que vous avez créé précédemment.
Dans la section Ajouter des principaux, saisissez principal://iam.googleapis.com/projects/<YOUR_GCP_PROJECT_NUMBER>/locations/global/workloadIdentityPools/<YOUR_GCP_WORKLOAD_IDENTITY_POOL>/subject/105900137572174660365
YOUR_GCP_PROJECT_NUMBER correspond au projet dans lequel vous avez reconnu l'identité fédérée d'OpenAI en créant un YOUR_GCP_WORKLOAD_IDENTITY_POOL. Il peut se trouver dans le même projet que votre KMS, mais ce n'est pas obligatoire.
Si les projets sont différents, assurez-vous qu'au moins KMS est activé sur l'autre projet en accédant à https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview
Dans la section Attribuer des rôles, sélectionnez le rôle personnalisé que vous avez créé à l'étape précédente pour des autorisations EKM limitées
6. Appliquez des restrictions supplémentaires conformément à vos propres pratiques de sécurité
Ci-dessus figurent les informations minimales requises dont OpenAI a besoin pour configurer EKM. Vous êtes libre d'appliquer des stratégies ou restrictions supplémentaires relatives aux clés, conformément à vos propres pratiques internes de sécurité, à condition qu'OpenAI puisse appeler les opérations de chiffrement et de déchiffrement sur votre KMS. Lorsque vous appelez l'endpoint d'enregistrement de clé avec OpenAI décrit ci-dessous, nous validerons votre configuration.
Après avoir suivi les étapes ci-dessus
ChatGPT Enterprise
Veuillez contacter votre interlocuteur OpenAI et partager les éléments suivants :
"workload_identity_project_number" : "123456789012",
Le numéro de projet GCP à 12 chiffres où l'identité de charge de travail d'OpenAI a été enregistrée.
"workload_identity_pool_id" : "openai-azure",
Le pool contenant le fournisseur d'identité Workload Identity que vous avez enregistré pour OpenAI
"workload_identity_provider_id" : "openai-ekm-service-role",
Le fournisseur d'identité Workload que vous avez enregistré pour OpenAI
"kms_project_id" : "adjective-noun-12345",
Le nom du projet GCP dans lequel se trouve votre KMS
"kms_key_name" : "openai-kms-key",
Le nom de la clé principale du système de gestion des clés
"kms_key_ring_name" : "openai-kms-key-ring",
Le trousseau de clés du système de gestion des clés contenant la clé principale que vous gérez
"kms_key_location" : "us-east1"
La région où se trouve votre clé principale Key Management System
Nous activerons EKM pour votre organisation ou espace de travail ChatGPT.
API
Enregistrez votre clé externe auprès d'OpenAI
Suivez les instructions de cette référence d'API Clés externes dans l'API de gestion
Tout d'abord, enregistrez votre clé externe au niveau de l'organisation OpenAI, ce qui générera un identifiant de clé externe.
Lors de cette étape, nous allons valider votre configuration sur GCP en vérifiant que nous pouvons nous authentifier auprès de votre KMS.
Ceci n'ajoutera pas encore EKM à votre projet 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" : "GCP EKM Config",
"workload_identity_project_number" : "123456789012",
"workload_identity_pool_id" : "openai-azure",
"workload_identity_provider_id" : "openai-ekm-service-role",
"audience" : <your org id or project id>,
"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"
}'Ensuite, créez un projet OpenAI associé à la clé externe. Après ça, EKM est activé sur votre projet.
curl -X POST \
-H "Content-type : application/json" \
-H "Authorization : Bearer $TOKEN" \
"https://api.openai.com/v1/organization/projects" \
-d '{
"name" : "Un projet",
"external_key_id" : "extkey_xxxx"
}'