Mengizinkan akses dengan IAM

Anda menggunakan Identity and Access Management (IAM) untuk memberikan otorisasi identitas agar dapat melakukan tindakan administratif pada fungsi yang dibuat menggunakan Cloud Functions v2 API—misalnya, menggunakan gcloud functions, REST API, atau Terraform. Tindakan administrasi mencakup pembuatan, update, dan penghapusan fungsi. Untuk mengetahui informasi tentang akses IAM untuk fungsi yang dibuat dengan Cloud Run, lihat Kontrol akses dengan IAM.

Di IAM, Anda memberikan principal (identitas yang ingin Anda aktifkan, biasanya email akun layanan atau pengguna) peran IAM yang sesuai pada fungsi atau project. Peran ini mencakup izin yang menentukan tindakan yang diizinkan untuk dilakukan oleh principal.

Sebelum memulai

Guna mendapatkan izin yang diperlukan untuk mengontrol akses untuk fungsi tertentu atau semua fungsi dalam project, minta administrator untuk memberi Anda peran IAM Cloud Functions Admin (roles/roles/cloudfunctions.admin) pada fungsi atau project. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran bawaan ini berisi izin cloudfunctions.functions.setIamPolicy, yang diperlukan untuk mengontrol akses untuk fungsi tertentu atau semua fungsi dalam project.

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Lihat peran IAM Cloud Functions untuk mengetahui daftar lengkap peran dan izin yang terkait.

Mengaktifkan akses ke fungsi

Anda dapat mengontrol tindakan pada fungsi dengan memberikan atau membatasi peran ke masing-masing identitas melalui IAM.

Menambahkan principal dan memberikan peran

Gunakan perintah gcloud functions add-iam-policy-binding:

gcloud functions add-iam-policy-binding FUNCTION_NAME \
  --member=PRINCIPAL_ID \
  --role=ROLE
 

dengan FUNCTION_NAME sebagai nama fungsi, PRINCIPAL_ID sebagai ID principal, biasanya berupa email, dan ROLE sebagai peran.

Untuk mengetahui daftar sumber yang dapat menyediakan PRINCIPAL_ID, lihat ID principal. Untuk mengetahui daftar nilai yang dapat diterima untuk ROLE, lihat halaman referensi peran IAM.

Menghapus peran dari principal

Gunakan perintah gcloud functions remove-iam-policy-binding:

gcloud functions remove-iam-policy-binding FUNCTION_NAME \
  --member=PRINCIPAL_ID \
  --role=ROLE

dengan FUNCTION_NAME sebagai nama fungsi, PRINCIPAL_ID adalah alamat email yang mengidentifikasi akun layanan, diawali dengan serviceAccount:, dan ROLE sebagai peran.

Untuk mengetahui daftar sumber yang dapat diterima untuk PRINCIPAL_ID, lihat ID principal. Untuk mengetahui daftar kemungkinan nilai untuk ROLE, lihat halaman referensi peran IAM.

Jika principal telah diberi beberapa peran, pastikan Anda menentukan principal yang ingin dihapus.

Penambahan massal principal

Buat kebijakan IAM bernama, misalnya, policy.json:

  {
    "bindings": [
      {
        "role": ROLE,
        "members": [
        PRINCIPAL_ID
        ]
      }
    ]
  }

Gunakan perintah gcloud functions set-iam-policy:

gcloud functions set-iam-policy FUNCTION_NAME policy.json

Untuk mengetahui daftar sumber yang dapat diterima untuk PRINCIPAL_ID, lihat ID principal. Untuk mengetahui daftar nilai yang dapat diterima untuk ROLE, lihat halaman referensi peran IAM.

Melihat principal

Untuk melihat prinsipal, gunakan perintah gcloud functions get-iam-policy:

gcloud functions get-iam-policy FUNCTION_NAME

Mengizinkan pemanggilan fungsi HTTP yang tidak diautentikasi

Untuk mengizinkan pemanggilan yang tidak diautentikasi, Anda harus menentukan hal ini pada saat atau setelah deployment.

Anda menggunakan varian khusus dari pendekatan yang dijelaskan sebelumnya untuk memberikan kemampuan pada invoker yang tidak diautentikasi untuk memanggil fungsi HTTP.

Jika Anda mengembangkan fungsi dalam project yang tunduk pada kebijakan organisasi Berbagi dengan Domain Terbatas, Anda tidak akan dapat mengizinkan pemanggilan fungsi yang tidak diautentikasi.

Saat deployment

Perintah gcloud functions deploy menyertakan perintah untuk membantu Anda mengonfigurasi izin pemanggilan selama pembuatan fungsi. Perintah ini juga dapat menyertakan flag --allow-unauthenticated:

gcloud functions deploy FUNCTION_NAME \
  --trigger-http \
  --allow-unauthenticated \
  ...

Deployment fungsi yang sama di kali berikutnya tidak akan mengubah statusnya, meskipun Anda tidak menggunakan flag ini.

Setelah deployment

Gunakan perintah gcloud run services add-iam-policy-binding untuk memberikan peran roles/run.invoker ke fungsi tertentu:

gcloud run services add-iam-policy-binding FUNCTION_NAME \
  --member="allUsers" \
  --role="roles/run.invoker"

Lihat referensi gcloud run add-iam-policy-binding untuk mengetahui informasi selengkapnya tentang kolom ini.