Mengamankan layanan backend
Selain mengautentikasi permintaan pengguna akhir ke gateway yang di-deploy, Anda harus mengamankan akses antara API Gateway dan layanan backend. Anda dapat mencegah akses publik ke layanan terkelola backend (Cloud Run, fungsi Cloud Run, App Engine, dll.) dengan:
- Hanya mengizinkan akses terautentikasi ke layanan backend Anda.
- Memberikan izin yang diperlukan ke akun layanan yang terkait dengan konfigurasi API gateway Anda sehingga gateway Anda diberi otorisasi untuk memanggil backend.
Halaman ini menjelaskan langkah-langkah yang diperlukan untuk mengamankan layanan backend Anda dan menjelaskan peran dan izin yang diperlukan akun layanan gateway Anda untuk mengakses layanan tersebut.
Cloud Run
Semua layanan terkelola sepenuhnya Cloud Run di-deploy secara pribadi secara default, artinya layanan tersebut tidak dapat diakses tanpa memberikan kredensial autentikasi dalam permintaan.
Layanan Cloud Run diamankan oleh IAM. Secara default, layanan Cloud Run dapat dipanggil oleh peran apa pun yang berisi izin run.routes.invoke
.
Anda dapat mengonfigurasi IAM di layanan Cloud Run (terkelola sepenuhnya) untuk memberikan akses kepada pengguna tambahan.
Untuk API Gateway, akses ke layanan Cloud Run diaktifkan dengan memberikan peran dan izin yang sesuai ke akun layanan gateway: peran roles/run.invoker
atau peran yang berisi izin run.routes.invoke
.
Anda dapat mengontrol akses gateway ke layanan individual dengan IAM tingkat layanan atau ke semua layanan dalam project dengan IAM tingkat project.
Jika permintaan gateway ke layanan Cloud Run Anda ditolak, pastikan akun layanan gateway diberi peran roles/run.invoker
, dan akun layanan gateway memiliki izin run.routes.invoke
. Pelajari lebih lanjut peran dan izin pemanggil di referensi IAM Cloud Run.
Cloud Functions
Untuk layanan backend fungsi Cloud Run, Identity and Access Management (IAM) digunakan untuk mengontrol kemampuan melihat, membuat, memperbarui, dan menghapus fungsi. IAM menerapkan autentikasi pemanggil ke layanan fungsi Cloud Run, seperti API Gateway, dengan memberikan peran.
Memberikan peran dan izin dengan IAM memungkinkan kontrol atas dua kumpulan tindakan:
- Operasi developer: membuat, memperbarui, dan menghapus fungsi, serta mengelola akses ke fungsi.
- Pemanggilan fungsi: menyebabkan fungsi dieksekusi.
Pemberian kemampuan untuk memanggil fungsi berbeda untuk fungsi HTTP dan fungsi latar belakang.
- Fungsi HTTP memerlukan autentikasi secara default. Anda dapat mengonfigurasi IAM pada fungsi HTTP untuk menentukan apakah fungsi mengizinkan pemanggilan yang tidak diautentikasi.
- Fungsi latar belakang hanya dapat dipanggil oleh sumber peristiwa langganannya.
Agar API Gateway dapat memanggil layanan backend Cloud Functions Anda, berikan peran roles/cloudfunctions.invoker
) ke akun layanan gateway, atau peran apa pun yang berisi izin cloudfunctions.functions.invoke
.
Anda dapat mengontrol akses gateway ke setiap fungsi dengan IAM tingkat layanan atau ke semua fungsi dalam project dengan IAM tingkat project.
Jika permintaan gateway ke layanan fungsi Cloud Run Anda ditolak, pastikan akun layanan gateway diberi peran roles/cloudfunctions.invoker
, dan akun layanan gateway memiliki izin cloudfunctions.functions.invoke
. Pelajari lebih lanjut peran dan izin pemanggil di referensi IAM Cloud Functions.
App Engine
Untuk mengamankan aplikasi App Engine, Anda harus menggunakan Identity Aware Proxy (IAP) untuk memastikan bahwa permintaan diautentikasi.
Ikuti langkah-langkah untuk Mengaktifkan IAP untuk project tempat layanan backend App Engine Anda di-deploy. Mengaktifkan IAP akan memastikan bahwa akses ke aplikasi backend App Engine Anda aman.
Agar API Gateway dapat memanggil layanan backend App Engine, ikuti langkah-langkah di bagian Menyiapkan akses IAP untuk memberikan peran IAP-secured Web App User
ke akun layanan yang terkait dengan gateway Anda. Selain itu, berikan peran yang berisi izin berikut ke akun layanan:
appengine.applications.update
clientauthconfig.clients.create
clientauthconfig.clients.getWithSecret