OpenAI
Trang này được dịch bằng máy học. Xem bài viết gốc bằng tiếng Anh.

Hướng dẫn tích hợp OpenAI / Azure EKM

Hướng dẫn từng bước để thiết lập Azure và kích hoạt EKM

Đã cập nhật: 3 days ago

Tổng quan

Enterprise Key Management (EKM) cho phép OpenAI mã hóa dữ liệu bằng khóa gốc 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.

Azure EKM flow where OpenAI EKM uses Microsoft Entra ID to access your Key Vault and master KEK

Các bước

1. Tạo một service principal cho OpenAI trong tài khoản của bạn

  1. Lấy access token

az account get-access-token --resource https://graph.microsoft.com
--tenant YOUR_TENANT_ID

2. Tạo service principal - appId trong yêu cầu bên dưới là ID ứng dụng khách của OpenAI. Thao tác này sẽ tạo một principal với 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 OpenAI / Azure EKM - Tạo service principal

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 vai trò tùy chỉnh để giới hạn quyền truy cập KMS

  1. Đi tới Subscriptions -> Access Control (IAM)

  2. Trong menu thả xuống + Add , chọn Add custom role

  3. Đi tới tab JSON, nhấp Edit và thêm nội dung sau

    1. Chọn bất kỳ tên vai trò nào - hãy ghi nhớ tên bạn đã chọn

    2. Các quyền sau trong dataActions

      1. Microsoft.KeyVault/vaults/keys/encrypt/action

      2. Microsoft.KeyVault/vaults/keys/decrypt/action

      3. Microsoft.KeyVault/vaults/keys/read

        OpenAI / Azure EKM Integration Instructions Custom Role

3. Tạo Key Vault + Key

Nếu bạn chưa có, hãy tạo một Key Vault mới trong cùng gói đăng ký nơi bạn vừa tạo vai trò tùy chỉnh của mình

Trong Key Vault đó, tạo một Key mới:

  1. Đi tới Key Vault -> Objects -> Keys, rồi nhấp vào Generate/Import

  2. Trong Options, chọn Generate

    Azure Key Vault Keys page with Generate/Import highlighted to add a key
  3. Chọn RSA cho thuật toán mã hóa.

  4. Bạn có thể chọn bất kỳ kích thước khóa RSA nào

  5. Cung cấp một tên khóa theo định dạng sau: <org-xxx>--<any_name> trong đó org-xxx là ID tổ chức OpenAI của bạn mà bạn có thể tìm thấy tại https://platform.openai.com/settings/organization/general

    Azure Key Vault key generation form with RSA selected and key name org-abcdefg--test-keyvault-key

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. Vai trò này là bắt buộc ngay cả khi bạn có vai trò Owner. Để được gán vai trò này:

  1. Đi tới Key Vault->Access Control (IAM)

  2. Nhấp vào Add-> Add role assignment

    Azure Key Vault Access control (IAM) page with Add menu open to Add role assignment

4. Tạo gán vai trò cho service principal OpenAI + KMS tùy chỉnh mới + khóa mới

  1. Đi tới Key Vault -> Objects -> Keys sau đó nhấp vào hàng của khóa bạn đã tạo

  2. Đ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).

  3. Trong menu thả xuống + Add, chọn Add role assignment

    Azure Key Vault Access control (IAM) page with Add menu open to Add role assignment
  4. Trong tab Role, chọn tên của vai trò tùy chỉnh mà bạn vừa tạo.

    Azure role list filtered for openai- with the openai-azure-kms-role entry
  5. Trong tab Members:

    1. Nhấp vào “+ Select members”

    2. Nhập “ekm -” vào thanh tìm kiếm, sau đó service principal OpenAI mà bạn đã tạo ở Bước 1 sẽ xuất hiện

      Azure role assignment Members step with EKM - OpenAI Azure Application selected as a member

5. Áp dụng mọi hạn chế bổ sung phù hợp với quy trình 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 các quy trình bảo mật nội bộ của 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 như mô tả bên dưới, chúng tôi sẽ xác thực cấu hình của bạn.

Sau khi hoàn thành 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>"

    • UUID tenant Azure của bạn

  • "vault_uri": "https://<YOUR_KEYVAULT_NAME>.vault.azure.net/"

    • URI của kho Azure chứa khóa gốc do bạn quản lý

  • "key_name": "<YOUR_KEY_NAME>"

    • Tên của khóa gốc Azure Key Vault do 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 mà 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 ngoài của bạn với OpenAI

Làm theo hướng dẫn trong tài liệu tham khảo API này Khóa ngoài trong Management API

  • Trước tiên, hãy đăng ký khóa 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 ngoài có dạng extkey_xxx

  • Ở bước này, chúng tôi sẽ xác thực rằng dữ liệu đầu vào của bạn là hợp lệ và chúng tôi có thể xác thực với KMS của bạn.

  • Việc này vẫn chưa thêm EKM vào dự án OpenAI của bạn. 

# Thao tác này tạo một ID khóa ngoài có dạng 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 được liên kết với khóa 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)

    Hướng dẫn tích hợp OpenAI / Azure EKM - Tạo dự án

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

Bài viết này có hữu ích không?