Mengamankan layanan backend
Selain mengautentikasi permintaan pengguna akhir ke gateway yang di-deploy, Anda juga harus mengamankan akses antara Gateway API dan layanan backend Anda. Anda dapat mencegah akses publik ke layanan terkelola backend (Cloud Run, Cloud Run Functions, 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 agar gateway Anda diizinkan untuk memanggil backend.
Halaman ini menjelaskan langkah-langkah yang diperlukan untuk mengamankan layanan backend Anda serta menjelaskan peran dan izin yang diperlukan akun layanan gateway Anda untuk mengakses layanan tersebut.
Cloud Run
Semua layanan terkelola sepenuhnya di Cloud Run di-deploy secara pribadi secara default, sehingga 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 pada layanan Cloud Run (terkelola sepenuhnya) untuk memberikan akses kepada pengguna tambahan.
Untuk Gateway API, akses ke layanan Cloud Run diaktifkan dengan memberikan peran dan izin yang sesuai kepada 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 level layanan atau ke semua layanan dalam project dengan IAM level 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 invoker di referensi IAM Cloud Run.
Cloud Run Functions
Untuk layanan backend Cloud Run Functions, Identity and Access Management (IAM) digunakan untuk mengontrol kemampuan melihat, membuat, mengupdate, dan menghapus fungsi. IAM menerapkan autentikasi pemanggil ke layanan Cloud Run Functions, seperti Gateway API, dengan memberikan peran.
Pemberian peran dan izin dengan IAM memungkinkan kontrol atas dua set tindakan:
- Operasi developer: membuat, mengupdate, 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 suatu fungsi mengizinkan pemanggilan yang tidak diautentikasi.
- Fungsi latar belakang hanya dapat dipanggil oleh sumber peristiwa tempat fungsi tersebut berlangganan.
Agar Gateway API dapat memanggil layanan backend Cloud Run Functions, berikan peran roles/cloudfunctions.invoker, atau peran apa pun yang berisi izin cloudfunctions.functions.invoke, ke akun layanan gateway.
Anda dapat mengontrol akses gateway ke fungsi individual dengan IAM level layanan atau ke semua fungsi dalam project dengan IAM level project.
Jika permintaan gateway ke layanan Cloud Run Functions 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 invoker 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 Gateway API dapat memanggil layanan backend App Engine Anda, ikuti langkah-langkah dalam
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 kepada akun layanan:
appengine.applications.updateclientauthconfig.clients.createclientauthconfig.clients.getWithSecret
API Google Cloud lainnya
Google Cloud API, seperti aiplatform.googleapis.com atau bigquery.googleapis.com, memerlukan token akses dan menolak token ID yang dikirim Gateway API ke backend lain. Apakah gateway dapat memanggil API ini bergantung pada mode streaming-nya:
Gateway streaming: Gateway dengan
effectiveStreamingModeEFFECTIVE_STREAMING_MODE_ENABLEDmelakukan autentikasi dengan token akses untuk akun layanan gateway ke setiap backend yang host-nya diakhiri dengan.googleapis.comatau.vertexai.goog. Token akses hanya memiliki cakupanhttps://www.googleapis.com/auth/cloud-platform, sehingga gateway tidak dapat memanggil metode API yang memerlukan cakupan OAuth yang berbeda.Backend lain di gateway yang sama masih menerima token ID. Backend dengan
disable_auth(OpenAPI 2.0) ataudisableAuth(OpenAPI 3.x) yang ditetapkan tidak akan menerima token. Kolomjwt_audience(OpenAPI 2.0) danjwtAudience(OpenAPI 3.x) tidak berpengaruh pada backend ini.Berikan peran IAM yang diperlukan API target kepada akun layanan gateway, seperti peran Agent Platform User (
roles/aiplatform.user) untuk Gemini Enterprise Agent Platform (aiplatform.googleapis.com). Gateway streaming yang belum mengirim token akses akan mulai melakukannya saat Gateway API meluncurkan update gateway berikutnya. Untuk segera beralih, update ke konfigurasi API baru.Gateway lainnya: Gateway dengan
effectiveStreamingModeEFFECTIVE_STREAMING_MODE_DISABLEDtidak mendukung panggilan API Google Cloud, dan panggilan dapat gagal dengan kode respons401.