OpenAI
Šo lapu tulkoja mašīntulks. Skatīt oriģinālo rakstu angļu valodā.

EKM (ārējās atslēgas) pārvaldības API

Pārvaldiet EKM ārējās atslēgas, izmantojot pārvaldības API

Atjaunināts: 8 days ago

Kopsavilkums

Piekļuve

  • EKM endpoints ir pieejami pārvaldības API, izmantojot administratora API atslēgu. https://platform.openai.com/settings/organization/admin-keys (neizmantojiet parastu API atslēgu). Administratora API atslēgas ir pieejamas organizācijas īpašniekiem.

  • Izmantojiet api.external_keys.write, lai izveidotu vai dzēstu ārējās atslēgas, un api.external_keys.read, lai uzskaitītu vai validētu ārējās atslēgas. Vienai atslēgai abas tvērumu grupas ir vajadzīgas tikai tad, ja tai jāveic gan lasīšanas, gan rakstīšanas darbības.

  • Pašlaik mums jūsu organizācijai ir jāiespējo piekļuve šiem endpoints ar funkcijas karodziņu. Jūs zināsiet, ka funkcijas karodziņš ir iespējots, ja esošā List Projects endpoint atbildē redzat external_key_id : https://api.openai.com/v1/organization/projects

Lietošana

Ierobežojumi

  • Vispirms EKM ir jātestē jaunā projektā, izmantojot pārvaldības API.

  • EKM darba slodzēm iesakām izveidot jaunus projektus. Tomēr, ja vēlaties EKM esošā projektā, mēs varam jums iespējot funkcijas karodziņu. Pirms EKM ieviešanas esošajos ražošanas projektos ņemiet vērā tālāk minēto paraugpraksi.

    • Vispirms testa EKM API projektā pārbaudiet visas API funkcijas, ko izmantojat ražošanā

    • Ieviesiet pakāpeniski, nevis pievienojiet EKM visiem ražošanas API projektiem uzreiz

Organizācijas līmeņa endpoints

Reģistrēt ārējo atslēgu jūsu organizācijā

AWS

Pieprasījuma piemērs

  • type: string -  vienmēr “aws”

  • name: string -  viegli saprotams konfigurācijas nosaukums

  • role_arn: string - lomas ARN, ko OpenAI izmantos jūsu mākonī

  • kms_arn: string - jūsu pārvaldītās galvenās atslēgas Key Management System ARN

  • external_id: string - jūsu organizācijas ID vai API projekta 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>
}'

Atbildes piemērs

{
  "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

Pieprasījuma piemērs

  • type: string - vienmēr  "gcp",

  • name: string - viegli saprotams konfigurācijas nosaukums

  • workload_identity_project_number: string - 12 ciparu GCP projekta numurs, kurā reģistrējāt OpenAI darba slodzes identitāti

  • workload_identity_pool_id: string - pūls, kurā atrodas Workload Identity nodrošinātājs, ko reģistrējāt OpenAI

  • workload_identity_provider_id: string - Workload Identity nodrošinātājs, ko reģistrējāt OpenAI

  • audience: string - auditorija, kas OpenAI jānodod tekstvienībā, kad mēs pieņemam lomu caur jūsu GCP STS

  • kms_project_id: string - GCP projekta nosaukums, kurā atrodas jūsu KMS

  • kms_key_ring_name: string - Key Management System atslēgu saišķis, kurā ir jūsu pārvaldītā galvenā atslēga

  • kms_key_name: string - Key Management System galvenās atslēgas nosaukums

  • kms_key_location: string - reģions, kurā atrodas jūsu Key Management System galvenā atslēga

Ja jūsu KMS atrodas citā GCP projektā, nevis tajā, kur reģistrējāt OpenAI Workload Identity, pārliecinieties, ka projektā, kurā atrodas OpenAI Workload Identity, ir vismaz iespējots KMS, atverot 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"
}'

Atbildes piemērs

{
  "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

Pieprasījuma piemērs

  • type: string - vienmēr  "azure",

  • name: string - viegli saprotams konfigurācijas nosaukums

  • tenant_id: string - jūsu Azure nomnieka UUID

  • vault_uri: string - Azure glabātuves URI, kurā atrodas jūsu pārvaldītā galvenā atslēga

  • key_name: string - jūsu pārvaldītās Azure Key Vault galvenās atslēgas nosaukums.

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"
}'

Atbildes piemērs

{
  "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"
}

Dzēst ārējo atslēgu, kas reģistrēta jūsu organizācijā

Piezīme. Ārējo atslēgu var dzēst tikai tad, ja tā nav saistīta ne ar vienu aktīvu API projektu vai darbvietu. Ja tā ir saistīta ar aktīvu API projektu, vispirms arhivējiet šo projektu. Ja tā ir saistīta ar darbvietu, atslēgu nevar dzēst.

Pieprasījuma piemērs

curl -X DELETE \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/external_keys/extkey_xxxx"

Atbildes piemērs

{
  "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>"
}

Iegūt jūsu organizācijā reģistrētās ārējās atslēgas

Pieprasījuma piemērs

curl -X GET \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/external_keys"

Atbildes piemērs

{
  "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"
}

Validēt ārējo atslēgu

Šo endpoint var izmantot, lai pārbaudītu vairākas lietas

  • Jūsu ārējā mākoņa konfigurācija pēc veiktajām izmaiņām joprojām ir derīga OpenAI (redzēsiet veiksmīgu atbildi)

  • Atslēgas atsaukšana ir veikta pareizi, OpenAI to apstrādā, un tā stāsies spēkā pēc 1 stundas kešatmiņas TTL termiņu beigām (redzēsiet kļūdas atbildi)

Pieprasījuma piemērs

curl -X POST -H "Authorization: Bearer $TOKEN"
"https://api.openai.com/v1/organization/external_keys/extkey_xxx/validate"

Atbildes piemērs

{
 "status": "success"
}

Vai arī kļūda, ko atgriezis mākoņpakalpojumu sniedzējs.

Projekta līmeņa endpoints

Izveidot jaunu projektu ar ārējās atslēgas ID

Tas ir tas pats esošais Create Project endpoint, tikai pieprasījumā un atbildē ir pievienots parametrs external_key_id.

Pieprasījuma piemērs

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"
}'

Atbildes piemērs

{
  "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,
}

[Ierobežots] Atjaunināt esošu projektu ar ārējās atslēgas ID

Tas ir tas pats esošais Update Project endpoint, tikai pieprasījumā un atbildē ir pievienots parametrs external_key_id.


EKM darba slodzēm iesakām izveidot jaunus API projektus. Ja vēlaties EKM visos esošajos API projektos, sazinieties ar savu konta vadītāju, un mēs jums iespējosim funkcijas karodziņu. Pirms EKM ieviešanas esošajos ražošanas projektos ņemiet vērā tālāk minēto paraugpraksi.

  • Vispirms testa EKM API projektā pārbaudiet visas API funkcijas, ko izmantojat ražošanā

  • Ieviesiet pakāpeniski, nevis pievienojiet EKM visiem ražošanas API projektiem uzreiz

Pieprasījuma piemērs

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"
}'

Uzskaitīt visus jūsu organizācijas projektus

Tas ir tas pats esošais endpoint, tikai API atbildē ir pievienots external_key_id

Pieprasījuma piemērs

curl -X GET \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/projects"

Atbildes piemērs

{
  "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
}

Vai šis raksts bija noderīgs?