ZDR avec traitement privé des contrôles de sécurité
Activez les contrôles de sécurité confidentiels dans vos workflows API
La politique de non-conservation des données avec traitement privé des contrôles de sécurité (ZDR avec PSP) permet d’effectuer des contrôles de sécurité automatisés hors ligne sans qu’OpenAI conserve les prompts ou les réponses des clients. Ce guide décrit le fonctionnement de la ZDR avec PSP et vos responsabilités opérationnelles. Pour en savoir plus sur l’architecture et le modèle de sécurité, consultez le livre blanc technique sur le traitement privé des contrôles de sécurité.
Présentation du traitement privé des contrôles de sécurité (1 min 31 s).
Trois principes de conception
Les clients gardent le contrôle de leur contenu
Le contenu des clients est conservé dans un espace de stockage qu’ils contrôlent. Ils gèrent les permissions ainsi que l’autorisation de gestion des clés d’entreprise (EKM) nécessaires pour récupérer et déchiffrer les enregistrements de sécurité protégés.
Aucun examen humain
Les contrôles de sécurité ne doivent pas donner au personnel d’OpenAI un nouveau moyen de lire le contenu protégé des clients. Le contenu chiffré est déchiffré dans un environnement d’exécution de sécurité approuvé, doté d’une attestation matérielle et inaccessible aux personnes. Seuls des signaux de sécurité de portée limitée et des métadonnées opérationnelles peuvent sortir en clair de cet environnement de contrôle protégé par PSP.
Conservation du contenu aux seules fins de sécurité
Le contenu conservé dans l’espace de stockage du client sert uniquement aux fins de sécurité approuvées. Il ne peut ni servir à entraîner des modèles ni être mis à la disposition d’autres équipes d’OpenAI ou de ses partenaires.
Fonctionnement de la ZDR avec PSP
L’architecture comprend deux flux :
Le flux de traitement des requêtes API et de conservation protège le contenu API éligible et le conserve dans un conteneur de stockage contrôlé par le client.
Le pipeline de sécurité asynchrone récupère les enregistrements uniquement pour effectuer les contrôles de sécurité automatisés approuvés. Il ne communique que des décisions de sécurité de portée limitée.
Requêtes API et conservation
Une interaction, composée de votre prompt et de la réponse du modèle, est sélectionnée pour un contrôle à la suite d’un signalement par un classifieur de sécurité ou en application d’une politique d’échantillonnage approuvée. Un signalement ne suffit pas à établir une infraction aux règles.
Le système chiffre l’enregistrement et l’écrit dans votre espace de stockage cloud régional. OpenAI conserve dans un index les métadonnées opérationnelles et une référence à l’emplacement de stockage, sans conserver de copie du contenu. Le chiffrement et le stockage s’effectuent de manière asynchrone, sans bloquer l’inférence.
Pipeline de sécurité asynchrone
La ZDR avec PSP récupère les enregistrements chiffrés dans votre espace de stockage et vérifie qu’ils peuvent être déchiffrés. L’environnement d’exécution des contrôles de sécurité dispose d’une attestation matérielle et bloque tout accès humain. Il est conçu pour être la seule charge de travail d’OpenAI capable de déchiffrer le contenu des clients. Il effectue des contrôles de sécurité automatisés à l’aide d’un prompt de contrôle approuvé et d’un schéma de sortie qui n’expose pas le contenu des clients.
Seuls des signaux de sécurité prédéfinis de portée limitée et des métadonnées opérationnelles approuvées peuvent sortir en clair de l’environnement de contrôle. Les résultats détaillés sont chiffrés avant de quitter l’environnement d’exécution, puis stockés dans votre espace de stockage cloud avec la même date d’expiration que l’enregistrement d’origine. La ZDR avec PSP chiffre les enregistrements et les écrit dans votre espace de stockage cloud régional avec une durée de vie (TTL) de 30 jours.
Chiffrement du contenu des clients
Chaque enregistrement conservé dans l’espace de stockage du client bénéficie de deux couches de chiffrement :
Chiffrement HPKE géré par OpenAI : la couche interne réserve le déchiffrement du contenu des clients à l’environnement d’exécution autorisé pour les contrôles de sécurité.
Chiffrement géré par le client : la gestion des clés d’entreprise (EKM) ajoute une couche externe à l’aide du service de gestion des clés que vous contrôlez.
Lorsque l’EKM est activée, la clé de déchiffrement interne d’OpenAI ne suffit pas pour déchiffrer un enregistrement stocké. Vous devez également autoriser l’utilisation de la clé que vous gérez. Si vous révoquez cette autorisation, les enregistrements conservés ne pourront plus être déchiffrés. La révocation ne les supprime pas et n’annule pas les traitements déjà effectués.
Nous vous recommandons d’activer l’EKM pour bénéficier de ce contrôle supplémentaire. Le service de gestion des clés (KMS) qui conserve votre clé EKM peut se trouver dans une autre région que celle de votre espace de stockage configuré. Consultez la FAQ technique sur l’EKM pour l’autorisation et la révocation, et le livre blanc technique pour le chiffrement, l’informatique confidentielle, les garde-fous et la transparence.
Le déchiffrement PSP vous permet d’utiliser une clé asymétrique que vous contrôlez pour déchiffrer le contenu des clients dans les enregistrements PSP conservés dans votre espace de stockage cloud connecté. OpenAI utilise la clé publique, tandis que la clé privée reste dans votre service cloud de gestion des clés. Cette fonctionnalité est distincte de l’EKM et ne donne pas au personnel d’OpenAI accès à votre contenu.
Consultez la section Configuration des clés asymétriques pour configurer AWS KMS, Azure Key Vault ou Google Cloud KMS et enregistrer votre clé. Vérifiez auprès de votre contact chez OpenAI que le déchiffrement PSP est disponible et activé. L’enregistrement d’une clé n’active pas PSP et ne configure pas le stockage. Vous ne pouvez déchiffrer avec cette clé que les enregistrements écrits alors que le déchiffrement PSP était activé pour celle-ci. Les enregistrements existants ne sont pas convertis.
Pour connaître la procédure de déchiffrement, le format des enregistrements et la méthode de dérivation des clés, consultez la section Déchiffrement des enregistrements PSP.
Utilisez une clé API d’administration de l’organisation disposant d’un accès en lecture et en écriture au projet. Chargez-la de manière sécurisée dans OPENAI_ADMIN_KEY. Les clés d’inférence du projet ne conviennent pas. Les exemples utilisent curl et un shell compatible avec Bash.
Définissez votre identifiant d’organisation, l’identifiant du projet et l’identifiant extkey renvoyé lors de l’enregistrement de la clé :
Attribuez à psp_decryption_key_id l’identifiant extkey renvoyé pour la même organisation. Conservez la valeur de external_key_id, qui détermine la clé EKM du projet.
Les listes de projets renvoient également psp_decryption_key_id. Le champ api_project_ids de la clé enregistrée indique les projets associés. Si vous omettez psp_decryption_key_id, la sélection est conservée. Vous pouvez sélectionner à nouveau le même identifiant.
Connectez votre propre bucket AWS S3, conteneur Azure Blob, bucket Google Cloud Storage ou bucket Oracle Cloud Infrastructure (OCI) Object Storage à un projet OpenAI. Suivez les étapes de configuration propres à votre fournisseur cloud, puis enregistrez et validez la connexion.
La ZDR avec PSP s’active par projet. Une fois activée, la politique PSP s’applique à tout le trafic API du projet, y compris aux requêtes adressées à des modèles qui, par ailleurs, ne nécessitent pas PSP. Pour utiliser la ZDR sans PSP avec les modèles éligibles, envoyez ces requêtes via un projet distinct configuré pour la ZDR sans PSP.
Avant de commencer
Les organisations déjà approuvées pour la politique de non-conservation des données peuvent configurer la ZDR avec PSP directement dans la console API. Si votre organisation n’a pas reçu cette approbation, consultez les conditions d’éligibilité et d’approbation.
Vous pouvez choisir n’importe quelle région de stockage prise en charge qui respecte les exigences de résidence des données du projet. Vous devez disposer des permissions nécessaires pour créer un espace de stockage et déléguer l’accès dans votre compte cloud.
Demandez à un administrateur de l’organisation d’enregistrer et de valider le stockage dans la console API. Pour l’API de gestion, utilisez une clé API d’administration de l’organisation OpenAI. Les administrateurs de projet peuvent consulter les instructions et l’état du stockage. Une clé d’inférence du projet ne permet pas d’appeler l’API de gestion.
Ouverture de la configuration du stockage dans la console API
Ouvrez Paramètres de l’organisation > Contrôles des données > Conservation des données, puis sélectionnez Connecter un stockage.
Dans Connecter un stockage externe, choisissez AWS, Azure, GCP ou OCI, puis sélectionnez votre projet. Vous pouvez aussi ouvrir Connecter un stockage depuis Paramètres du projet > Conservation des données.
Configurez votre stockage cloud en suivant les étapes ci-dessous. Saisissez ensuite les informations du stockage dans la boîte de dialogue et sélectionnez Connecter et valider.
Configuration par fournisseur cloud
Si vous utilisez AWS, suivez les étapes ci-dessous. Pour les autres fournisseurs cloud, passez à Azure Blob Storage, Google Cloud Storage ou OCI Object Storage.
Tutoriel de configuration d’AWS (2 min 10 s, sans son). Les instructions écrites
ci-dessous indiquent les valeurs à utiliser.
1. Créez le bucket
Créez un bucket S3 dédié dans une région compatible avec les exigences de résidence des données du projet. Si la résidence des données est désactivée, vous pouvez choisir n’importe quelle région pour votre bucket.
Laissez les ACL désactivées.
Activez Bloquer tous les accès publics.
Notez l’ARN du bucket. Vous l’utiliserez comme valeur de CUSTOMER_BUCKET_ARN ci-dessous.
2. Configurez la règle de cycle de vie
Dans le bucket, ouvrez Gestion > Créer une règle de cycle de vie et utilisez les paramètres suivants :
Nom de la règle :psp-retention
Préfixe :openai/
Action : faire expirer les versions actuelles des objets
Âge : 30 jours
Activez la règle. Vérifiez qu’aucune autre règle ne fait expirer ces enregistrements plus tôt. Cette règle détermine la date d’expiration des objets. L’expiration de la clé de déchiffrement d’OpenAI est gérée séparément.
3. Créez la politique d’accès
Dans IAM > Politiques > Créer une politique, choisissez JSON. Remplacez CUSTOMER_BUCKET_ARN par l’ARN de votre bucket, par exemple arn:aws:s3:::your-psp-bucket, puis enregistrez la politique sous le nom psp-bucket-policy.
Dans IAM > Rôles > Créer un rôle, choisissez Politique de confiance personnalisée.
Utilisez la politique ci-dessous. Remplacez CUSTOMER_PROJECT_ID par l’identifiant de votre projet OpenAI. Conservez l’ARN du principal OpenAI tel quel.
Associez psp-bucket-policy au rôle que vous créez. Vous pouvez nommer ce rôle psp-role. Notez son ARN comme valeur de CUSTOMER_ROLE_ARN. L’identifiant de projet dans sts:ExternalId doit correspondre au projet que vous enregistrez.
Passez à la section Enregistrement du stockage.
Si vous utilisez Azure, suivez les étapes ci-dessous.
1. Créez le compte de stockage
Créez un compte dédié dans le cloud commercial Azure. Choisissez une région de stockage approuvée aux États-Unis ou dans l’UE qui respecte les exigences de résidence des données du projet.
Type de compte :StorageV2
Informations de base > Performances : Standard
Informations de base > Redondance : LRS ou ZRS (de préférence)
Avancé > Niveau d’accès : Chaud
Avancé > Espace de noms hiérarchique : désactivé
Mise en réseau > Accès au réseau public : activé depuis tous les réseaux
Sécurité > Accès par clé au compte de stockage : désactivé
Sécurité > Autorisation Microsoft Entra : activée
Vérifiez que le paramètre réseau respecte les exigences de votre environnement cloud. Utilisez le point de terminaison Blob principal du compte. Les points de terminaison de clouds souverains ou personnalisés ne conviennent pas.
2. Créez le conteneur
Créez un conteneur privé dans Compte de stockage > Stockage des données > Conteneurs > Ajouter un conteneur. Ouvrez Conteneur > Paramètres > Métadonnées et attribuez à openai_organization_id la valeur exacte de votre identifiant d’organisation OpenAI. Ce champ est obligatoire.
Pour réserver le conteneur à un seul projet OpenAI, attribuez également à openai_project_id l’identifiant exact du projet. Ce champ est facultatif. Seul le projet correspondant peut enregistrer ou valider le conteneur, y lire des données ou y écrire.
Deux projets OpenAI de la même organisation peuvent partager le conteneur si vous omettez openai_project_id et si la région de stockage respecte les exigences de résidence des données des deux projets. Enregistrez et validez le conteneur pour chaque projet.
Ajoutez ces métadonnées au conteneur, et non au compte de stockage ou aux blobs individuels.
3. Configurez la règle de cycle de vie
Dans Compte de stockage > Gestion des données > Gestion du cycle de vie > Ajouter, ajoutez une règle activée qui s’applique à tous les blobs de blocs dans leur version actuelle (blobs de base) du compte dédié :
Action : supprimer 30 jours après la dernière modification
Filtres : aucun filtre par préfixe ou par balise
4. Accordez l’accès à OpenAI
Demandez à l’administrateur de votre annuaire d’ajouter l’application d’OpenAI à votre locataire. Remplacez CUSTOMER_TENANT_ID ci-dessous par l’identifiant de votre locataire Azure. Conservez l’identifiant de l’application tel quel.
Si l’application existe déjà, utilisez az ad sp show avec le même --id et la même requête. Notez le nom de l’application et son identifiant d’objet propre au locataire.
Dans votre compte de stockage, ouvrez Compte de stockage > Contrôle d’accès (IAM) > Ajouter une attribution de rôle. Sélectionnez le rôle Lecteur, réglez Attribuer l’accès à sur Utilisateur, groupe ou principal de service, puis recherchez et sélectionnez CSG - Azure Blob Storage Prod.
Sélectionnez ensuite le rôle Contributeur aux données Blob du stockage, réglez Attribuer l’accès à sur Utilisateur, groupe ou principal de service, puis recherchez et sélectionnez CSG - Azure Blob Storage Prod.
OpenAI gère les informations d’identification de l’application. Ne créez et ne partagez aucune clé de stockage, aucun jeton SAS ni aucun secret client.
1. Créez le bucket
Dans Cloud Storage > Buckets, créez un bucket à un emplacement compatible avec les exigences de résidence des données de votre projet OpenAI. Utilisez les paramètres suivants :
Prévention de l’accès public : activée.
Contrôle des accès : uniforme.
Vous pouvez désactiver la politique de suppression réversible (pour la récupération des données) activée par défaut. L’étape suivante configure la suppression selon le cycle de vie.
Pour les projets à portée mondiale, répétez cette configuration GCP dans chaque région que vous comptez utiliser.
2. Configurez la règle de cycle de vie
Dans l’onglet Cycle de vie du bucket, ajoutez une règle Supprimer l’objet avec les conditions suivantes :
Le nom de l’objet commence par le préfixe : openai/.
Âge : 30 jours.
3. Relevez le numéro de votre projet Google Cloud
Dans IAM et administration > Paramètres, copiez la valeur numérique du champ Numéro du projet du projet qui contient votre pool d’identités de charge de travail. Elle correspond à <CUSTOMER_GCP_PROJECT_NUMBER>.
4. Créez le pool d’identités de charge de travail et le fournisseur
Dans IAM et administration > Fédération d’identités de charge de travail, créez un pool d’identités de charge de travail et ajoutez un fournisseur OpenID Connect (OIDC) avec les paramètres suivants :
Émetteur (URL) : https://accounts.google.com.
Audiences autorisées : <CUSTOMER_PROJECT_ID> (identifiant de votre projet OpenAI).
Configurez les correspondances d’attributs suivantes :
Attribut Google
Valeur OIDC
google.subject
assertion.sub
attribute.openai_project
assertion.aud
Définissez la condition d’attribut ci-dessous. Conservez la valeur 112981926705442324573 du sujet de l’identité de production d’OpenAI.
Notez les identifiants du pool et du fournisseur. Ils correspondent respectivement à <CUSTOMER_GCP_POOL_ID> et à <CUSTOMER_GCP_PROVIDER_ID>.
Plusieurs projets OpenAI
Pour plusieurs projets appartenant au même client, vous pouvez réutiliser le pool et le fournisseur. Ajoutez chaque identifiant de projet aux Audiences autorisées et mettez à jour la condition d’attribut :
Sélectionnez le rôle personnalisé créé à l’étape 5.
Passez à la section Enregistrement du stockage.
1. Créez le bucket
Dans la console OCI, ouvrez Stockage > Stockage d’objets et stockage d’archives > Buckets et créez un bucket dédié. Dans le tableau ci-dessous, choisissez une région commerciale compatible avec les exigences de résidence des données du projet :
Niveau de stockage : Standard, avec changement automatique de niveau désactivé
Visibilité : privé
Gestion des versions d’objets : désactivée
Laissez la réplication désactivée. Notez le nom du bucket et l’identifiant de la région comme valeurs respectives de CUSTOMER_BUCKET_NAME et de CUSTOMER_OCI_REGION. Ouvrez Profil, sélectionnez Location, puis le nom de votre location, et copiez son OCID comme valeur de CUSTOMER_TENANCY_OCID. Votre location doit être abonnée à la région du bucket.
2. Ajoutez les balises du bucket
Ajoutez les balises suivantes lors de la création du bucket, ou ouvrez son onglet Balises et sélectionnez Ajouter. Réglez Espace de noms sur Aucun (balise à format libre) et utilisez les identifiants exacts de votre organisation et de votre projet OpenAI :
Clé
Valeur
openai_organization_id
CUSTOMER_ORG_ID
openai_project_id
CUSTOMER_PROJECT_ID
Utilisez les mêmes identifiants dans la politique d’accès et lors de l’enregistrement du stockage. Chaque bucket est associé à une seule organisation OpenAI et à un seul projet.
3. Accordez l’accès à OpenAI
Dans Identité et sécurité > Politiques, sélectionnez le compartiment racine de votre location et créez une politique nommée psp-storage-access. Activez Afficher l’éditeur manuel et saisissez les instructions suivantes en remplaçant les paramètres CUSTOMER_... par le nom du bucket, la région et les identifiants de votre organisation et de votre projet OpenAI. Conservez les valeurs des OCID de la location et du groupe d’OpenAI telles quelles.
Define tenancy OpenAICSG as ocid1.tenancy.oc1..aaaaaaaa4kzwe5jdr4gsxft7dfnwbnp3aozhxeskabsqo7czdkbp6fkh3uhaDefine group OpenAICSGProduction as ocid1.group.oc1..aaaaaaaanuot5i5kooasr6qh6qo4ohqljrrxx3javkl2tkedb7ljsluq62saAdmit group OpenAICSGProduction of tenancy OpenAICSG to {OBJECTSTORAGE_NAMESPACE_READ} in tenancyAdmit group OpenAICSGProduction of tenancy OpenAICSG to {BUCKET_READ} in tenancy where target.bucket.name = 'CUSTOMER_BUCKET_NAME'Admit group OpenAICSGProduction of tenancy OpenAICSG to {OBJECT_READ, OBJECT_CREATE, OBJECT_OVERWRITE} in tenancy where all {target.bucket.name = 'CUSTOMER_BUCKET_NAME', target.object.name = 'openai/CUSTOMER_ORG_ID/CUSTOMER_PROJECT_ID/*'}Allow service objectstorage-CUSTOMER_OCI_REGION to {BUCKET_INSPECT, BUCKET_READ, OBJECT_INSPECT, OBJECT_DELETE} in tenancy where target.bucket.name = 'CUSTOMER_BUCKET_NAME'
Cette politique permet à OpenAI de rechercher votre espace de noms Object Storage, de lire la configuration du bucket, ainsi que de lire et d’écrire les objets dont le nom commence par le préfixe du projet. La recherche de l’espace de noms nécessite une permission au niveau de la location, sans condition portant sur le bucket. La dernière instruction permet au service Object Storage régional d’Oracle de supprimer les objets expirés. Pour la région us-ashburn-1, utilisez objectstorage-us-ashburn-1 comme nom de service.
Enregistrez la politique. OpenAI gère ses informations d’identification. Vous n’avez pas besoin de créer ni de partager de clé de signature d’API ou de clé d’accès.
4. Configurez la règle de cycle de vie
Ouvrez l’onglet Politiques du bucket. Sous Règles de politique de cycle de vie, sélectionnez Créer une règle et utilisez les paramètres suivants :
Nom :psp-retention
Cible : objets
Action de cycle de vie : supprimer
Nombre de jours : 30
Développez les Options avancées et laissez le champ État sur Activé. Sous Filtres de nom d’objet, sélectionnez Ajouter un filtre, choisissez Inclure par préfixe et saisissez openai/CUSTOMER_ORG_ID/CUSTOMER_PROJECT_ID/, en conservant la barre oblique finale.
Enregistrez la règle. Si OCI propose d’ajouter automatiquement les permissions de cycle de vie, conservez l’autorisation limitée au bucket définie à l’étape 3. Vérifiez qu’aucune autre règle ne supprime ces objets plus tôt ni ne les déplace vers le stockage d’archives. Une règle de conservation ne remplace pas la règle de suppression liée au cycle de vie.
Passez à la section Enregistrement du stockage.
Enregistrement du stockage
Une fois le stockage cloud configuré, choisissez pour le projet une politique de conservation des données de base compatible avec le traitement privé des contrôles de sécurité. Vous pouvez associer ce traitement à la politique de non-conservation des données ou à la surveillance modifiée des abus. La politique choisie reste active pendant que le traitement privé des contrôles de sécurité utilise votre stockage connecté. Utilisez ensuite la console API ou l’API de gestion pour enregistrer et valider votre stockage. Une seule de ces méthodes suffit.
Option 1 : console API
Connectez-vous en tant qu’administrateur de l’organisation. La console API utilise votre session. Cette méthode ne nécessite ni clé API d’administration ni commandes curl.
1. Ouvrez la boîte de dialogue de connexion du stockage
Ouvrez Paramètres de l’organisation > Contrôles des données > Conservation des données et sélectionnez Connecter un stockage. Vous pouvez aussi connecter le stockage depuis Paramètres du projet > Conservation des données.
2. Saisissez les informations du stockage
Choisissez AWS, Azure, GCP ou OCI, puis sélectionnez le projet. Sous Politique de conservation des données, sélectionnez Politique de non-conservation des données avec traitement privé des contrôles de sécurité ou Surveillance modifiée des abus avec traitement privé des contrôles de sécurité, selon les politiques disponibles pour votre organisation. Si vous avez ouvert la boîte de dialogue depuis les paramètres du projet, celui-ci est déjà sélectionné. Si la section Stockage enregistré s’affiche, choisissez Connecter un nouveau stockage pour ajouter une destination.
Pour AWS, saisissez l’ARN du bucket et l’ARN du rôle IAM relevés lors de la configuration du stockage cloud.
Pour Azure, renseignez les champs Identifiant du locataire, Identifiant de l’abonnement, Groupe de ressources, Nom du compte de stockage et Nom du conteneur. Faites défiler la boîte de dialogue vers le bas pour remplir tous les champs.
Pour GCP, renseignez les champs Nom du bucket, Numéro du projet d’identités de charge de travail, Identifiant du pool d’identités de charge de travail et Identifiant du fournisseur d’identités de charge de travail. Faites défiler la boîte de dialogue vers le bas pour remplir tous les champs.
Pour OCI, renseignez les champs OCID de la location, Région et Nom du bucket. Utilisez l’identifiant de la région, par exemple us-ashburn-1, et le nom du bucket, et non son OCID ou son URL. OpenAI détermine automatiquement l’espace de noms Object Storage. Faites défiler la boîte de dialogue vers le bas pour remplir tous les champs.
3. Connectez et validez le stockage
Sélectionnez Connecter et valider. La console API sauvegarde la politique de conservation des données choisie comme politique de base, enregistre le stockage, exécute la validation, puis actualise l’état du stockage et celui du projet. Si la validation réussit, le traitement privé des contrôles de sécurité est activé et la politique de base choisie reste en vigueur.
Attendez que la console affiche Stockage validé et confirme que le traitement privé des contrôles de sécurité est actif pour le projet, puis sélectionnez Terminé.
Si la validation échoue après l’enregistrement, corrigez le problème signalé et sélectionnez Réessayer la validation. Pour reprendre plus tard, sélectionnez la destination sous Stockage enregistré et choisissez Valider le stockage. Si la console API ne parvient pas à actualiser le résultat, sélectionnez Actualiser l’état avant de recommencer.
Option 2 : API de gestion
Utilisez une clé API d’administration de l’organisation pour cette méthode. Définissez la politique de base du projet pour la conservation des données, enregistrez le stockage, puis suivez l’étape 4. Vérifiez votre configuration pour exécuter la validation.
1. Préparez les paramètres de l’API
Chargez de manière sécurisée la clé API d’administration de votre organisation dans OPENAI_ADMIN_KEY.
Attribuez à OPENAI_API_BASE le point de terminaison confirmé pour votre projet : https://api.openai.com pour une portée mondiale, https://us.api.openai.com pour les États-Unis ou https://eu.api.openai.com pour l’Europe.
Remplacez les paramètres fictifs ci-dessous par ce point de terminaison et votre identifiant d’organisation OpenAI. Exécutez les commandes suivantes dans la même session shell.
2. Définissez la politique de conservation de base
Avant d’enregistrer le stockage, définissez pour le projet une politique de conservation de base compatible avec le traitement privé des contrôles de sécurité. Utilisez zero_data_retention pour la politique de non-conservation des données (ZDR) ou modified_abuse_monitoring pour la surveillance modifiée des abus (MAM). La politique choisie reste active après l’activation du traitement privé des contrôles de sécurité.
Pour la surveillance modifiée des abus, envoyez plutôt {"retention_type":"modified_abuse_monitoring"}. En cas de réussite, la réponse contient object: "project.data_retention" et le champ type indiquant la politique choisie.
3. Envoyez la requête d’enregistrement
Exécutez uniquement la requête correspondant à votre fournisseur. Remplacez chaque paramètre CUSTOMER_... par la valeur qui correspond à vos identifiants ou aux ressources créées.
La réponse contient un id commençant par extstorage_ ainsi que status: "pending". Conservez cet identifiant pour la validation. La console API affiche En attente de validation et conserve la politique de base choisie pour la conservation des données du projet. Le traitement privé des contrôles de sécurité ne devient actif qu’une fois la validation réussie.
4. Vérifiez votre configuration
Pour valider le stockage via l’API, remplacez EXTERNAL_STORAGE_ID par l’identifiant renvoyé lors de l’enregistrement, puis exécutez la commande suivante :
En cas de réussite, la réponse contient status: "validated". La validation vérifie la configuration et l’accès, puis active le traitement privé des contrôles de sécurité avec le stockage que vous gérez. La politique de base choisie pour la conservation des données reste en vigueur. La console API affiche l’état Validé et la politique combinée du projet, par exemple Politique de non-conservation des données avec traitement privé des contrôles de sécurité ou Surveillance modifiée des abus avec traitement privé des contrôles de sécurité.
Si vous avez utilisé l’API de gestion, récupérez les informations de stockage enregistrées :
Quelle que soit la méthode utilisée, ouvrez Paramètres du projet > Conservation des données et sélectionnez Actualiser. Vérifiez la destination, le fournisseur, la zone géographique et l’état Validé, puis assurez-vous que la politique de base choisie s’affiche avec la mention du traitement privé des contrôles de sécurité. Le tableau de conservation des données de l’organisation indique également le stockage et son état pour chaque projet.
L’état Validé indique qu’une vérification a réussi. Il ne rend pas compte en continu de l’état de fonctionnement du stockage. Actualiser ne relance pas la validation. Pour surveiller le stockage et le valider à nouveau, consultez la section Exploitation et dépannage.
Vérification de l’état du stockage
Ouvrez Paramètres de l’organisation > Contrôles des données > Conservation des données pour consulter le tableau des projets, ou Paramètres du projet > Conservation des données pour consulter les informations de stockage du projet. Vérifiez la destination et la zone géographique, puis consultez l’état. Vous pouvez également récupérer les informations de stockage enregistrées via l’API en suivant la section Configuration et vérification du stockage.
En attente de validation (pending) : le stockage est enregistré, mais n’a pas encore passé la validation avec succès. La politique de conservation du projet reste inchangée tant que la validation n’a pas réussi.
Validé (validated) : le stockage a passé une vérification avec succès. Cela ne garantit pas que la connexion fonctionne actuellement.
Intervention requise (unhealthy) : une vérification a détecté un problème de stockage ou de configuration. Corrigez la cause du problème et relancez la validation.
Actualiser recharge l’état enregistré sans tester la connexion. Une défaillance en cours d’exécution ne change pas nécessairement l’état affiché. Si la console API ne parvient pas à charger les informations du stockage, interrogez l’API avant de conclure à une panne du bucket.
Surveillance de l’activité du stockage
Vérifiez séparément les sources suivantes :
Enregistrement du stockage : vérifiez le projet, le fournisseur, la zone géographique et le résultat de la validation.
Activité cloud : consultez les journaux d’accès du fournisseur et les erreurs de lecture ou d’écriture si leur journalisation est activée. Distinguez les requêtes de test liées à la validation de l’activité PSP réelle.
Événements de sécurité et de conformité : si vous avez activé séparément l’API de conformité, consultez les événements disponibles concernant le cycle de vie du contenu. Ces événements sont distincts de ceux liés à l’enregistrement du stockage et des journaux d’accès du fournisseur cloud.
Votre politique d’échantillonnage détermine quelles requêtes donnent lieu à la conservation d’objets. L’absence d’un objet ou d’un événement ne suffit pas à conclure à une défaillance du stockage.
Identification des requêtes de test de validation
Pour AWS, Azure, GCP et OCI, la validation écrit des objets de test dans la destination de stockage configurée. Leur nom contient csg_validation_ suivi d’un suffixe hexadécimal aléatoire. Le corps de chaque objet contient le texte customer-storage-gateway-validation:csg_validation_<suffix>, avec le même suffixe que son nom. Ces objets ne contiennent aucun prompt ni aucune réponse de client. OpenAI lit chaque objet de test avec les droits d’accès configurés, puis tente une requête GET sans authentification sur le même objet pour vérifier s’il est accessible publiquement. Un stockage privé doit refuser la requête sans authentification. Ces requêtes peuvent apparaître dans les journaux d’accès de votre fournisseur, selon votre configuration de journalisation.
Pour AWS, la validation vérifie également la restriction sts:ExternalId du rôle. Après avoir endossé le rôle configuré avec l’identifiant externe de votre projet, OpenAI teste des appels AssumeRole sans identifiant externe, puis avec l’identifiant de test volontairement invalide proj_smoketest-verifier. Les deux appels doivent renvoyer AccessDenied. Ils utilisent la même identité OpenAI et le même rôle configuré. L’identifiant de test ne correspond pas au projet d’un autre client. AWS CloudTrail ne consigne pas dans votre compte ces tentatives refusées d’endossement de rôle entre comptes. Limitez votre politique de confiance à l’identifiant réel de votre projet. N’autorisez pas l’identifiant de test et ne supprimez pas la condition sur l’identifiant externe pour faire aboutir ces appels.
Résolution d’un échec
1. Vérifiez l’erreur
customer_managed_retention_not_enabled : demandez à votre contact chargé de l’intégration de confirmer que votre organisation dispose de l’accès nécessaire.
Échec d’authentification ou d’autorisation : vérifiez que vous utilisez une clé d’administration de l’organisation disposant de la permission requise pour le stockage externe.
Problème de configuration : vérifiez l’identité cloud, la politique de confiance ou les permissions d’accès, les règles de cycle de vie et la configuration réseau approuvée.
401 customer_storage_not_ready : vérifiez qu’un stockage validé existe pour la zone géographique du projet concerné par la requête.
incorrect_hostname : utilisez le nom d’hôte correspondant à la configuration de votre projet à résidence des données fixe.
503 external_storage_validation_unavailable : réessayez ultérieurement. Si l’échec persiste, contactez l’assistance.
Si vous utilisez le parcours Inscription à AWS (nouveau) basé sur les projets, la politique de contrôle des ressources (RCP) par défaut empêche OpenAI d’endosser un rôle dans votre compte depuis le sien. Pour utiliser ce compte, passez à une offre payante si nécessaire, activez les fonctionnalités avancées et mettez à jour la RCP afin d’autoriser OpenAI à appeler sts:AssumeRole.
2. Relancez la validation
Après avoir corrigé la configuration, ouvrez Connecter un stockage pour le projet et exécutez la commande de validation avec une clé API d’administration de l’organisation. Récupérez les informations de stockage enregistrées ou sélectionnez Actualiser pour confirmer l’état Validé. L’actualisation seule ne lance pas la validation.
Déconnexion du stockage
Pour déconnecter le stockage, ouvrez Paramètres du projet > Conservation des données. Sous Stockage externe, sélectionnez l’icône de corbeille à côté de la connexion, puis confirmez en sélectionnant Déconnecter le stockage.
Avant de supprimer un bucket Google Cloud Storage, déconnectez-le de chaque projet OpenAI qui l’utilise. Après sa suppression, un autre projet Google Cloud peut reprendre le nom du bucket.
Si le projet utilise la ZDR avec PSP, la déconnexion de son dernier stockage rétablit automatiquement la politique de conservation par défaut de votre organisation. Si d’autres connexions subsistent, la politique reste inchangée. Les modèles qui nécessitent la ZDR avec PSP peuvent devenir indisponibles lorsque la politique change.
La déconnexion du stockage ne supprime ni votre espace de stockage cloud ni son contenu. Continuez de respecter les exigences de conservation pour les enregistrements existants. Effectuez la configuration et la validation pour chaque nouveau projet et chaque nouvel emplacement de résidence des données.
Responsabilités du client pendant l’exploitation
Si vous utilisez la ZDR avec PSP, vous devez respecter les obligations suivantes :
Enregistrez et validez le stockage PSP. Pour chaque projet où PSP est activé et chaque emplacement de résidence des données, enregistrez et validez les buckets de stockage via l’API d’administration d’OpenAI. Configurez l’accès du service PSP aux buckets conformément aux instructions publiées par OpenAI.
Conservez les enregistrements chiffrés pendant au moins 30 jours. Configurez les règles de cycle de vie du stockage pour empêcher toute suppression anticipée des enregistrements PSP.
Maintenez l’accès au stockage et aux clés. Veillez à ce que le stockage régional, les permissions du service et l’autorisation d’utiliser les clés que vous gérez restent correctement configurés.
Corrigez les problèmes de configuration. Corrigez les problèmes de configuration du stockage qu’OpenAI vous signale.
Répondez aux signalements de problèmes de sécurité. Collaborez avec OpenAI pour examiner et résoudre le problème signalé.