Sammendrag
Tilgang
EKM endpoints er tilgjengelige i Management API via en Admin API-nøkkel. https://platform.openai.com/settings/organization/admin-keys (ikke bruk en vanlig API-nøkkel). Admin API-nøkler er tilgjengelige for organisasjonseiere.
Bruk
api.external_keys.writetil å opprette eller slette eksterne nøkler, ogapi.external_keys.readtil å liste opp eller validere eksterne nøkler. Én enkelt nøkkel trenger begge omfangene bare hvis den må utføre både lese- og skriveoperasjoner.Vi må for øyeblikket aktivere organisasjonen din for disse endpoints med et funksjonsflagg. Du vet at funksjonsflagget er aktivert hvis du ser external_key_id returnert fra det eksisterende List Projects-endpoint: https://api.openai.com/v1/organization/projects
Bruk
EKM-konfigurasjonen din registreres på organisasjonsnivå via et nytt endpoint https://api.openai.com/v1/organization/external_keys
Når du registrerer EKM-konfigurasjonen, returneres en external_key_id i formatet extkey_xxxx
EKM-konfigurasjoner aktiveres på prosjektnivå ved å sende inn en external_key_id i brødteksten til det eksisterende Create Project-endpoint https://api.openai.com/v1/organization/projects
Begrensninger
Du må først teste EKM på et nytt prosjekt via Management API.
Vi anbefaler å opprette nye prosjekter for EKM-arbeidsbelastningene dine. Hvis du likevel vil bruke EKM på et eksisterende prosjekt, kan vi legge deg til i funksjonsflagget. Merk deg følgende anbefalte praksis før du ruller ut EKM til eksisterende produksjonsprosjekter.
Test først alle API-funksjoner du bruker i produksjon, i EKM API-testprosjektet ditt
Bruk en gradvis utrulling i stedet for å aktivere EKM på alle API-produksjonsprosjekter samtidig
Endpoints på organisasjonsnivå
Registrer en ekstern nøkkel for organisasjonen din
AWS
Eksempelforespørsel
type: string – alltid “aws”
name: string – Et lettfattelig navn på konfigurasjonen din
role_arn: string – Role ARN som OpenAI skal anta i skyen din
kms_arn: string – Key Management System ARN for hovednøkkelen du administrerer
external_id: string – Organisasjons-ID-en din eller API-prosjekt-ID-en din
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>
}'Eksempelsvar
{
"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
Eksempelforespørsel
type: string – alltid "gcp",
name: string – Et lettfattelig navn på konfigurasjonen din
workload_identity_project_number: string – Det 12-sifrede GCP-prosjektnummeret der du registrerte OpenAI's Workload Identity
workload_identity_pool_id: string – Poolen som inneholder Workload Identity-leverandøren du registrerte for OpenAI
workload_identity_provider_id: string – Workload Identity-leverandøren du registrerte for OpenAI
audience: string – Målgruppen OpenAI skal sende i tokenet når vi antar en rolle gjennom GCP STS-en din
kms_project_id: string – Navnet på GCP-prosjektet der KMS-en din ligger
kms_key_ring_name: string – Key Management System-nøkkelringen som inneholder hovednøkkelen du administrerer
kms_key_name: string – Navnet på Key Management System-hovednøkkelen
kms_key_location: string – Regionen der Key Management System-hovednøkkelen er plassert
Hvis KMS-en din ligger i et annet GCP-prosjekt enn det der du registrerte OpenAI's Workload Identity, må du sørge for at prosjektet som inneholder OpenAI's Workload Identity, i det minste har KMS aktivert ved å gå til https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview
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"
}'Eksempelsvar
{
"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
Eksempelforespørsel
type: string – alltid "azure",
name: string – Et lettfattelig navn på konfigurasjonen din
tenant_id: string – UUID-en til Azure-leieren din
vault_uri: string – URI-en til Azure-hvelvet som inneholder hovednøkkelen du administrerer
key_name: string – Navnet på Azure Key Vault-hovednøkkelen du administrerer.
Den må ha formatet <org-xxx>--<any_name>
der org-xxx er OpenAI-organisasjons-ID-en din, som du finner på https://platform.openai.com/settings/organization/general
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"
}'Eksempelsvar
{
"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"
}Slett en ekstern nøkkel som er registrert for organisasjonen din
Merk: Du kan bare slette en ekstern nøkkel hvis den ikke er knyttet til aktive API-prosjekter eller arbeidsområder. Hvis den er knyttet til et aktivt API-prosjekt, arkiverer du prosjektet først. Hvis den er knyttet til et arbeidsområde, kan nøkkelen ikke slettes.
Eksempelforespørsel
curl -X DELETE \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/external_keys/extkey_xxxx"Eksempelsvar
{
"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>"
}Hent de eksterne nøklene som er registrert for organisasjonen din
Eksempelforespørsel
curl -X GET \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/external_keys"Eksempelsvar
{
"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"
}Valider en ekstern nøkkel
Du kan bruke dette endpoint til å kontrollere flere ting
Den eksterne skykonfigurasjonen din er fortsatt gyldig med OpenAI etter at du har gjort endringer (du får et vellykket svar)
Tilbakekallingen av nøkkelen er gjort riktig, behandles av OpenAI og trer i kraft når hurtigbuffer-TTL-ene på 1 time er utløpt (du får en feilmelding)
Eksempelforespørsel
curl -X POST -H "Authorization: Bearer $TOKEN"
"https://api.openai.com/v1/organization/external_keys/extkey_xxx/validate"Eksempelsvar
{
"status": "success"
}Eller en feil som ble meldt fra skyleverandøren.
Endpoints på prosjektnivå
Opprett et nytt prosjekt med en ekstern nøkkel-ID
Dette er det samme som det eksisterende Create Project-endpoint, med parameteren external_key_id lagt til i forespørselen og svaret.
Eksempelforespørsel
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"
}'Eksempelsvar
{
"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,
}[Begrenset] Oppdater et eksisterende prosjekt med en ekstern nøkkel-ID
Dette er det samme som det eksisterende Update Project-endpoint, med parameteren external_key_id lagt til i forespørselen og svaret.
Vi anbefaler å opprette nye API-prosjekter for EKM-arbeidsbelastningene dine. Hvis du vil bruke EKM på alle eksisterende API-prosjekter, kan du spørre kundeansvarlig, så legger vi deg til i funksjonsflagget. Merk deg følgende anbefalte praksis før du ruller ut EKM til eksisterende produksjonsprosjekter.
Test først alle API-funksjoner du bruker i produksjon, i EKM API-testprosjektet ditt
Bruk en gradvis utrulling i stedet for å aktivere EKM på alle API-produksjonsprosjekter samtidig
Eksempelforespørsel
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"
}'List opp alle prosjektene i organisasjonen din
Dette er det samme som det eksisterende endpoint, men med external_key_id lagt til i API-svaret
Eksempelforespørsel
curl -X GET \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/projects"Eksempelsvar
{
"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
}