OpenAI
Ukurasa huu ulitafsiriwa na mashine. Tazama makala asili ya Kiingereza.

EKM (Funguo za Nje) katika API ya Usimamizi

Dhibiti funguo za nje za EKM kwa kutumia API ya Usimamizi

Ilisasishwa: 4 days ago

Muhtasari

Ufikiaji

  • endpoints za EKM zinapatikana katika API ya Usimamizi kupitia Ufunguo wa API wa Msimamizi. https://platform.openai.com/settings/organization/admin-keys (usitumie ufunguo wa kawaida wa API). Funguo za API za Msimamizi zinapatikana kwa wamiliki wa shirika.

  • Tumia api.external_keys.write kuunda au kufuta funguo za nje, na api.external_keys.read kuorodhesha au kuthibitisha funguo za nje. Ufunguo mmoja unahitaji scopes zote mbili tu ikiwa lazima ufanye shughuli za kusoma na kuandika.

  • Kwa sasa tunahitaji kuwezesha feature flag kwa shirika lako ili kutumia endpoints hizi. Utajua una feature flag ikiwa utaona external_key_id ikirudishwa kutoka endpoint iliyopo ya List Projects: https://api.openai.com/v1/organization/projects

Matumizi

Vikwazo

  • Lazima kwanza ujaribu EKM kwenye mradi mpya kupitia API ya Usimamizi.

  • Tunapendekeza uanzishe miradi mipya kwa ajili ya workloads zako za EKM. Hata hivyo, ikiwa unataka EKM kwenye mradi uliopo, tunaweza kukuongeza kwenye feature flag. Tafadhali zingatia mbinu bora zifuatazo kabla ya kusambaza EKM kwenye miradi yako iliyopo ya production.

    • Kwanza jaribu vipengele vyote vya API unavyotumia kwenye production katika mradi wako wa majaribio wa EKM API

    • Tekeleza usambazaji wa hatua kwa hatua badala ya kuweka EKM kwenye miradi yote ya production ya API kwa wakati mmoja

endpoints za kiwango cha shirika

Sajili ufunguo wa nje kwenye shirika lako

AWS

Mfano wa Ombi

  • type: string -  daima “aws”

  • name: string -  Jina rahisi kutambua la config yako

  • role_arn: string - Role ARN ambayo OpenAI itatumia katika cloud yako

  • kms_arn: string - ARN ya Key Management System kwa ufunguo mkuu unaosimamia

  • external_id: string - ID ya shirika lako au ID ya mradi wa API

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

Mfano wa Jibu

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

Mfano wa Ombi

  • type: string - daima  "gcp",

  • name: string - Jina rahisi kutambua la config yako

  • workload_identity_project_number: string - Nambari ya mradi wa GCP yenye tarakimu 12 ambapo ulisajili workload identity ya OpenAI

  • workload_identity_pool_id: string - Pool yenye mtoa huduma wa Workload Identity uliyemsajili kwa OpenAI

  • workload_identity_provider_id: string - Mtoa huduma wa Workload Identity uliyemsajili kwa OpenAI

  • audience: string - Audience ambayo OpenAI inapaswa kupitisha katika tokeni tunapochukua role kupitia GCP STS yako

  • kms_project_id: string - Jina la mradi wa GCP ambapo KMS yako ipo

  • kms_key_ring_name: string - Key ring ya Key Management System iliyo na ufunguo mkuu unaosimamia

  • kms_key_name: string - Jina la ufunguo mkuu wa Key Management System

  • kms_key_location: string - Eneo ambapo ufunguo mkuu wa Key Management System upo

Ikiwa KMS yako iko katika mradi tofauti wa GCP na ule ambapo ulisajili Workload Identity ya OpenAI, hakikisha angalau mradi ulio na Workload Identity ya OpenAI umewasha KMS kwa kwenda kwenye 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"
}'

Mfano wa Jibu

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

Mfano wa Ombi

  • type: string - daima  "azure",

  • name: string - Jina rahisi kutambua la config yako

  • tenant_id: string - UUID ya tenant yako ya Azure

  • vault_uri: string - URI ya vault ya Azure iliyo na ufunguo mkuu unaosimamia

  • key_name: string - Jina la ufunguo mkuu wa Azure Key Vault unaosimamia.

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

Mfano wa Jibu

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

Futa ufunguo wa nje uliosajiliwa kwenye shirika lako

Kumbuka: Unaweza kufuta ufunguo wa nje tu ikiwa haujaunganishwa na miradi yoyote amilifu ya API au eneokazi. Ikiwa umeunganishwa na mradi amilifu wa API, weka mradi huo kwenye kumbukumbu kwanza. Ikiwa umeunganishwa na eneokazi, ufunguo hauwezi kufutwa.

Mfano wa Ombi

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

Mfano wa Jibu

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

Pata funguo za nje zilizosajiliwa kwenye shirika lako

Mfano wa Ombi

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

Mfano wa Jibu

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

Thibitisha ufunguo wa nje

Unaweza kutumia endpoint hii kukagua mambo kadhaa

  • Config yako ya nje ya cloud inaendelea kuwa halali na OpenAI baada ya kufanya mabadiliko (utaona jibu la mafanikio)

  • Ubatilishaji wa ufunguo wako umefanywa kwa usahihi, unachakatwa na OpenAI, na utaanza kutumika baada ya cache TTL za saa 1 kuisha (utaona jibu la hitilafu)

Mfano wa Ombi

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

Mfano wa Jibu

{
 "status": "success"
}

Au, hitilafu iliyotolewa na mtoa huduma wa cloud.

endpoints za kiwango cha mradi

Unda mradi mpya wenye ID ya ufunguo wa nje

Hii ni sawa na endpoint iliyopo ya Create Project, lakini imeongezewa kigezo cha external_key_id katika ombi na jibu.

Mfano wa Ombi

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

Mfano wa Jibu

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

[Restricted] Sasisha mradi uliopo kwa ID ya ufunguo wa nje

Hii ni sawa na endpoint iliyopo ya Update Project, lakini imeongezewa kigezo cha external_key_id katika ombi na jibu.


Tunapendekeza uanzishe miradi mipya ya API kwa ajili ya workloads zako za EKM. Ikiwa unataka EKM kwenye miradi yako yote iliyopo ya API, muulize account director wako nasi tutakuongeza kwenye feature flag. Tafadhali zingatia mbinu bora zifuatazo kabla ya kusambaza EKM kwenye miradi yako iliyopo ya production.

  • Kwanza jaribu vipengele vyote vya API unavyotumia kwenye production katika mradi wako wa majaribio wa EKM API

  • Tekeleza usambazaji wa hatua kwa hatua badala ya kuweka EKM kwenye miradi yote ya production ya API kwa wakati mmoja

Mfano wa Ombi

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

Orodhesha miradi yote kwenye shirika lako

Hii ni sawa na endpoint iliyopo, lakini imeongezewa external_key_id katika jibu la API

Mfano wa Ombi

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

Mfano wa Jibu

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

Je, makala haya yamekusaidia?