OpenAI

Petunjuk Integrasi OpenAI/GCP EKM

Instruksi langkah demi langkah untuk menyediakan GCP dan mengaktifkan EKM

Diperbarui: 13 days ago

Ringkasan

Manajemen Kunci Enterprise (EKM) memungkinkan OpenAI mengenkripsi data menggunakan kunci master yang Anda kendalikan. Dokumen ini menunjukkan cara menyiapkan akun GCP Anda untuk memberikan izin terbatas kepada OpenAI pada KMS Anda.

Diagram of OpenAI GCP EKM integration flow using STS token exchange and KMS encrypt or decrypt requests

Langkah

1. Buat identitas terfederasi untuk OpenAI

OpenAI akan menerbitkan token identitas dari akun GCP milik OpenAI yang kira-kira terlihat seperti ini.

  • azp dan sub adalah ID akun layanan OpenAI di GCP

  • AUD adalah ID Organisasi OpenAI Anda. Anda juga dapat memilih pemirsa lain seperti ID proyek OpenAI Anda - lihat petunjuk di bawah

{
  "aud": "org-xxxx",
  "azp": "105900137572174660365",
  "exp": 1747876928,
  "iat": 1747873328,
  "iss": "https://accounts.google.com",
  "sub": "105900137572174660365"
}

Langkah ini mengenali klaim yang dibuat oleh identity token tersebut dan memungkinkan GCP STS Anda menerbitkan token akses saat token identitas tersebut diberikan.

  1. Buka IAM & Admin -> Workload Identity Federation dan klik pada Create Pool

    GCP IAM & Admin with Workload Identity Federation selected
  2. Pada langkah Buat kumpulan identitas, masukkan nama apa pun untuk nama kumpulan.

    1. Ingat ini untuk nanti - Anda perlu mendaftarkannya ke OpenAI

  3. Pada langkah Tambahkan penyedia ke pool:

    1. Di bagian Pilih penyedia, pilih OpenID Connect (OIDC)

    2. Masukkan apa pun untuk nama penyedia.

    3. Di bagian Issuer (URL), masukkan https://accounts.google.com

    4. Di bagian Audiens

      1. Pilih Audiens yang Diizinkan

      2. Masukkan audiens yang harus ditunjukkan OpenAI saat kami meneruskan token kepada Anda secara formal.

        1. Untuk ChatGPT atau API: Anda dapat memasukkan ID Organisasi API OpenAI (org-xxx)

        2. Untuk API: Anda dapat memasukkan ID proyek API tertentu untuk perincian yang lebih mendetail.

          GCP Workload Identity Provider edit page with Allowed audiences selected and Audience 1 entered
    5. Di bagian Pemetaan Atribut

      1. untuk google.subject masukkan assertion.sub

        Google Cloud attribute mapping with Google 1 google.subject mapped to OIDC 1 assertion.sub
    6. Di bagian Kondisi atribut

      1. masukkan assertion.sub == "105900137572174660365"

  4. Sekarang Anda seharusnya melihat pool identitas beban kerja dan penyedia identitas beban kerja Anda tercantum di halaman https://console.cloud.google.com/iam-admin/workload-identity-pools tersebut

    1. ID kolam identitas beban kerja

      GCP Workload Identity Pools page highlighting the provider ID value needed for OpenAI EKM setup
    2. ID penyedia identitas beban kerja

      GCP Workload Identity Provider edit page with the provider ID field highlighted

2. Pastikan KMS diaktifkan

Buka https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview untuk mengaktifkan KMS. Anda tidak diharuskan untuk membuat KMS Anda di project GCP yang sama tempat Anda mengenali identitas federasi OpenAI; namun, jika project-nya berbeda, produk KMS setidaknya harus diaktifkan di kedua project.

3. Buat Kunci KMSbaru

  1. Buka Keamanan -> Perlindungan Data > Manajemen Kunci

  2. Di bawah tab Ringkasan, klik Buat key ring

    1. Pilih nama apa pun untuk key ring Anda

    2. Untuk Tujuan dan algoritma, pilih Enkripsi/dekripsi simetris

      GCP Key Management Overview page with the Create Key Ring button highlighted
    3. Setelah Anda membuat key ring, item tersebut akan muncul di tab Key Rings. Klik pada key ring.

    4. Di detail key ring, klik Buat Key

      1. Pilih nama apa pun untuk kunci Anda

4. Buat peran terbatas untuk operasi enkripsi/dekripsi pada KMS

  1. Buka IAM & Admin -> Peran -> Buat peran

  2. Masukkan apa saja untuk jabatan dan ID

  3. Klik Tambahkan Izin, lalu tambahkan hal berikut ini

    1. cloudkms.cryptoKeyVersions.useToDecrypt

    2. cloudkms.cryptoKeyVersions.useToEncrypt

5. Tetapkan identitas federasi OpenAI ke peran KMS terbatas untuk operasi enkripsi/dekripsi

  1. Buka Keamanan -> Perlindungan Data > Manajemen Kunci

  2. Klik nama key ring Anda, lalu klik nama kunci Anda untuk membuka halaman detail kunci Anda.

    1. Jika Anda belum memilikinya, buka bagian Create a KMS

  3. Klik tab Izin, lalu klik tombol Berikan Akses

    Google Cloud KMS key details page with Permissions tab open and Grant Access highlighted
  4. Tetapkan identitas federasi OpenAI ke peran kustom yang sebelumnya Anda buat

    1. Untuk bagian Tambahkan principal, masukkan prinsipal://iam.googleapis.com/projects/<YOUR_GCP_PROJECT_NUMBER>/locations/global/workloadIdentityPools/<YOUR_GCP_WORKLOAD_IDENTITY_POOL>/subject/105900137572174660365

      1. YOUR_GCP_PROJECT_NUMBER di sinilah proyek tempat Anda mengenali identitas federasi OpenAI dengan membuat YOUR_GCP_WORKLOAD_IDENTITY_POOL. Bisa, tetapi tidak harus, berada di proyek yang sama dengan tempat KMS Anda berada.

      2. Jika proyeknya berbeda, pastikan bahwa KMS setidaknya diaktifkan di proyek lainnya dengan membuka https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview

    2. Di bagian Tetapkan peran, pilih peran kustom yang Anda buat pada langkah sebelumnya untuk izin EKM terbatas

6. Terapkan batasan tambahan apa pun sesuai dengan praktik keamanan Anda sendiri

Di atas adalah informasi minimum yang diperlukan OpenAI untuk menyiapkan EKM. Anda bebas menerapkan kebijakan atau pembatasan kunci tambahan sesuai dengan praktik keamanan internal Anda sendiri, selama OpenAI dapat memanggil operasi enkripsi dan dekripsi pada KMS Anda. Saat Anda memanggil endpoint pendaftaran kunci dengan OpenAI yang dijelaskan di bawah ini, kami akan memvalidasi penyiapan Anda.

Setelah menyelesaikan langkah-langkah di atas

ChatGPT Enterprise

Harap hubungi kontak OpenAI Anda dan bagikan hal berikut:

  • "workload_identity_project_number": "123456789012",

    • Nomor proyek GCP 12 digit tempat Anda mendaftarkan identitas beban kerja OpenAI

  • "workload_identity_pool_id": "openai-azure",

    • Pool yang berisi penyedia Workload Identity yang Anda daftarkan untuk OpenAI

  • "workload_identity_provider_id": "openai-ekm-service-role",

    • Penyedia Workload Identity yang Anda daftarkan untuk OpenAI

  • "kms_project_id": "adjective-noun-12345",

    • Nama project GCP tempat KMS Anda berada

  • "kms_key_name": "openai-kms-key",

    • Nama kunci master Sistem Manajemen Kunci

  • "kms_key_ring_name": "openai-kms-key-ring",

    • Key ring Key Management System yang berisi kunci master yang Anda kelola

  • "kms_key_location": "us-east1"

    • Wilayah tempat kunci master Key Management System Anda berada

Kami akan mengaktifkan EKM untuk organisasi/workspace ChatGPT Anda.

API

Daftarkan kunci eksternal Anda di OpenAI

Ikuti petunjuk dalam referensi API ini Kunci Eksternal di Management API

  • Pertama, daftarkan kunci eksternal Anda di tingkat organisasi OpenAI, yang akan menghasilkan ID kunci eksternal.

  • Pada langkah ini, kami akan memvalidasi penyiapan Anda di GCP dengan memeriksa bahwa kami dapat melakukan autentikasi ke KMS Anda.

  • Langkah ini belum akan menambahkan EKM ke proyek OpenAI Anda.

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": <your org id or project id>,
   "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"
}'

Lalu, buat proyek OpenAI yang terkait dengan kunci eksternal. Setelah ini, EKM diaktifkan pada proyek Anda.

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"

}'

Apakah artikel ini membantu?