ภาพรวม
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 ของ OpenAI สวมบทบาทที่มีสิทธิ์จำกัดเพื่อเข้าถึง KMS ของคุณได้
ไปที่ IAM > บทบาท แล้วเลือก สร้างบทบาท
ในขั้นตอน เลือกเอนทิตีที่เชื่อถือได้ ให้เลือก นโยบายความเชื่อถือแบบกำหนดเอง

จากนั้น ป้อนข้อมูลต่อไปนี้ในนโยบายความเชื่อถือแบบกำหนดเอง เพื่ออนุญาตให้ตัวตน AWS ของ OpenAI เข้าถึงได้
ตัวตนดังกล่าวคือตัวตน AWS ของ OpenAI:
arn:aws:iam::790389265272:role/EnterpriseKeyManagementระบุค่า ExternalId ที่ OpenAI ควรส่งระหว่างกระบวนการ
AssumeRoleสำหรับ ChatGPT หรือ API ให้ใช้รหัสองค์กร (org-xxx) ที่เชื่อมโยงกับเวิร์กสเปซของคุณ โดยดูได้ที่การตั้งค่าองค์กร
สำหรับ API คุณสามารถใช้รหัสโปรเจกต์ 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 นี้: คีย์ภายนอกใน API การจัดการ
ขั้นแรก ให้ลงทะเบียนคีย์ภายนอกของคุณในระดับองค์กรของ OpenAI ซึ่งจะสร้างรหัสคีย์ภายนอกขึ้นมา
ในขั้นตอนนี้ เราจะตรวจสอบว่าข้อมูลที่คุณป้อนถูกต้อง และเราสามารถยืนยันตัวตนกับ 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"
}'