OpenAI
Αυτή η σελίδα μεταφράστηκε αυτόματα. Δείτε το πρωτότυπο άρθρο στα αγγλικά.

EKM (External Keys) στο Management API

Διαχειριστείτε εξωτερικά κλειδιά για EKM με το Management API

Τελευταία ενημέρωση: 7 days ago

Σύνοψη

Πρόσβαση

  • Τα EKM endpoints είναι προσβάσιμα στο Management API μέσω ενός Admin API Key. https://platform.openai.com/settings/organization/admin-keys (μη χρησιμοποιήσετε κανονικό κλειδί API). Τα Admin API keys είναι διαθέσιμα στους κατόχους οργανισμού.

  • Χρησιμοποιήστε το api.external_keys.write για να δημιουργείτε ή να διαγράφετε εξωτερικά κλειδιά και το api.external_keys.read για να παραθέτετε ή να επικυρώνετε εξωτερικά κλειδιά. Ένα μεμονωμένο κλειδί χρειάζεται και τα δύο πεδία εφαρμογής μόνο αν πρέπει να εκτελεί λειτουργίες ανάγνωσης και εγγραφής.

  • Προς το παρόν πρέπει να ενεργοποιήσουμε το feature flag για τον οργανισμό σας σε αυτά τα endpoints. Θα γνωρίζετε ότι έχετε το feature flag αν δείτε το external_key_id να επιστρέφεται από το υπάρχον endpoint List Projects: https://api.openai.com/v1/organization/projects

Χρήση

  • Η διαμόρφωση EKM σας καταχωρίζεται σε επίπεδο οργανισμού μέσω ενός νέου endpoint https://api.openai.com/v1/organization/external_keys

  • Η καταχώριση της διαμόρφωσης EKM σας επιστρέφει ένα external_key_id της μορφής extkey_xxxx

  • Οι διαμορφώσεις EKM ενεργοποιούνται σε επίπεδο έργου με τη διαβίβαση ενός external_key_id στο σώμα του υπάρχοντος endpoint Create Project https://api.openai.com/v1/organization/projects

Περιορισμοί

  • Πρέπει πρώτα να δοκιμάσετε το EKM σε ένα νέο έργο μέσω του Management API.

  • Συνιστούμε να δημιουργήσετε νέα έργα για τους φόρτους εργασίας EKM σας. Ωστόσο, αν θέλετε EKM σε υπάρχον έργο, μπορούμε να σας προσθέσουμε στο feature flag. Λάβετε υπόψη τις παρακάτω βέλτιστες πρακτικές προτού διαθέσετε το EKM στα υπάρχοντα έργα παραγωγής σας.

    • Δοκιμάστε πρώτα όλες τις δυνατότητες API που χρησιμοποιείτε στην παραγωγή στο δοκιμαστικό έργο API EKM σας

    • Εφαρμόστε σταδιακή διάθεση αντί να ενεργοποιήσετε το EKM σε όλα τα έργα API παραγωγής ταυτόχρονα

Endpoints σε επίπεδο οργανισμού

Καταχώριση εξωτερικού κλειδιού στον οργανισμό σας

AWS

Δείγμα αιτήματος

  • type: string -  πάντα “aws”

  • name: string -  Ένα φιλικό όνομα για τη διαμόρφωσή σας

  • role_arn: string - Το Role ARN που θα αναλάβει η OpenAI στο cloud σας

  • kms_arn: string - Το ARN του Key Management System για το κύριο κλειδί που διαχειρίζεστε

  • external_id: string - Το αναγνωριστικό οργανισμού σας ή το αναγνωριστικό έργου 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>
}'

Δείγμα απόκρισης

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

Δείγμα αιτήματος

  • type: string - πάντα  "gcp",

  • name: string - Ένα φιλικό όνομα για τη διαμόρφωσή σας

  • workload_identity_project_number: string - Ο 12ψήφιος αριθμός έργου GCP όπου καταχωρίσατε το Workload Identity της OpenAI

  • workload_identity_pool_id: string - Το pool που περιέχει τον πάροχο Workload Identity που καταχωρίσατε για την OpenAI

  • workload_identity_provider_id: string - Ο πάροχος Workload Identity που καταχωρίσατε για την OpenAI

  • audience: string - Το audience που πρέπει να διαβιβάζει η OpenAI στο token όταν αναλαμβάνουμε έναν ρόλο μέσω του GCP STS σας

  • kms_project_id: string - Το όνομα του έργου GCP όπου βρίσκεται το KMS σας

  • kms_key_ring_name: string - Το key ring του Key Management System που περιέχει το κύριο κλειδί που διαχειρίζεστε

  • kms_key_name: string - Το όνομα του κύριου κλειδιού Key Management System

  • kms_key_location: string - Η περιοχή όπου βρίσκεται το κύριο κλειδί Key Management System

Αν το KMS σας βρίσκεται σε διαφορετικό έργο GCP από εκείνο όπου καταχωρίσατε το Workload Identity της OpenAI, βεβαιωθείτε ότι το έργο που περιέχει το Workload Identity της OpenAI έχει τουλάχιστον ενεργοποιημένο το KMS, μεταβαίνοντας στη διεύθυνση 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"
}'

Δείγμα απόκρισης

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

Δείγμα αιτήματος

  • type: string - πάντα  "azure",

  • name: string - Ένα φιλικό όνομα για τη διαμόρφωσή σας

  • tenant_id: string - Το UUID του μισθωτή Azure σας

  • vault_uri: string - Το URI του Azure vault που περιέχει το κύριο κλειδί που διαχειρίζεστε

  • key_name: string - Το όνομα του κύριου κλειδιού Azure Key Vault που διαχειρίζεστε.

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

Δείγμα απόκρισης

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

Διαγραφή ενός εξωτερικού κλειδιού που έχει καταχωριστεί στον οργανισμό σας

Σημείωση: Μπορείτε να διαγράψετε ένα εξωτερικό κλειδί μόνο αν δεν έχει συσχετιστεί με κανένα ενεργό έργο API ή χώρο εργασίας. Αν έχει συσχετιστεί με ενεργό έργο API, αρχειοθετήστε πρώτα αυτό το έργο. Αν έχει συσχετιστεί με χώρο εργασίας, το κλειδί δεν μπορεί να διαγραφεί.

Δείγμα αιτήματος

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

Δείγμα απόκρισης

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

Λήψη των εξωτερικών κλειδιών που έχουν καταχωριστεί στον οργανισμό σας

Δείγμα αιτήματος

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

Δείγμα απόκρισης

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

Επικύρωση εξωτερικού κλειδιού

Μπορείτε να χρησιμοποιήσετε αυτό το endpoint για να ελέγξετε διάφορα πράγματα

  • Η εξωτερική σας διαμόρφωση cloud παραμένει έγκυρη με την OpenAI αφού κάνετε αλλαγές (θα δείτε μια επιτυχή απόκριση)

  • Η ανάκληση του κλειδιού σας έχει γίνει σωστά, υποβάλλεται σε επεξεργασία από την OpenAI και θα τεθεί σε ισχύ αφού λήξουν οι TTL της κρυφής μνήμης 1 ώρας (θα δείτε απόκριση σφάλματος)

Δείγμα αιτήματος

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

Δείγμα απόκρισης

{
 "status": "success"
}

Ή ένα σφάλμα που εμφανίστηκε από τον πάροχο cloud.

Endpoints σε επίπεδο έργου

Δημιουργία νέου έργου με αναγνωριστικό εξωτερικού κλειδιού

Είναι το ίδιο με το υπάρχον endpoint Create Project, με την προσθήκη της παραμέτρου external_key_id στο αίτημα και την απόκριση.

Δείγμα αιτήματος

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

Δείγμα απόκρισης

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

[Περιορισμένο] Ενημέρωση υπάρχοντος έργου με αναγνωριστικό εξωτερικού κλειδιού

Είναι το ίδιο με το υπάρχον endpoint Update Project, με την προσθήκη της παραμέτρου external_key_id στο αίτημα και την απόκριση.


Συνιστούμε να δημιουργήσετε νέα έργα API για τους φόρτους εργασίας EKM σας. Αν θέλετε EKM σε όλα τα υπάρχοντα έργα API σας, ζητήστε το από τον υπεύθυνο λογαριασμού σας και θα σας προσθέσουμε στο feature flag. Λάβετε υπόψη τις παρακάτω βέλτιστες πρακτικές προτού διαθέσετε το EKM στα υπάρχοντα έργα παραγωγής σας.

  • Δοκιμάστε πρώτα όλες τις δυνατότητες API που χρησιμοποιείτε στην παραγωγή στο δοκιμαστικό έργο API EKM σας

  • Εφαρμόστε σταδιακή διάθεση αντί να ενεργοποιήσετε το EKM σε όλα τα έργα API παραγωγής ταυτόχρονα

Δείγμα αιτήματος

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

Παράθεση όλων των έργων στον οργανισμό σας

Είναι το ίδιο με το υπάρχον endpoint, αλλά με την προσθήκη του external_key_id στην απόκριση API

Δείγμα αιτήματος

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

Δείγμα απόκρισης

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

Σας βοήθησε αυτό το άρθρο;