نمای کلی
Enterprise Key Management (EKM) به OpenAI امکان میدهد دادهها را با استفاده از یک کلید اصلی که شما کنترل میکنید رمزگذاری کند. این سند نشان میدهد چگونه حساب GCP خود را تنظیم کنید تا به OpenAI مجوزهای محدودی روی KMS خود بدهید.

مراحل
۱. یک هویت فدرهشده برای OpenAI ایجاد کنید
OpenAI یک توکن هویت از یک حساب GCP متعلق به OpenAI صادر خواهد کرد که چیزی شبیه به این است.
azp و sub شناسه حساب سرویس OpenAI در GCP هستند
aud شناسه سازمان OpenAI شماست. همچنین میتوانید مخاطب دیگری مانند شناسه پروژه OpenAI خود را انتخاب کنید؛ دستورالعملهای زیر را ببینید
{
"aud": "org-xxxx",
"azp": "105900137572174660365",
"exp": 1747876928,
"iat": 1747873328,
"iss": "https://accounts.google.com",
"sub": "105900137572174660365"
}این مرحله ادعاهای موجود در آن توکن هویت را شناسایی میکند و به GCP STS شما امکان میدهد وقتی آن توکن هویت ارائه میشود، یک توکن دسترسی صادر کند.
به IAM & Admin -> Workload Identity Federation بروید و روی Create Pool کلیک کنید

در مرحله Create an identity pool, برای pool name. هر چیزی وارد کنید
در مرحله Add a provider to pool:
در Select a provider، گزینه OpenID Connect (OIDC) را انتخاب کنید
برای provider name هر چیزی وارد کنید.
در بخش Issuer (URL)، https://accounts.google.com را وارد کنید
در بخش Audiences
گزینه Allowed audiences را انتخاب کنید
مخاطبی را وارد کنید که OpenAI هنگام ارسال توکن به شما باید مشخص کند.
برای ChatGPT یا API: میتوانید شناسه سازمان OpenAI API (org-xxx) را وارد کنید
برای API: برای جزئیات بیشتر میتوانید یک شناسه پروژه API مشخص وارد کنید.

در بخش Attribute mapping
برای google.subject مقدار assertion.sub را وارد کنید

در بخش Attribute conditions
اکنون باید workload identity pool و workload identity provider خود را در صفحه https://console.cloud.google.com/iam-admin/workload-identity-pools فهرستشده ببینید
Workload identity pool id

Workload identity provider ID

۲. مطمئن شوید KMS فعال است
برای فعال کردن KMS به https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview بروید. لازم نیست KMS خود را در همان پروژه GCP ایجاد کنید که هویت فدرهشده OpenAI را در آن شناسایی کردهاید؛ با این حال، اگر پروژهها متفاوت باشند، محصول KMS باید دستکم در هر دو پروژه فعال باشد.
۳. یک کلید KMS جدید ایجاد کنید
به Security -> Data Protection > Key Management بروید
در زبانه Overview روی Create key ring کلیک کنید
هر نامی که میخواهید برای key ring خود انتخاب کنید
برای Purpose و algorithm، گزینه Symmetric encrypt/decrypt را انتخاب کنید

پس از ایجاد key ring، باید در زبانه Key Rings فهرست شود. روی key ring کلیک کنید.
در جزئیات key ring، روی Create Key کلیک کنید
هر نامی که میخواهید برای کلید خود انتخاب کنید
۴. یک نقش محدود برای عملیات رمزگذاری/رمزگشایی در KMS ایجاد کنید
به IAM & Admin -> Roles -> Create role بروید
برای عنوان نقش و ID هر چیزی وارد کنید
روی Add Permissions کلیک کنید، سپس موارد زیر را اضافه کنید
cloudkms.cryptoKeyVersions.useToDecrypt
cloudkms.cryptoKeyVersions.useToEncrypt
۵. هویت فدرهشده OpenAI را برای عملیات رمزگذاری/رمزگشایی به نقش محدود KMS اختصاص دهید
به Security -> Data Protection > Key Management بروید
روی نام key ring خود کلیک کنید، سپس برای رفتن به صفحه جزئیات کلید، روی key name خود کلیک کنید.
روی زبانه Permissions کلیک کنید، سپس روی دکمه Grant Access کلیک کنید

هویت فدرهشده OpenAI را به نقش سفارشیای که قبلاً ایجاد کردهاید اختصاص دهید
در بخش Add principals، این را وارد کنید: principal://iam.googleapis.com/projects/<YOUR_GCP_PROJECT_NUMBER>/locations/global/workloadIdentityPools/<YOUR_GCP_WORKLOAD_IDENTITY_POOL>/subject/105900137572174660365
در بخش Assign roles، نقش سفارشیای را که در مرحله قبل برای مجوزهای محدود EKM ایجاد کردهاید انتخاب کنید
۶. هرگونه محدودیت اضافی را مطابق با رویههای امنیتی خود اعمال کنید
موارد بالا حداقل اطلاعات مورد نیاز برای تنظیم EKM توسط OpenAI است. آزادید سیاستها یا محدودیتهای کلیدی اضافی را مطابق با رویههای امنیتی داخلی خود اعمال کنید، به شرطی که OpenAI بتواند عملیات رمزگذاری و رمزگشایی را روی KMS شما فراخوانی کند. وقتی نقطه پایان ثبت کلید در OpenAI را که در زیر توضیح داده شده فراخوانی کنید، تنظیمات شما را اعتبارسنجی میکنیم.
پس از تکمیل مراحل بالا
ChatGPT Enterprise
لطفاً با مخاطب OpenAI خود تماس بگیرید و موارد زیر را به اشتراک بگذارید:
"workload_identity_project_number": "123456789012",
"workload_identity_pool_id": "openai-azure",
"workload_identity_provider_id": "openai-ekm-service-role",
"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"
منطقهای که کلید اصلی Key Management System شما در آن قرار دارد
ما EKM را برای سازمان/فضای کاری ChatGPT شما فعال خواهیم کرد.
API
کلید خارجی خود را در OpenAI ثبت کنید
دستورالعملهای این مرجع API را دنبال کنید: کلیدهای خارجی در API مدیریت
ابتدا کلید خارجی خود را در سطح سازمان OpenAI ثبت کنید؛ با این کار یک شناسه کلید خارجی ایجاد میشود.
در این مرحله، با بررسی اینکه میتوانیم به KMS شما احراز هویت کنیم، تنظیمات شما را در GCP اعتبارسنجی میکنیم.
این کار هنوز EKM را به پروژه OpenAI شما اضافه نمیکند.
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": <شناسه سازمان یا شناسه پروژه شما>,
"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"
}'سپس یک پروژه OpenAI مرتبط با کلید خارجی ایجاد کنید. پس از این، EKM در پروژه شما فعال میشود.
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"
}'