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. Tài liệu này hướng dẫn cách thiết lập tài khoản GCP của bạn để cấp cho OpenAI các quyền hạn chế trên KMS của bạn.

Các bước
1. Tạo danh tính liên kết cho OpenAI
OpenAI sẽ phát hành một token danh tính từ tài khoản GCP do OpenAI sở hữu có dạng gần giống như sau.
azp và sub là ID tài khoản dịch vụ của OpenAI trong GCP
aud là ID tổ chức OpenAI của bạn. Bạn cũng có thể chọn một audience khác, chẳng hạn như ID dự án OpenAI của bạn - xem hướng dẫn bên dưới
{
"aud": "org-xxxx",
"azp": "105900137572174660365",
"exp": 1747876928,
"iat": 1747873328,
"iss": "https://accounts.google.com",
"sub": "105900137572174660365"
}Bước này nhận diện các claim do token danh tính đó đưa ra và cho phép GCP STS của bạn phát hành một token truy cập khi token danh tính đó được cung cấp.
Đi tới IAM & Admin -> Workload Identity Federation và nhấp vào Create Pool

Trong bước Create an identity pool, nhập bất kỳ giá trị nào cho tên pool.
Hãy ghi nhớ giá trị này để dùng sau - bạn sẽ cần đăng ký giá trị này với OpenAI
Trong bước Add a provider to pool:
Trong Select a provider, chọn OpenID Connect (OIDC)
Nhập bất kỳ giá trị nào cho tên provider.
Trong phần Issuer (URL), nhập https://accounts.google.com
Trong phần Audiences
Chọn Allowed audiences
Nhập audience mà OpenAI nên chỉ định khi chúng tôi gửi cho bạn một token.
Đối với ChatGPT hoặc API: Bạn có thể nhập ID tổ chức API OpenAI (org-xxx)
Đối với API: bạn có thể nhập một ID dự án API cụ thể để chi tiết hơn.

Trong phần Attribute mapping
đối với google.subject hãy nhập assertion.sub

Trong phần Attribute conditions
nhập
assertion.sub == "105900137572174660365"
Bây giờ bạn sẽ thấy workload identity pool và workload identity provider của mình được liệt kê trên trang https://console.cloud.google.com/iam-admin/workload-identity-pools
Workload identity pool id

Workload identity provider ID

2. Đảm bảo KMS đã được bật
Đi tới https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview để bật KMS. Bạn không bắt buộc phải tạo KMS trong cùng dự án GCP nơi bạn đã nhận diện danh tính liên kết của OpenAI; tuy nhiên, nếu các dự án khác nhau, sản phẩm KMS ít nhất phải được bật trong cả hai dự án.
3. Tạo Khóa KMS mới
Đi tới Security -> Data Protection > Key Management
Trong tab Overview, nhấp vào Create key ring
Chọn bất kỳ tên nào cho key ring của bạn
Đối với Purpose and algorithm, chọn Symmetric encrypt/decrypt

Sau khi tạo key ring, key ring đó sẽ được liệt kê trong tab Key Rings. Nhấp vào key ring.
Trong chi tiết key ring, nhấp vào Create Key
Chọn bất kỳ tên nào cho khóa của bạn
4. Tạo một vai trò hạn chế cho các thao tác mã hóa/giải mã trên KMS
Đi tới IAM & Admin -> Roles -> Create role
Nhập bất kỳ giá trị nào cho tiêu đề và ID của vai trò
Nhấp vào Add Permissions, sau đó thêm các quyền sau
cloudkms.cryptoKeyVersions.useToDecrypt
cloudkms.cryptoKeyVersions.useToEncrypt
5. Gán danh tính liên kết của OpenAI vào vai trò KMS hạn chế cho các thao tác mã hóa/giải mã
Đi tới Security -> Data Protection > Key Management
Nhấp vào tên key ring của bạn, sau đó nhấp vào tên khóa để đi tới trang chi tiết khóa.
Nếu bạn chưa có phần này, hãy quay lại mục Create a KMS
Nhấp vào tab Permissions, sau đó nhấp vào nút Grant Access

Gán danh tính liên kết của OpenAI vào vai trò tùy chỉnh mà bạn đã tạo trước đó
Trong phần Add principals, nhập principal://iam.googleapis.com/projects/<YOUR_GCP_PROJECT_NUMBER>/locations/global/workloadIdentityPools/<YOUR_GCP_WORKLOAD_IDENTITY_POOL>/subject/105900137572174660365
YOUR_GCP_PROJECT_NUMBER ở đây là dự án mà bạn đã nhận diện danh tính liên kết của OpenAI bằng cách tạo YOUR_GCP_WORKLOAD_IDENTITY_POOL. Dự án này có thể, nhưng không bắt buộc phải, là cùng dự án nơi KMS của bạn hoạt động.
Nếu các dự án khác nhau, hãy đảm bảo KMS ít nhất đã được bật trên dự án còn lại bằng cách đi tới https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview
Trong phần Assign roles, chọn vai trò tùy chỉnh mà bạn đã tạo ở bước trước cho các quyền EKM hạn chế
6. Áp dụng mọi hạn chế bổ sung phù hợp với các biện pháp bảo mật của riêng bạn
Trên đây là thông tin tối thiểu bắt buộc 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 biện pháp 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 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ẻ những thông tin sau:
"workload_identity_project_number": "123456789012",
Số dự án GCP gồm 12 chữ số nơi bạn đã đăng ký workload identity của OpenAI
"workload_identity_pool_id": "openai-azure",
Pool chứa provider Workload Identity mà bạn đã đăng ký cho OpenAI
"workload_identity_provider_id": "openai-ekm-service-role",
Provider Workload Identity mà bạn đã đăng ký cho OpenAI
"kms_project_id": "adjective-noun-12345",
Tên của dự án GCP nơi KMS của bạn hoạt động
"kms_key_name": "openai-kms-key",
Tên của khóa chính trong Key Management System
"kms_key_ring_name": "openai-kms-key-ring",
Key ring của Key Management System chứa khóa chính mà bạn quản lý
"kms_key_location": "us-east1"
Khu vực nơi đặt khóa chính của Key Management System
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 External Keys in the 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 external key id.
Trong bước này, chúng tôi sẽ xác thực thiết lập của bạn trên GCP bằng cách kiểm tra rằng chúng tôi có thể xác thực với KMS của bạn.
Việc này sẽ chưa thêm EKM vào dự án OpenAI của bạn.
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": <ID tổ chức hoặc ID dự án của bạn>,
"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"
}'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 được kích hoạt trên dự án của bạ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"
}'