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 AWS để 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 khóa KMS mới
Đi tới KMS -> Customer managed keys, rồi nhấp vào Create Key
Chọn thuật toán mã hóa đối xứng
Sau khi khóa được tạo, hãy ghi lại ARN của khóa. Các định dạng được hỗ trợ gồm arn:aws:kms:<region>:<account_number>:key/<uuid>, ...:key/mrk-*, hoặc ...:alias/<alias_name>

2. Tạo chính sách tùy chỉnh để giới hạn quyền truy cập vào khóa KMS
Đi tới IAM -> Policies, rồi nhấp vào Create Policy
Ở bước Specify permissions, chọn JSON và nhập nội dung sau để cấp cho chính sách các hành động truy cập KMS. Hãy chắc chắn thay YOUR_KMS_ARN bằng ARN của khóa bạn đã tạo.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowEncryptDecrypt",
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"kms:Encrypt"
],
"Resource": <YOUR_KMS_ARN>
}
]
}
3. Tạo IAM Role để OpenAI đảm nhận và gán vai trò đó vào chính sách có quyền truy cập hạn chế tới KMS của bạn
OpenAI sẽ gọi AssumeRole từ một tài khoản AWS do OpenAI sở hữu. Bước này xác nhận rằng principal AWS của OpenAI có thể đảm nhận vai trò giới hạn để truy cập KMS của bạn.
Đi tới IAM -> Roles rồi nhấp vào Create Role
Ở bước Select trusted entity, chọn Custom trust policy

Nhập nội dung sau vào Custom trust policy để cho phép principal AWS của OpenAI truy cập.
Principal là principal AWS của OpenAI - arn:aws:iam::790389265272:role/EnterpriseKeyManagement
Chỉ định ExternalId mà OpenAI sẽ truyền trong quá trình AssumeRole.
Đối với ChatGPT hoặc API, bạn có thể dùng organization id (org-xxx) gắn với không gian làm việc của mình - https://platform.api.openai.org/settings/organization/general
Đối với API, bạn có thể nhập một API project ID cụ thể để có độ chi tiết cao hơn
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::790389265272:role/EnterpriseKeyManagement"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": [
<YOUR_OPENAI_ORGANIZATION_ID>,
]
}
}
}
]
}
Ở bước Add permissions, tìm tên chính sách của chính sách IAM bạn đã tạo ở bước trước. Nhấp vào checkbox bên cạnh tên chính sách, rồi nhấp Next.

Trong phần Name, review, and create, chọn bất kỳ tên vai trò nào.
4. Áp dụng mọi hạn chế bổ sung phù hợp với thực hành 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 thêm các chính sách khóa hoặc hạn chế khác phù hợp với thực hành bảo mật nội bộ của mình, miễn là OpenAI vẫn có thể gọi các thao tác encrypt và decrypt 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 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ẻ những thông tin sau:
"role_arn": "arn:aws:iam::<YOUR_AWS_ACCOUNT_NUMBER>:role/<YOUR_ROLE>",
Role ARN mà OpenAI sẽ đảm nhận trong môi trường đám mây của bạn
"kms_arn": "arn:aws:kms:<REGION>:<YOUR_AWS_ACCOUNT_NUMBER>:key/<UUID>"
ARN của Key Management System cho khóa chính mà bạn quản lý
Chúng tôi sẽ kích hoạ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 ra một id khóa ngoài.
Ở bước này, chúng tôi sẽ xác thực đầu vào của bạn là hợp lệ và rằng 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.
curl -X POST \
-H "Content-type: application/json" \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/external_keys" \
-d '{
"type": "aws",
"name": "Cấu hình AWS EKM",
"role_arn": "arn:aws:iam::<YOUR_AWS_ACCOUNT_NUMBER>:role/<YOUR_ROLE>",
"kms_arn": "arn:aws:kms:<REGION>:<YOUR_AWS_ACCOUNT_NUMBER>:key/<UUID>",
"external_id": <id tổ chức hoặc id dự án của bạn>
}'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.
Nội dung phản hồi của lệnh gọi API này sẽ cung cấp cho bạn project ID (proj_xxx)
curl -X POST \
-H "Content-type: application/json" \
-H "Authorization: Bearer $TOKEN" \
"https://api.openai.com/v1/organization/projects" \
-d '{
"name": "Một dự án",
"external_key_id": "extkey_xxxx"
}'
