Mengamankan Layanan MPC menggunakan Peran IAM

Model Keamanan: Defense-in-Depth

Multi-party Compute (MPC) API menerapkan arsitektur keamanan defense in depth yang mengandalkan kontrol Identity and Access Management (IAM) yang ketat. Model ini memastikan bahwa tidak ada satu pun identitas atau Akun Google yang disusupi yang dapat membahayakan platform atau mengekstrak aset secara sepihak.

  • Lapisan 1: Identity & Access Management (IAM): Semua permintaan diverifikasi di edge untuk mengonfirmasi bahwa pemanggil memiliki izin eksplisit yang diperlukan untuk memanggil metode Google Cloud API tertentu (lihat Ringkasan IAM). Akun yang tidak memiliki hak istimewa yang memadai akan langsung ditolak dengan error 403 Forbidden, sehingga mencegah traffic yang tidak sah mencapai lapisan aplikasi.
  • Lapisan 2: Pemisahan Tugas (SoD): Platform MPC menerapkan pemisahan peran yang ketat untuk memastikan bahwa tindakan tata kelola dan eksekusi yang berbeda tidak dapat dilakukan oleh individu yang sama. Dengan menentukan peran yang berbeda—seperti membatasi Penulis Kebijakan hanya untuk mengedit kebijakan, dan Penanda Tangan hanya untuk menandatangani payload transaksi—sistem memastikan bahwa satu agen nakal atau akun yang disusupi tidak dapat menjalankan transaksi sensitif secara independen.
  • Lapisan 3: Prinsip Hak Istimewa Terendah: Akses diberikan secara ketat berdasarkan fungsi pekerjaan, sehingga memastikan pengguna hanya memiliki izin minimum yang diperlukan untuk menjalankan tugas mereka. Misalnya, tim Kepatuhan atau Audit beroperasi dengan hak istimewa terendah, dan hanya memiliki akses hanya baca untuk memantau aktivitas. Mereka dapat melihat kebijakan dan memeriksa log transaksi untuk pengawasan, tetapi tidak memiliki kemampuan untuk mengubah kebijakan, memulai transaksi, atau berinteraksi dengan aset.

Persona & Pemisahan Tugas

Keamanan diterapkan dengan memisahkan Administrasi (menyiapkan board) dari Tata Kelola (menentukan aturan) dan Eksekusi (memindahkan aset).

Persona Domain Peran IAM Ditetapkan Tanggung Jawab Utama
Administrator Administrasi mpc.admin Menyediakan resource. Tidak dapat menandatangani transaksi atau membuat kebijakan.
Policy Author Tata kelola mpc.editor Menentukan dan mengedit kebijakan operasional (misalnya, batas pembelanjaan).
Penanda Tangan Eksekusi mpc.editor Menandatangani payload transaksi. Tidak dapat menulis kebijakan.
Kepatuhan Pengawasan mpc.viewer Akses hanya baca untuk memantau aktivitas dan memeriksa kebijakan. Tidak dapat mengubah kebijakan atau memulai transaksi.

Peran IAM yang telah ditetapkan

Tabel berikut menjelaskan izin IAM spesifik untuk Multi-party Compute (MPC) API dan peran yang memberikannya. Untuk mengetahui informasi selengkapnya tentang operasi API, lihat Referensi MPC API.

Peran Izin
Multi-party Compute Viewer
(roles/mpc.viewer)

Memberikan akses hanya baca di seluruh API (operasi Get/List di semua resource). Paling cocok untuk auditor atau alat pemantauan.

Resource level terendah tempat Anda dapat memberikan peran ini:
  • KeyRing
mpc.googleapis.com/keyRings.get
mpc.googleapis.com/keyRings.list
mpc.googleapis.com/keys.get
mpc.googleapis.com/keys.list
mpc.googleapis.com/policies.get
mpc.googleapis.com/policies.list
mpc.googleapis.com/policyAuthorTrustBundles.get
mpc.googleapis.com/proposals.get
mpc.googleapis.com/proposals.list
mpc.googleapis.com/signers.get
mpc.googleapis.com/signers.list
Multi-party Compute Editor
(roles/mpc.editor)

Dirancang untuk Penulis Kebijakan dan Peserta (Penanda Tangan). Memberikan kemampuan untuk mengelola kebijakan, membuat proposal, dan mencatat keputusan peserta.

Resource level terendah tempat Anda dapat memberikan peran ini:
  • KeyRing
Mencakup semua izin roles/mpc.viewer, plus:

mpc.googleapis.com/keyRings.update
mpc.googleapis.com/keys.update
mpc.googleapis.com/policies.addQuorumSignature
mpc.googleapis.com/policies.create
mpc.googleapis.com/policies.revoke
mpc.googleapis.com/proposals.create
mpc.googleapis.com/proposals.fetchProposalSignature
mpc.googleapis.com/proposals.recordParticipantDecision
Admin Komputasi Multi-pihak
(roles/mpc.admin)

Didesain untuk Administrator. Memberikan akses penuh untuk menyediakan infrastruktur, membuat kunci, dan mendaftarkan kunci publik peserta.

Resource level terendah tempat Anda dapat memberikan peran ini:
  • Instance
Mencakup semua izin roles/mpc.editor, plus:

mpc.googleapis.com/keyRings.create
mpc.googleapis.com/keyRings.delete
mpc.googleapis.com/keys.create
mpc.googleapis.com/policyAuthorTrustBundles.update
mpc.googleapis.com/signers.create

Peran Khusus

Untuk memberikan akses hak istimewa terendah yang ketat kepada Peserta, alih-alih menggunakan peran bawaan yang lebih luas seperti roles/mpc.editor, Anda dapat membuat Peran IAM Kustom yang hanya berisi izin yang tepat yang mereka perlukan untuk berpartisipasi dalam operasi.

Contoh Perintah Peran Khusus

gcloud iam roles create customMpcSigner \
  --project="PROJECT_ID" \
  --title="Custom MPC Signer" \
  --description="Restricted role for transaction participants" \
  --permissions="mpc.googleapis.com/proposals.get,mpc.googleapis.com/proposals.list,mpc.googleapis.com/proposals.recordParticipantDecision"

IAM Bersyarat & Tingkat Resource

Dengan mematuhi prinsip hak istimewa terendah, Anda dapat mencakup peran IAM ke batas terbatas menggunakan IAM Conditions.

Jika beberapa unit bisnis beroperasi di Google Cloud Project yang sama menggunakan instance bersama, Anda dapat menerapkan pemisahan dengan menempatkan resource ke dalam KeyRing terpisah (misalnya, KeyRing A dan KeyRing B). Anda dapat memberikan roles/mpc.editor ke Akun Layanan menggunakan IAM Condition yang membatasinya secara eksklusif untuk operasi yang terjadi dalam KeyRing yang ditetapkan (KeyRing A), sekaligus membatasi akses ke KeyRing lain dalam instance yang sama.

Contoh Perintah

Contoh pembuatan binding peran cakupan KeyRing:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:sa-name@PROJECT_ID." \
  --role="roles/mpc.editor" \
  --condition="expression=resource.name.startsWith('projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID/mpc/keyRings/KEYRING_ID'),title=KeyRing_Scoped_Editor"

Identitas gabungan (Bring Your Own Identity)

Anda dapat mengautentikasi dan mengizinkan permintaan Komputasi Multi-pihak menggunakan Penyedia Identitas perusahaan eksternal (seperti Okta, Microsoft Entra ID, atau Ping Identity) atau runtime workload eksternal tanpa membuat Akun Google atau mengelola kunci akun layanan:

  • Workforce Identity Federation: Memetakan workforce pool tingkat organisasi (locations/global/workforcePools/<var>WORKFORCE_POOL_ID</var>) ke persona manusia—seperti Administrator, Policy Author, Signer, dan Compliance—dengan mengikat peran IAM ke grup IdP eksternal.
  • Workload Identity Federation: Memetakan workload identity pool level project (projects/<var>PROJECT_NUMBER</var>/locations/global/workloadIdentityPools/<var>WORKLOAD_POOL_ID</var>) ke node penanda tangan bersama otomatis yang berjalan di AWS, Azure, atau Kubernetes.

Akun utama gabungan juga harus diberi peran Service Usage Consumer (roles/serviceusage.serviceUsageConsumer) di project konsumen agar permintaan API dapat mengatribusikan kuota dan penagihan ke project.

Contoh binding peran gabungan

# Allow members of the workforce pool to consume APIs through the consumer project
gcloud projects add-iam-policy-binding <var>PROJECT_ID</var> \
  --member="principalSet://iam.googleapis.com/locations/global/workforcePools/<var>WORKFORCE_POOL_ID</var>/*" \
  --role="roles/serviceusage.serviceUsageConsumer"

# Grant MPC Admin to an external IdP administrators group
gcloud projects add-iam-policy-binding <var>PROJECT_ID</var> \
  --member="principalSet://iam.googleapis.com/locations/global/workforcePools/<var>WORKFORCE_POOL_ID</var>/group/mpc-admins" \
  --role="roles/mpc.admin"

# Grant MPC Editor to an external IdP signers group
gcloud projects add-iam-policy-binding <var>PROJECT_ID</var> \
  --member="principalSet://iam.googleapis.com/locations/global/workforcePools/<var>WORKFORCE_POOL_ID</var>/group/mpc-signers" \
  --role="roles/mpc.editor"

Ganti kode berikut:

  • <var>PROJECT_ID</var>: project ID konsumen untuk instance Komputasi Multi-pihak Anda.
  • <var>WORKFORCE_POOL_ID</var>: ID workforce identity pool level organisasi.

Untuk panduan menyeluruh yang lengkap, lihat Mengonfigurasi Workforce Identity Federation (BYOID).