Zusammenfassung
Zugang
EKM-Endpunkte sind in der Management-API über einen Admin-API-Schlüssel zugänglich. https://platform.openai.com/settings/organization/admin-keys (keinen normalen API-Schlüssel verwenden). Admin-API-Schlüssel stehen Organisationseigentümern zur Verfügung.
Verwende
api.external_keys.write, um externe Schlüssel zu erstellen oder zu löschen, undapi.external_keys.read, um externe Schlüssel aufzulisten oder zu validieren. Ein einzelner Schlüssel benötigt beide Berechtigungen nur dann, wenn er sowohl Lese- als auch Schreibvorgänge ausführen muss.Wir müssen deine Organisation derzeit per Feature-Flag für diese Endpunkte freischalten. Du weißt, dass du das Feature-Flag hast, wenn **external_key_id **vom vorhandenen List-Projects-Endpunkt zurückgegeben wird: https://api.openai.com/v1/organization/projects
Nutzung
Deine EKM-Konfiguration ist auf Organisationsebene über einen neuen Endpunkt registriert: https://api.openai.com/v1/organization/external_keys
Das Registrieren deiner EKM-Konfiguration gibt eine external_key_id im Format extkey_xxxx zurück.
EKM-Konfigurationen werden auf Projektebene aktiviert , indem die external_key_id im Body an den bestehenden Endpunkt zum Erstellen von Projekten übergeben wird: https://api.openai.com/v1/organization/projects Endpunkt
Beschränkungen
Du musst EKM zuerst in einem neuen Projekt über die Management-API testen.
Wir empfehlen, neue Projekte für deine EKM-Workloads einzurichten. Falls du EKM für ein bestehendes Projekt aktivieren möchtest, können wir dich für dieses Feature freischalten. Bitte beachte die Best Practices, bevor du EKM für deine bestehenden Produktionsprojekte ausrollst.
Teste zuerst alle API-Funktionen, die du nutzt, in deinem EKM-Testprojekt.
Wende ein schrittweises Rollout an, anstatt EKM sofort für alle Produktionsprojekte gleichzeitig zu aktivieren.
Endpunkte auf Organisationsebene
Einen externen Schlüssel in deiner Organisation registrieren
AWS
Beispielanfrage
Typ: string – immer „aws“
name: string – Ein benutzerfreundlicher Name für deine Konfiguration
role_arn: string – Die Rollen-ARN, die OpenAI in deiner Cloud übernehmen wird
kms_arn: string – Die ARN des Schlüsselverwaltungssystems für den von dir verwalteten Hauptschlüssel
external_id: string – Deine Organisations-ID oder API-Projekt-ID
curl -X POST \
-H "Content-type: application/json" \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/external_keys" \
-d '{
"type": "aws",
"name": "AWS EKM Config",
"role_arn": "arn:aws:iam::<12_DIGIT_ACCOUNT_NUMBER>:role/<ROLE>",
"kms_arn": "arn:aws:kms:<REGION>:<ACCOUNT_NUMBER>:key/<UUID>",
"external_id": <your org id or project id>
}'Beispielantwort
{
"id": "extkey_xxxx",
"object": "organization.external_key",
"created_at": 1746175499,
"api_project_ids": [],
"type": "aws",
"name": "AWS EKM Config",
"role_arn": "arn:aws:iam::<ACCOUNT_NUMBER>:role/<ROLE>",
"kms_arn": "arn:aws:kms:<REGION>:<ACCOUNT_NUMBER>:key/<UUID>",
"external_id": <your org id or project id>
} GCP
Beispielanfrage
type: string – immer „gcp“,
name: string – Ein benutzerfreundlicher Name für deine Konfiguration
workload_identity_project_number: string – Die 12-stellige GCP-Projektnummer, unter der du die Workload-Identität von OpenAI registriert hast
workload_identity_pool_id: string – Der Pool, der den Workload-Identitätsanbieter enthält, den du für OpenAI registriert hast
workload_identity_provider_id: string – Der Workload-Identitätsanbieter, den du für OpenAI registriert hast
audience: string – Die Zielgruppe, die OpenAI im Token übergeben soll, wenn wir über deinen GCP STS eine Rolle übernehmen
kms_project_id: string – Der Name des GCP-Projekts, in dem sich dein KMS befindet
kms_key_ring_name: string – Der Schlüsselbund des Schlüsselverwaltungssystems, der den von dir verwalteten Hauptschlüssel enthält
kms_key_name: string – Der Name des Hauptschlüssels des Schlüsselverwaltungssystems
kms_key_location: string – Die Region, in der sich dein Hauptschlüssel des Schlüsselverwaltungssystems befindet
Wenn sich dein KMS in einem anderen GCP-Projekt befindet als dem, in dem du die Workload-Identität von OpenAI registriert hast, stelle sicher, dass in dem Projekt, das die Workload-Identität von OpenAI enthält, zumindest KMS aktiviert ist, indem du https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview aufrufst.
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"
}'Beispielantwort
{
"id": "extkey_xxxxxx",
"object": "organization.external_key",
"created_at": 1746174349,
"api_project_ids": [],
"type": "gcp",
"name": "GCP EKM Config",
"workload_identity_project_number": "123456789012",
"kms_key_ring_name": "openai-kms-key-ring",
"kms_key_name": "openai-kms-key",
"kms_key_location": "us-east1",
"audience": <your org id or project id>,
"kms_project_id": "adjective-noun-12345",
"workload_identity_pool_id": "openai-azure",
"workload_identity_provider_id": "openai-ekm-service-role"
}Azure
Beispielanfrage
Typ: string – immer "azure",
name: string – Ein benutzerfreundlicher Name für deine Konfiguration
tenant_id: string – Deine Azure-Tenant-UUID
vault_uri: string – Die URI des Azure-Tresors, der den von dir verwalteten Hauptschlüssel enthält
key_name: string – Der Name des Azure Key Vault-Masterschlüssels, den du verwaltest.
Dieser muss die Form <org-xxx>--<any_name> haben,
wobei org-xxx deine OpenAI-Organisations-ID ist, die du auf der Seite https://platform.openai.com/settings/organization/general finden kannst.
curl -X POST \
-H "Content-type: application/json" \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/external_keys" \
-d '{
"type": "azure",
"name": "Azure EKM Config",
"tenant_id": "<UUID>",
"vault_uri": "https://<VAULT_NAME>.vault.azure.net/",
"key_name": "org-xxx--some-key"
}'Beispielantwort
{
"id": "extkey_xxxx",
"object": "organization.external_key",
"created_at": 1746174377,
"api_project_ids": [],
"type": "azure",
"name": "Azure EKM Config",
"tenant_id": "<UUID>",
"vault_uri": "https://<VAULT_NAME>.vault.azure.net/",
"key_name": "org-xxx--some-key"
}Einen externen Schlüssel löschen, der in deiner Organisation registriert ist
Hinweis: Du kannst einen externen Schlüssel nur löschen, wenn er keinem aktiven Projekt zugeordnet ist. Wenn er mit einem aktiven Projekt verknüpft ist, musst du dieses Projekt zuerst archivieren.
Beispielanfrage
curl -X DELETE \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/external_keys/extkey_xxxx"Beispielantwort
{
"id": "extkey_xxxxx",
"object": "organization.external_key.deleted",
"created_at": 1746127808,
"api_project_ids": [],
"type": "aws",
"account_number": "123456789012",
"kms_arn": "arn:aws:kms:<REGION>:<ACCOUNT_NUMBER>:key/<UUID>",
"name": "AWS EKM Config",
"role_arn": "arn:aws:iam::<ACCOUNT_NUMBER>:role/<ROLE>"
}Rufe die externen Schlüssel ab, die für deine Organisation registriert sind.
Beispielanfrage
curl -X GET \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/external_keys"Beispielantwort
{
"object": "list",
"data": [
{
"id": "extkey_xxxx",
"object": "organization.external_key",
"created_at": 1746127808,
"api_project_ids": [],
"type": "aws",
"name": "AWS EKM Config",
"account_number": "123456789012",
"kms_arn": "arn:aws:kms:<REGION>:<ACCOUNT_NUMBER>:key/<UUID>",
role_arn": "arn:aws:iam::<ACCOUNT_NUMBER>:role/<ROLE>"
}
],
"first_id": "extkey_xxxx",
"has_more": false,
"last_id": "extkey_xxxx"
}Einen externen Schlüssel validieren
Du kannst diesen Endpunkt verwenden, um mehrere Dinge zu überprüfen.
Deine externe Cloud-Konfiguration bleibt bei OpenAI gültig, nachdem du Änderungen vorgenommen hast (du erhältst eine Erfolgsmeldung).
Dein Schlüssel-Widerruf ist korrekt durchgeführt, wird von OpenAI verarbeitet und tritt in Kraft, sobald die 1-stündigen Cache-TTLs abgelaufen sind (du wirst dann eine Fehlermeldung erhalten).
Beispielanfrage
curl -X POST -H "Authorization: Bearer $TOKEN"
"https://api.openai.com/v1/organization/external_keys/extkey_xxx/validate"Beispielantwort
{
"status": "success"
}Oder es ist ein Fehler seitens deines Cloud-Anbieters aufgetreten.
Endpunkte auf Projektebene
Ein neues Projekt mit einer externen Schlüssel-ID erstellen
Dies funktioniert wie der bestehende Endpunkt zum Erstellen von Projekten, jedoch mit dem zusätzlichen Parameter external_key_id in der Anfrage und der Antwort.
Beispielanfrage
curl -X POST \
-H "Content-type: application/json" \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/projects" \
-d '{
"name": "Some Project",
"external_key_id": "extkey_xxxx"
}'Beispielantwort
{
"object": "project",
"id": "proj_xxxxx",
"title": "Some Project",
"external_key_id": "extkey_xxxxx",
"created": 1740012721,
"organization_id": "org-xxxxx",
"is_initial": false,
"geography": null,
"scale_tier_enabled": false,
"disable_user_api_keys": false,
"zdr_type": null,
}[Eingeschränkt] Ein bestehendes Projekt mit einer externen Schlüssel-ID aktualisieren
Dies funktioniert wie der bestehende Endpunkt zum Aktualisieren von Projekten, jedoch mit dem zusätzlichen Parameter external_key_id in der Anfrage und Antwort.
Wir empfehlen, neue API-Projekte für deine EKM-Workloads einzurichten. Wenn du EKM für alle deine bestehenden API-Projekte möchtest, wende dich an deinen Account-Direktor, und wir werden dich zur Feature-Flag hinzufügen. Bitte beachte die Best Practices, bevor du EKM für deine bestehenden Produktionsprojekte ausrollst.
Teste zuerst alle API-Funktionen, die du nutzt, in deinem EKM-Testprojekt.
Wende ein schrittweises Rollout an, anstatt EKM sofort für alle Produktionsprojekte gleichzeitig zu aktivieren.
Beispielanfrage
curl -X POST \
-H "Content-type: application/json" \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/projects/proj_xxx" \
-d '{
"external_key_id": "extkey_xxxx"
}'Alle Projekte in deiner Organisation auflisten
Dies ist derselbe Endpunkt wie der vorhandene, jedoch mit der Ergänzung von external_key_id in der API-Antwort.
Beispielanfrage
curl -X GET \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/projects"Beispielantwort
{
"object": "list",
"data": [
{
"object": "organization.project",
"id": "proj_xxxx",
"name": "Project Name",
"external_key_id": "extkey_xxxx",
"created_at": 1717798982,
"archived_at": null,
"status": "active"
}
],
"first_id": "proj_xxxx",
"last_id": "proj_xxxx",
"has_more": true
}