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.

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.update
  • clientauthconfig.clients.create
  • clientauthconfig.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 effectiveStreamingMode EFFECTIVE_STREAMING_MODE_ENABLED melakukan autentikasi dengan token akses untuk akun layanan gateway ke setiap backend yang host-nya diakhiri dengan .googleapis.com atau .vertexai.goog. Token akses hanya memiliki cakupan https://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) atau disableAuth (OpenAPI 3.x) yang ditetapkan tidak akan menerima token. Kolom jwt_audience (OpenAPI 2.0) dan jwtAudience (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 effectiveStreamingMode EFFECTIVE_STREAMING_MODE_DISABLED tidak mendukung panggilan API Google Cloud, dan panggilan dapat gagal dengan kode respons 401.