Kontrol akses dengan IAM
Halaman ini memberikan informasi tambahan untuk menggunakan peran Identity and Access Management (IAM)
guna menetapkan kontrol akses di tingkat project, untuk menentukan tingkat akses ke project dan fungsi
yang dibuat menggunakan perintah gcloud functions atau Cloud Functions v2 API. Google Cloud
Jika Anda telah membuat atau men-deploy fungsi menggunakan Cloud Run, lihat Kontrol akses dengan IAM dan Peran Cloud Run untuk mengetahui deskripsi mendetail tentang peran bawaan Cloud Run, mengontrol akses ke setiap layanan, membuat layanan menjadi publik, atau mengonfigurasi kebijakan organisasi untuk IAM pemanggil Cloud Run.
Kontrol akses untuk pengguna
Tambahkan pengguna sebagai anggota tim ke project Anda dan beri mereka peran menggunakan IAM.
Cloud Run Functions mendukung peran berikut:
- Peran bawaan Cloud Run (direkomendasikan)
- Peran bawaan Cloud Functions
- Peran dasar Editor, Pemilik, dan Viewer.
Kontrol akses untuk akun layanan
Akun layanan adalah jenis akunGoogle Cloud khusus yang bertindak sebagai identitas bagi pengguna non-manusia yang perlu melakukan autentikasi dan diizinkan untuk mengakses data serta melakukan berbagai tindakan. Beberapa akun ini dibuat dan dikelola oleh Google sendiri dan dikenal sebagai agen layanan.
Akun layanan berikut digunakan untuk Cloud Run Functions:
| Nama | ID anggota | Peran |
|---|---|---|
| Akun layanan default Compute Engine | PROJECT_NUMBER-compute@developer.gserviceaccount.com |
Editor |
| Agen Layanan Google Cloud Functions | service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com |
Agen Layanan Google Cloud Functions |
| Akun layanan Cloud Build lama1 | PROJECT_NUMBER@cloudbuild.gserviceaccount.com |
Akun Layanan Cloud Build |
| Akun Layanan Cloud Build | service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com |
Agen Layanan Cloud Build |
| Agen Layanan Google Container Registry | service-PROJECT_NUMBER@containerregistry.iam.gserviceaccount.com |
Agen Layanan Container Registry |
| Agen Layanan Artifact Registry | service-PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com |
Agen Layanan Artifact Registry |
Akun layanan runtime
Saat runtime, Cloud Run Functions secara default
menggunakan akun layanan default
Compute Engine (PROJECT_NUMBER-compute@developer.gserviceaccount.com), yang juga memiliki peran
Editor pada project. Anda dapat mengubah peran akun layanan ini
untuk membatasi atau memperluas izin untuk fungsi yang sedang berjalan. Anda juga dapat mengubah akun layanan
yang digunakan dengan menghindari akun layanan default saat mengonfigurasi identitas layanan.
Untuk mempelajari lebih lanjut akun layanan, baca dokumentasi akun layanan.
Akun layanan administratif
Untuk melakukan tindakan administratif pada project Anda selama pembuatan, update,
atau penghapusan fungsi, semua project di Cloud Run Functions memerlukan akun layanan
Agen Layanan Google Cloud Functions (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com).
Selain itu, semua runtime melakukan pembangunan dan penyimpanan image container dalam project Anda. Untuk mendukung hal ini, Anda juga perlu menyediakan hal berikut:
- Akun layanan Cloud Build lama1 (
PROJECT_NUMBER@cloudbuild.gserviceaccount.com) - Akun layanan Agen Layanan Cloud Build (
service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com) - Akun layanan Agen Layanan Google Container Registry (
service-PROJECT_NUMBER@containerregistry.iam.gserviceaccount.com)
Akun layanan ini harus memiliki peran yang tercantum dalam tabel sebelumnya.
Akun layanan Agen Layanan Google Cloud Functions
Secara default, akun layanan Agen Layanan
Google Cloud Functions (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com memiliki peran cloudfunctions.serviceAgent di project Anda.
Berikut adalah beberapa izin penting yang digunakan
cloudfunctions.serviceAgent:
| Izin | Deskripsi |
|---|---|
roles/artifactregistry.admin |
Mengelola repositori dan menyimpan image build di Artifact Registry. |
roles/cloudbuild.builds.editor |
Diperlukan agar dapat menggunakan Cloud Build untuk menjalankan build di project pengguna. |
roles/cloudbuild.customworkers.builder |
Membuat build di worker kustom Cloud Build. |
compute.globalOperations.get,compute.networks.access,vpcaccess.connectors.{get, use} |
Menyediakan fungsi dengan akses ke VPC project konsumen. |
roles/eventarc.developer |
Mengelola pemicu Eventarc untuk fungsi. |
firebasedatabase.instances.{get, update} |
Membuat fungsi yang dipicu oleh Firebase Realtime Database. |
iam.serviceAccounts.{actAs, getAccessToken, signBlob} |
Kemampuan untuk mendapatkan kredensial akun layanan runtime. |
iam.serviceAccounts.getOpenIdToken |
Diperlukan agar agen mendapatkan token OpenID pada otoritas yang ditentukan pengguna. Token OpenID digunakan untuk memanggil fungsi yang mendukung IAM. |
pubsub.subscriptions |
Mengelola langganan dalam project pengguna. |
pubsub.topics |
Mengelola topik dalam project pengguna. |
roles/run.developer |
Mengelola Layanan Cloud Run untuk fungsi. |
storage.buckets.create,storage.objects.{delete, get, create, list} |
Diperlukan untuk menyimpan kode sumber dalam project pengguna. |
Anda dapat melihat seluruh rangkaian izin pada peran IAM yang telah ditetapkan atau dengan menjalankan perintah ini:
gcloud iam roles describe roles/cloudfunctions.serviceAgent
Reset akun layanan ini ke peran default dengan menghapus peran apa pun yang dimilikinya dan menambahkan peran Agen Layanan Cloud Functions:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com \ --role roles/cloudfunctions.serviceAgent
Memecahkan masalah error izin
Jika Anda mendapatkan error izin saat men-deploy, mengupdate, menghapus, atau mengeksekusi fungsi dalam project, lakukan langkah-langkah berikut:
Pastikan Anda memiliki peran Editor atau Pemilik dalam project Anda, atau menggunakan peran Developer Cloud Functions.
Jika Anda menggunakan peran Developer Cloud Functions pada level project, pastikan juga bahwa Anda telah memberi pengguna peran Pengguna Akun Layanan IAM.
Saat ini, hanya izin eksekusi yang diperbolehkan di tingkat per-fungsi.
Pastikan akun layanan Agen Layanan Cloud Functions (
service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com) memiliki peran Agen Layanan Cloud Functions (cloudfunctions.serviceAgent) untuk project Anda.Pastikan kotak Include Google-provided role grants pada tab Permissions di halaman Console IAM dicentang untuk melihat akun ini. Atau, Anda dapat menggunakan
gcloud projects add-iam-policy-binding PROJECT_ID.Pastikan Anda memiliki izin untuk sumber pemicu, seperti Pub/Sub atau Cloud Storage.
Jika Anda mendapatkan error ”insufficient permissions”, atau mengalami masalah autentikasi lain saat menjalankan fungsi, pastikan akun layanan runtime memiliki izin yang benar untuk mengakses resource yang diperlukan fungsi Anda. Kemudian, ulangi langkah 2 dan 3.
Jika Anda mendapatkan error ”service unavailable” selama deployment, pastikan
akun layanan runtime PROJECT_ID@appspot.gserviceaccount.com
ada dalam project Anda. Untuk membuat ulang akun layanan ini jika sudah dihapus, lihat
Membatalkan penghapusan akun layanan.
Lihat juga Memecahkan masalah Cloud Run Functions.
1 Cloud Run Functions hanya menggunakan akun layanan Cloud Build lama untuk project yang dibuat sebelum Juli 2024.