Tổng quan
Enterprise Key Management (EKM) cho phép OpenAI mã hóa dữ liệu bằng khóa chính do bạn kiểm soát. Để OpenAI có thể gọi các thao tác mã hóa/giải mã trên Key Vault của bạn, chúng tôi cần được cấp quyền truy cập. Tài liệu này hướng dẫn cách thiết lập tài khoản Azure của bạn để OpenAI có thể đảm nhận một vai trò có quyền Key Vault.

Các bước
1. Tạo một thực thể dịch vụ cho OpenAI trong tài khoản của bạn
Lấy token truy cập
az account get-access-token --resource https://graph.microsoft.com
--tenant YOUR_TENANT_IDTạo thực thể dịch vụ - appId trong yêu cầu bên dưới là ID máy khách ứng dụng của OpenAI. Thao tác này sẽ tạo một thực thể có tên hiển thị “EKM - OpenAI Azure” - hãy ghi nhớ tên này cho các bước sau.
Hướng dẫn tích hợp EKM OpenAI / Azure - Tạo thực thể dịch vụ
curl -X POST https://graph.microsoft.com/v1.0/servicePrincipals \
-H "Authorization: Bearer $TOKEN_FROM_ABOVE" \
-H "Content-Type: application/json" \
–d '{"appId": "20a14814-5ab7-4612-a671-1382b412bf93"}'2. Tạo một vai trò tùy chỉnh để truy cập KMS giới hạn
Đi tới Subscriptions -> Access Control (IAM)
Trong menu thả xuống + Add, chọn Add custom role
Đi tới tab JSON, nhấp vào Edit và thêm nội dung sau:
Tên vai trò bất kỳ - hãy ghi nhớ tên bạn đã chọn
Các quyền sau trong dataActions:
Microsoft.KeyVault/vaults/keys/encrypt/actionMicrosoft.KeyVault/vaults/keys/decrypt/actionMicrosoft.KeyVault/vaults/keys/read

3. Tạo Key Vault + Khóa
Nếu bạn chưa có, hãy tạo một Key Vault mới trong cùng subscription nơi bạn vừa tạo vai trò tùy chỉnh.
Trong Key Vault đó, hãy tạo một Khóa mới:
Đi tới Key Vault -> Objects -> Keys, rồi nhấp vào Generate/Import
Trong Options, chọn Generate

Chọn RSA làm thuật toán mã hóa.
Bạn có thể chọn bất kỳ kích thước khóa RSA nào
Cung cấp tên khóa theo định dạng sau:
<org-xxx>--<any_name>, trong đóorg-xxxlà ID tổ chức OpenAI của bạn, có thể tìm thấy tại https://platform.openai.com/settings/organization/general

Nếu bạn không thể xem hoặc tạo khóa, hãy đảm bảo rằng bạn có vai trò Key Vault Administrator. Điều này là cần thiết ngay cả khi bạn có vai trò Owner. Để được gán vai trò:
Đi tới Key Vault -> Access Control (IAM)
Nhấp vào Add -> Add role assignment

4. Tạo một phép gán vai trò cho thực thể dịch vụ OpenAI + KMS tùy chỉnh mới + khóa mới
Đi tới Key Vault -> Objects -> Keys, rồi nhấp vào hàng của khóa bạn đã tạo
Đi tới Access control (IAM) cho khóa bạn vừa nhấp vào (không phải key vault của bạn).
Trong menu thả xuống + Add, chọn Add role assignment

Trong tab Role, chọn tên của vai trò tùy chỉnh bạn vừa tạo.

Trong tab Members:
Nhấp vào “+ Chọn thành viên”
Nhập “ekm -” vào thanh tìm kiếm, sau đó thực thể dịch vụ OpenAI mà bạn đã tạo ở Bước 1 sẽ được tải

5. Áp dụng mọi hạn chế bổ sung phù hợp với thực tiễn bảo mật của riêng bạn
Trên đây là thông tin tối thiểu mà OpenAI cần để thiết lập EKM. Bạn có thể tự do áp dụng các chính sách khóa hoặc hạn chế bổ sung phù hợp với thực tiễn bảo mật nội bộ của riêng mình, miễn là OpenAI có thể gọi các thao tác mã hóa và giải mã trên KMS của bạn. Khi bạn gọi điểm cuối đăng ký khóa với OpenAI được mô tả bên dưới, chúng tôi sẽ xác thực thiết lập của bạn.
Sau khi hoàn tất các bước trên
ChatGPT Enterprise
Vui lòng liên hệ với đầu mối OpenAI của bạn và chia sẻ thông tin sau:
"tenant_id": "<YOUR_AZURE_TENANT_UUID>"
"vault_uri": "https://<YOUR_KEYVAULT_NAME>.vault.azure.net/"
"key_name": "<YOUR_KEY_NAME>"
Tên của khóa chính Azure Key Vault mà bạn quản lý
Tên khóa phải có dạng <org-xxx>--<any_name>, trong đó org-xxx là ID tổ chức OpenAI của bạn, có thể tìm thấy tại https://platform.openai.com/settings/organization/general
Chúng tôi sẽ bật EKM cho tổ chức/không gian làm việc ChatGPT của bạn.
API
Đăng ký khóa bên ngoài của bạn với OpenAI
Làm theo hướng dẫn trong tài liệu tham chiếu API này: Khóa bên ngoài trong Management API
Trước tiên, hãy đăng ký khóa bên ngoài của bạn ở cấp tổ chức OpenAI; thao tác này sẽ tạo một ID khóa bên ngoài có dạng extkey_xxx
Ở bước này, chúng tôi sẽ xác thực rằng thông tin bạn nhập là hợp lệ và chúng tôi có thể xác thực với KMS của bạn.
Thao tác này chưa thêm EKM vào dự án OpenAI của bạn.
# This generates an external key ID of the form extkey_xxx
curl -X POST \
-H "Content-type: application/json" \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/external_keys" \
-d '{
"type": "azure",
"name": "<ANY_FRIENDLY_NAME>",
"tenant_id": "<YOUR_AZURE_TENANT_UUID>",
"vault_uri": "https://<YOUR_KEYVAULT_NAME>.vault.azure.net/",
"key_name": "<YOUR_KEY_NAME>"
}'Sau đó, tạo một dự án OpenAI liên kết với khóa bên ngoài. Sau bước này, EKM sẽ được kích hoạt trên dự án của bạn.
Phần nội dung phản hồi của lệnh gọi API này sẽ cung cấp cho bạn ID dự án (proj_xxx)
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"
}'