Mengizinkan akses dengan IAM

Anda menggunakan Identity and Access Management (IAM) untuk mengizinkan identitas melakukan tindakan administratif pada fungsi Anda, seperti membuat, memperbarui, dan menghapusnya. Di IAM, Anda memberikan peran IAM yang sesuai pada fungsi atau project kepada akun utama (identitas yang ingin Anda aktifkan, biasanya email akun pengguna atau akun layanan). Peran ini mencakup izin yang menentukan tindakan yang diizinkan untuk dilakukan oleh akun utama.

Sebelum memulai

Untuk mendapatkan izin yang Anda perlukan guna mengontrol akses untuk fungsi tertentu atau semua fungsi dalam sebuah project, minta administrator untuk memberi Anda peran IAM Cloud Functions Admin (roles/function.admin) pada fungsi atau project tersebut. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses.

Peran yang telah ditetapkan ini berisi izin cloudfunctions.functions.setIamPolicy, yang diperlukan untuk mengontrol akses untuk fungsi tertentu atau semua fungsi dalam sebuah 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 Cloud Functions dan izin terkaitnya.

Mengaktifkan akses ke fungsi

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

Menambahkan kun utama adan memberikan peran

Konsol

  1. Buka Konsol Google Cloud:

    Buka Konsol Google Cloud

  2. Klik kotak centang di samping fungsi yang Anda minati.

  3. Klik Izin di bagian atas layar. Panel Izin akan terbuka.

  4. Klik Tambahkan akun utama.

  5. Di kolom Akun utama baru, masukkan satu atau beberapa identitas yang memerlukan akses ke bucket Anda. Ini biasanya berupa email akun layanan atau pengguna.

  6. Pilih satu (atau beberapa) peran dari menu drop-down Pilih peran. Peran yang Anda pilih akan muncul di panel dengan deskripsi singkat tentang izin yang diberikan.

    IAM Cloud Functions
  7. Klik Save.

gcloud

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 akun utama, biasanya berupa email, dan ROLE sebagai peran.

Untuk mengetahui daftar sumber yang dapat menyediakan PRINCIPAL_ID, lihat halaman konsep IAM. Untuk mengetahui daftar nilai yang dapat diterima untuk ROLE, lihat halaman referensi Peran IAM Cloud Functions.

Menghapus peran dari akun utama

Konsol

  1. Buka Konsol Google Cloud:

    Buka Konsol Google Cloud

  2. Klik kotak centang di samping fungsi yang Anda minati.

  3. Klik Izin di bagian atas layar. Panel Izin akan terbuka.

  4. Telusuri akun utama yang ingin Anda hapus. Lihat di setiap peran yang telah diberikan kepada akun utama.

  5. Jika Anda menemukan akun utama dalam peran yang ingin dihapus, klik ikon tempat sampah di sampingnya. Jika Anda ingin menghapus akses akun utama sepenuhnya, lakukan ini untuk setiap peran yang telah diberikan kepada akun utama.

gcloud

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 halaman konsep IAM. Untuk mengetahui daftar kemungkinan nilai untuk ROLE, lihat halaman referensi Peran IAM Cloud Functions.

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

Penambahan massal akun utama

Konsol

  1. Buka Konsol Google Cloud:

    Buka Konsol Google Cloud

  2. Klik kotak centang di samping fungsi yang ingin Anda beri atau batasi aksesnya.

  3. Klik Izin di bagian atas layar. Panel Izin akan terbuka.

Untuk menambahkan akun utama:

  1. Klik Tambahkan akun utama.

  2. Di kolom Akun utama baru, masukkan beberapa identitas yang memerlukan akses ke fungsi Anda.

  3. Pilih satu (atau beberapa) peran dari menu drop-down Pilih peran. Peran yang Anda pilih akan muncul di panel dengan deskripsi singkat tentang izin yang diberikan.

  4. Klik Save.

gcloud

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 halaman konsep IAM. Untuk mengetahui daftar nilai yang dapat diterima untuk ROLE, lihat halaman referensi Peran IAM Cloud Functions.

Melihat akun utama

Konsol

  1. Buka Konsol Google Cloud:

    Buka Konsol Google Cloud

  2. Klik nama fungsi yang diminati.

  3. Pilih tab Izin. Panel Izin akan terbuka.

  4. Pilih tab Lihat menurut akun utama untuk melihat daftar semua akun utama dengan izin pada fungsi yang dipilih.

gcloud

Gunakan perintah gcloud functions get-iam-policy:

gcloud functions get-iam-policy FUNCTION_NAME

Mengizinkan pemanggilan fungsi HTTP yang tidak diautentikasi

Mulai tanggal 15 Januari 2020, fungsi HTTP yang tidak mengaktifkan Izinkan pemanggilan yang tidak diautentikasi akan membatasi akses bagi pengguna akhir dan akun layanan yang tidak memiliki izin yang sesuai.

Untuk mengizinkan pemanggilan yang tidak terautentikasi, Anda harus menentukan hal ini pada atau setelah penerapan.

Anda menggunakan varian khusus dari pendekatan yang dijelaskan di atas untuk memberikan kemampuan kepada pemanggil yang tidak terautentikasi untuk memanggil fungsi HTTP.

Saat deployment

Konsol

Pilih Izinkan pemanggilan yang tidak diautentikasi di bagian Autentikasi pada panel Pemicu.

gcloud

Perintah gcloud functions deploy menyertakan perintah untuk membantu Anda mengonfigurasi izin pemanggilan selama pembuatan fungsi. Kode 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

Cloud Functions (generasi ke-1)

Untuk mengizinkan pemanggilan fungsi yang tidak terautentikasi, berikan peran Invoker Cloud Functions ke akun utama allUsers khusus pada fungsi:

Konsol

  1. Buka Konsol Google Cloud:

    Buka Konsol Google Cloud

  2. Klik kotak centang di samping fungsi penerima. (Jangan mengeklik fungsi.)

  3. Klik Izin di bagian atas layar. Panel Izin akan terbuka.

  4. Klik Tambahkan akun utama.

  5. Di kolom Akun utama baru, ketik allUsers.

  6. Pilih peran Cloud Functions > Cloud Functions Invoker dari menu drop-down Pilih peran.

  7. Sebagai respons terhadap dialog, klik Izinkan akses publik.

gcloud

Gunakan perintah gcloud functions add-iam-policy-binding untuk memberikan peran roles/cloudfunctions.invoker kepada akun utama allUsers khusus pada fungsi tersebut:

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

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

Cloud Functions (generasi ke-2)

Konsol

  1. Buka Konsol Google Cloud:

    Buka Konsol Google Cloud

  2. Klik nama tertaut dari fungsi yang ingin Anda berikan aksesnya.

  3. Klik link Didukung oleh Cloud Run di sudut kanan atas halaman ringkasan detail Fungsi.

  4. Buka tab Keamanan, lalu di bagian Autentikasi, pilih Izinkan pemanggilan tidak terautentikasi.

  5. Klik Save.

gcloud

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="user:USER_EMAIL"\
--role="roles/run.invoker"

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

Berbagi dengan Domain Terbatas

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. Kebijakan ini membatasi berbagi data publik untuk mengurangi risiko pemindahan data yang tidak sah.

Jika Anda ingin men-deploy fungsi yang mengizinkan pemanggilan yang tidak diautentikasi, sebaiknya hapus kebijakan organisasi Berbagi Dengan Domain Terbatas di project. Kebijakan organisasi dapat ditetapkan di tingkat organisasi, folder, atau project.

Setelah Anda membuat fungsi yang memungkinkan pemanggilan yang tidak terautentikasi, kebijakan organisasi dapat diaktifkan kembali:

  • Fungsi yang di-deploy sebelum kebijakan organisasi diaktifkan kembali akan terus mengizinkan pemanggilan yang tidak diautentikasi.
  • Versi baru dari fungsi yang sudah ada ini dapat di-deploy tanpa memerlukan pemanggilan terautentikasi.
  • Fungsi baru yang mengizinkan pemanggilan yang tidak diautentikasi tidak dapat di-deploy.