Mengizinkan akses dengan IAM
Anda menggunakan Identity and Access Management (IAM) untuk mengizinkan 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 meliputi membuat, memperbarui, dan menghapus fungsi. Untuk mengetahui informasi tentang akses IAM untuk fungsi yang dibuat dengan Cloud Run, lihat Kontrol akses dengan IAM.
Di IAM, Anda memberikan peran IAM yang sesuai pada fungsi atau project kepada akun utama (identitas yang ingin diaktifkan, biasanya email akun pengguna atau layanan). Peran ini mencakup izin yang menentukan tindakan yang diizinkan untuk dilakukan akun utama.
Sebelum memulai
Untuk mendapatkan izin yang Anda perlukan untuk mengontrol akses untuk fungsi tertentu atau semua fungsi dalam sebuah project, minta administrator untuk memberi Anda peran IAM Cloud Run functions Admin (roles/roles/cloudfunctions.admin
) pada fungsi atau project tersebut.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Peran yang telah ditetapkan ini berisi izin cloudfunctions.functions.setIamPolicy
, yang diperlukan untuk mengontrol akses untuk fungsi tertentu atau semua fungsi dalam suatu project.
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Lihat Peran IAM fungsi Cloud Run untuk mengetahui daftar lengkap peran fungsi Cloud Run dan izin yang terkait.
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
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
adalah ID akun utama, biasanya email, dan
ROLE
adalah perannya.
Untuk daftar sumber yang dapat menyediakan PRINCIPAL_ID
, lihat
ID utama.
Untuk mengetahui daftar nilai yang dapat diterima untuk ROLE
, lihat halaman referensi Peran IAM fungsi Cloud Run.
Menghapus peran dari akun utama
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 utama.
Untuk mengetahui daftar kemungkinan nilai untuk ROLE
, lihat halaman referensi Peran IAM fungsi Cloud Run.
Jika akun utama telah diberi beberapa peran, pastikan Anda menentukan peran yang ingin dihapus.
Penambahan massal akun utama
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 utama.
Untuk mengetahui daftar nilai yang dapat diterima untuk ROLE
, lihat halaman referensi Peran IAM fungsi Cloud Run.
Melihat akun utama
Untuk melihat akun utama, 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 akan menggunakan varian khusus dari pendekatan yang dijelaskan sebelumnya untuk memberi penyerang yang tidak diautentikasi guna memanggil fungsi HTTP.
Saat deployment
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 berikutnya dari fungsi yang sama 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.
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 Terbatas Domain pada project tersebut. 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.