For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navigation principale
Theme

Configurez des clés asymétriques

Enregistrez une clé publique gérée par votre fournisseur cloud pour l’utiliser avec OpenAI

Enregistrez une paire de clés asymétriques RSA-3072 de votre fournisseur cloud pour l’utiliser avec OpenAI.

Votre clé privée reste dans AWS KMS, Azure Key Vault ou Google Cloud KMS. Lors de l’enregistrement, OpenAI conserve une copie de la clé publique correspondante.

L’enregistrement d’une clé ne configure ni les fonctionnalités du produit ni le stockage. Ce guide porte sur les clés utilisées pour le déchiffrement PSP.

Avant de commencer

  • Munissez-vous de votre identifiant d’organisation. Utilisez la même organisation pour établir la relation de confiance avec votre fournisseur cloud, enregistrer la clé et accéder à l’API.
  • Créez une clé API d’administration de l’organisation disposant d’un accès en lecture et en écriture aux clés externes. Chargez-la de manière sécurisée dans la variable OPENAI_ADMIN_KEY. Les clés d’inférence de projet ne permettent pas d’effectuer cette opération.
  • Vérifiez que vous disposez des autorisations nécessaires pour créer une clé RSA-3072 active et accorder à OpenAI l’accès en lecture à la clé publique dans les limites décrites dans ce guide.
  • Réservez l’utilisation de la clé privée aux utilisateurs autorisés et conservez les anciennes versions de la clé tant que des enregistrements en dépendent.

Configurez une clé chez votre fournisseur cloud

Suivez les étapes propres à votre fournisseur avant d’enregistrer la clé. Chaque configuration utilise RSA-3072 et limite les droits d’OpenAI à la lecture de la clé publique et de ses métadonnées.

Enregistrez votre clé

Les exemples utilisent curl et un shell compatible avec Bash. Chargez OPENAI_ADMIN_KEY de manière sécurisée, puis définissez votre identifiant d’organisation :

API_BASE="https://api.openai.com/v1"
ORG_ID="<OPENAI_ORG_ID>"

: "${OPENAI_ADMIN_KEY:?Load your organization admin key securely}"

KEYS_URL="$API_BASE/organization/external_keys"

Préparez la requête d’enregistrement

L’énumération purpose accepte ekm (valeur par défaut) ou psp_decryption. Utilisez psp_decryption pour les clés asymétriques de ce guide. La valeur ekm est réservée à Enterprise Key Management (EKM).

Enregistrez la requête correspondant à votre fournisseur dans registration.json. Remplacez les valeurs d’exemple, car les variables du shell ne sont pas interprétées dans le JSON.

Requête pour AWS KMS

{
  "type": "aws",
  "purpose": "psp_decryption",
  "name": "asymmetric-key-aws",
  "role_arn": "<CUSTOMER_ROLE_ARN>",
  "external_id": "<OPENAI_ORG_ID>",
  "kms_arn": "<CUSTOMER_KMS_KEY_ARN>"
}

Requête pour Azure Key Vault

{
  "type": "azure",
  "purpose": "psp_decryption",
  "name": "asymmetric-key-azure",
  "tenant_id": "<CUSTOMER_TENANT_ID>",
  "vault_uri": "https://<CUSTOMER_VAULT_NAME>.vault.azure.net",
  "key_name": "<OPENAI_ORG_ID>--asymmetric-key",
  "key_version": "<CUSTOMER_KEY_VERSION>"
}

Requête pour Google Cloud KMS

{
  "type": "gcp",
  "purpose": "psp_decryption",
  "name": "asymmetric-key-gcp",
  "workload_identity_project_number": "<CUSTOMER_GCP_PROJECT_NUMBER>",
  "workload_identity_pool_id": "openai-keys",
  "workload_identity_provider_id": "openai-google",
  "audience": "<OPENAI_ORG_ID>",
  "kms_project_id": "<CUSTOMER_KMS_PROJECT_ID>",
  "kms_key_ring_name": "asymmetric-keys",
  "kms_key_name": "asymmetric-key",
  "kms_key_location": "us-central1",
  "kms_key_version": "1"
}

1. Enregistrez et validez la clé

curl --fail-with-body -sS "$KEYS_URL" \
  -H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
  -H "OpenAI-Organization: $ORG_ID" \
  -H "Content-Type: application/json" \
  --data @registration.json

L’API valide la clé avant de l’enregistrer. En cas de succès, elle renvoie le code HTTP 200 avec un identifiant extkey et la configuration de votre fournisseur. Exemple de champs renvoyés :

{
  "id": "extkey_11111111111111111111111111111111",
  "object": "organization.external_key",
  "name": "asymmetric-key-gcp",
  "type": "gcp",
  "purpose": "psp_decryption",
  "api_project_ids": []
}

Conservez l’identifiant d’enregistrement renvoyé :

KEY_ID="<EXTERNAL_KEY_ID>"

2. Validez à nouveau la clé (facultatif)

GET renvoie les informations enregistrées. POST /validate vérifie à nouveau les droits d’accès actuels et la validité de la clé en la comparant à la clé publique enregistrée. Cette opération ne déchiffre aucun enregistrement et ne met pas à jour la copie de la clé publique.

curl --fail-with-body -sS "$KEYS_URL/$KEY_ID" \
  -H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
  -H "OpenAI-Organization: $ORG_ID"
curl --fail-with-body -sS -X POST "$KEYS_URL/$KEY_ID/validate" \
  -H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
  -H "OpenAI-Organization: $ORG_ID"

Réponse attendue (HTTP 200) :

{ "status": "success" }

Relancez la validation après toute modification de la clé, des autorisations ou du réseau. Attendez que les modifications IAM se propagent avant de réessayer.

Pour utiliser votre clé enregistrée pour le déchiffrement PSP, sélectionnez-la pour un projet.

Listez les clés

Utilisez purpose=psp_decryption pour lister les clés asymétriques enregistrées pour cet usage. Sans filtre, l’API renvoie les clés enregistrées pour tous les usages. Le filtre purpose=ekm renvoie uniquement les clés EKM.

curl --fail-with-body -sS --get "$KEYS_URL" \
  -H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
  -H "OpenAI-Organization: $ORG_ID" \
  --data-urlencode "purpose=psp_decryption" \
  --data-urlencode "order=asc" \
  --data-urlencode "limit=20"

Tant que has_more vaut true, demandez la page suivante en donnant à after la valeur de last_id. Conservez les mêmes valeurs pour purpose, order et limit.

Remplacez une clé

  1. Créez une nouvelle clé sur AWS ou une nouvelle version de la clé sur Azure ou GCP, puis accordez l’accès en lecture.
  2. Enregistrez la nouvelle clé ou la nouvelle version.
  3. Sélectionnez le nouvel identifiant extkey dans le projet et vérifiez la sélection.

Chaque enregistrement conserve un instantané de la clé. La rotation des clés chez le fournisseur cloud ne met pas à jour ces instantanés. Conservez les anciennes clés privées pour les enregistrements qui en dépendent. La sélection d’une nouvelle clé n’entraîne pas la migration des enregistrements existants.

Supprimez une clé

Dans chaque projet actif, effacez la sélection ou sélectionnez une autre clé avant de supprimer l’enregistrement de la clé :

curl --fail-with-body -sS -X DELETE "$KEYS_URL/$KEY_ID" \
  -H "Authorization: Bearer $OPENAI_ADMIN_KEY" \
  -H "OpenAI-Organization: $ORG_ID"

La suppression renvoie le code HTTP 200 avec object: "organization.external_key.deleted". Votre clé reste chez votre fournisseur cloud.

Dépannage

Erreur Points à vérifier
401 ou 403 Utilisez une clé API d’administration de l’organisation et vérifiez qu’elle permet d’enregistrer des clés externes.
400 external_key_provider_error Vérifiez la relation de confiance avec le fournisseur cloud, les autorisations de lecture et l’accès réseau. Vérifiez également que la clé est active et qu’elle utilise le bon algorithme.
400 lors de la validation de la requête Vérifiez l’usage indiqué, l’ARN de la clé AWS elle-même et la version exacte de la clé Azure ou GCP.
404 Vérifiez l’identifiant d’enregistrement et l’organisation. Vous ne pouvez pas utiliser un enregistrement supprimé ou appartenant à une autre organisation.
external_key_used_by_active_projects Effacez ou remplacez la sélection dans tous les projets actifs.
La clé ne correspond plus à la clé enregistrée Enregistrez la clé de remplacement et sélectionnez son nouvel identifiant.

Si vous contactez l’assistance, communiquez l’erreur et la valeur de x-request-id. Ne communiquez jamais vos informations d’authentification.

Guides associés