ภาพรวม
Enterprise Key Management (EKM) ช่วยให้ OpenAI เข้ารหัสข้อมูลโดยใช้คีย์หลักที่คุณควบคุม เอกสารนี้แสดงวิธีตั้งค่าบัญชี AWS ของคุณเพื่อให้ OpenAI มีสิทธิ์แบบจำกัดบน KMS ของคุณ

ขั้นตอน
1. สร้าง คีย์ KMS ใหม่
ไปที่ KMS -> คีย์ที่ลูกค้าจัดการ จากนั้นคลิก สร้างคีย์
เลือกอัลกอริทึมการเข้ารหัสแบบสมมาตร
หลังจากสร้างคีย์ของคุณแล้ว ให้จด ARN ของคีย์ไว้ รูปแบบที่รองรับ ได้แก่
arn:aws:kms:<region>:<account_number>:key/<uuid>,...:key/mrk-*หรือ...:alias/<alias_name>

2. สร้าง นโยบายแบบกำหนดเอง สำหรับการเข้าถึงคีย์ KMS แบบจำกัด
ไปที่ IAM -> นโยบาย จากนั้นคลิกสร้างนโยบาย
ในขั้นตอน ระบุสิทธิ์ ให้เลือก JSON แล้วป้อนข้อมูลต่อไปนี้เพื่อให้นโยบายมีการดำเนินการเข้าถึง KMS ตรวจสอบให้แน่ใจว่าคุณแทนที่ YOUR_KMS_ARN ด้วย ARN ของคีย์ที่คุณสร้าง

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowEncryptDecrypt",
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"kms:Encrypt"
],
"Resource": <YOUR_KMS_ARN>
}
]
}3. สร้าง บทบาท IAM เพื่อให้ OpenAI รับบทบาท และกำหนดให้กับนโยบายที่มีสิทธิ์เข้าถึง KMS ของคุณแบบจำกัด
OpenAI จะเรียก AssumeRole จากบัญชี AWS ที่ OpenAI เป็นเจ้าของ ขั้นตอนนี้ช่วยให้ AWS principal ของ OpenAI รับบทบาทแบบจำกัดเพื่อเข้าถึง KMS ของคุณได้
ไปที่ IAM -> บทบาท จากนั้นคลิก สร้างบทบาท
ในขั้นตอน เลือกเอนทิตีที่เชื่อถือได้ ให้เลือก นโยบายความเชื่อถือแบบกำหนดเอง

ถัดไป ให้ป้อนข้อมูลต่อไปนี้ใน นโยบายความเชื่อถือแบบกำหนดเอง เพื่ออนุญาตการเข้าถึง AWS principal ของ OpenAI
principal คือ AWS principal ของ OpenAI:
arn:aws:iam::790389265272:role/EnterpriseKeyManagementระบุว่า OpenAI ควรส่ง ExternalId ใดระหว่างกระบวนการ
AssumeRoleสำหรับ ChatGPT หรือ API ให้ใช้ ID องค์กร (org-xxx) ที่เชื่อมโยงกับเวิร์กสเปซของคุณ: https://platform.api.openai.org/settings/organization/general
สำหรับ API คุณสามารถใช้ ID โปรเจกต์ API ที่เฉพาะเจาะจงเพื่อความละเอียดมากขึ้น
{
"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>,
]
}
}
}
]
}จากนั้น ในขั้นตอน เพิ่มสิทธิ์ ให้ค้นหาชื่อนโยบายของนโยบาย IAM ที่คุณสร้างในขั้นตอนก่อนหน้า คลิก ช่องทำเครื่องหมาย ถัดจากชื่อนโยบาย จากนั้นคลิก ถัดไป

สุดท้าย ในส่วน ตั้งชื่อ ตรวจสอบ และสร้าง ให้เลือกชื่อบทบาทใดก็ได้
4. ใช้ข้อจำกัดเพิ่มเติมใดๆ ให้สอดคล้องกับแนวปฏิบัติด้านความปลอดภัยของคุณเอง
ด้านบนคือ ข้อมูลขั้นต่ำที่จำเป็น ที่ OpenAI ต้องใช้ในการตั้งค่า EKM คุณสามารถใช้นโยบายคีย์หรือข้อจำกัดเพิ่มเติมให้สอดคล้องกับแนวปฏิบัติด้านความปลอดภัยภายในของคุณเองได้ ตราบใดที่ OpenAI สามารถเรียกการดำเนินการเข้ารหัสและถอดรหัสบน KMS ของคุณได้ เมื่อคุณเรียก endpoint การลงทะเบียนคีย์กับ OpenAI ที่อธิบายไว้ด้านล่าง เราจะตรวจสอบการตั้งค่าของคุณ
หลังจากทำขั้นตอนข้างต้นเสร็จสิ้น
ChatGPT Enterprise
โปรดติดต่อผู้ประสานงาน OpenAI ของคุณและแชร์ข้อมูลต่อไปนี้:
"role_arn": "arn:aws:iam::<YOUR_AWS_ACCOUNT_NUMBER>:role/<YOUR_ROLE>"Role ARN ที่ OpenAI จะรับบทบาทในคลาวด์ของคุณ
"kms_arn": "arn:aws:kms:<REGION>:<YOUR_AWS_ACCOUNT_NUMBER>:key/<UUID>"ARN ของ Key Management System สำหรับคีย์หลักที่คุณจัดการ
เราจะเปิดใช้งาน EKM สำหรับองค์กร/เวิร์กสเปซ ChatGPT ของคุณ
API
ลงทะเบียนคีย์ภายนอกของคุณกับ OpenAI
ทำตามคำแนะนำในเอกสารอ้างอิง API นี้: คีย์ภายนอกใน Management API
ขั้นแรก ให้ลงทะเบียนคีย์ภายนอกของคุณที่ระดับองค์กร OpenAI ซึ่งจะสร้าง ID คีย์ภายนอก
ในขั้นตอนนี้ เราจะตรวจสอบว่าอินพุตของคุณถูกต้อง และเราสามารถยืนยันตัวตนกับ KMS ของคุณได้
การดำเนินการนี้จะยังไม่เพิ่ม EKM ไปยังโปรเจกต์ OpenAI ของคุณ
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::<YOUR_AWS_ACCOUNT_NUMBER>:role/<YOUR_ROLE>",
"kms_arn": "arn:aws:kms:<REGION>:<YOUR_AWS_ACCOUNT_NUMBER>:key/<UUID>",
"external_id": <your org id or project id>
}'จากนั้น สร้างโปรเจกต์ OpenAI ที่เชื่อมโยงกับคีย์ภายนอก หลังจากนี้ EKM จะเปิดใช้งานบนโปรเจกต์ของคุณ เนื้อหาการตอบกลับของการเรียก API นี้จะให้ ID โปรเจกต์ (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"
}'