Σύνοψη
Πρόσβαση
Τα 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 που διαχειρίζεστε.
Πρέπει να έχει τη μορφή <org-xxx>--<any_name>
όπου org-xxx είναι το αναγνωριστικό οργανισμού OpenAI που μπορείτε να βρείτε στη διεύθυνση 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"
}'Δείγμα απόκρισης
{
"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
}