Gunakan halaman ini untuk mempelajari cara mendelegasikan otorisasi untuk Agent Gateway ke Identity-Aware Proxy, Model Armor, dan mesin otorisasi kustom lainnya menggunakan Service Extensions.
Kebijakan otorisasi memungkinkan Anda menerapkan kontrol akses dan kebijakan tata kelola terpusat pada traffic yang melewati endpoint yang dipublikasikan oleh Agent Gateway. Kebijakan ini memungkinkan Anda mengelola traffic dengan mengontrol akses berdasarkan identitas mTLS, atribut permintaan dan respons, serta menyesuaikan berdasarkan atribut khusus protokol yang digunakan (misalnya, server MCP).
Kebijakan otorisasi menggunakan profil kebijakan untuk menentukan jenis otorisasi yang akan dilakukan. Anda dapat menggunakan kebijakan otorisasi berbasis permintaan (REQUEST_AUTHZ) yang mengandalkan informasi di header permintaan HTTP untuk mengizinkan atau menolak traffic. Atau, Anda dapat menggunakan kebijakan otorisasi berbasis konten (CONTENT_AUTHZ) saat perlu melakukan pemeriksaan payload aplikasi yang lebih mendalam untuk mengizinkan atau menolak traffic.
Untuk mempelajari kebijakan otorisasi, profil kebijakan, dan kasus penggunaannya lebih lanjut, lihat Ringkasan kebijakan otorisasi.
Ekstensi otorisasi
Terkadang, keputusan otorisasi yang kompleks tidak dapat dengan mudah dinyatakan menggunakan kebijakan otorisasi. Agent Gateway memungkinkan Anda mengonfigurasi kebijakan otorisasi dengan ekstensi otorisasi untuk mendelegasikan keputusan otorisasi ke mesin otorisasi kustom.
Ekstensi otorisasi memungkinkan Anda mencegat dan mengevaluasi permintaan yang melewati deployment Agent Gateway. Ekstensi ini melakukan panggilan gRPC real-time ke layanan eksternal yang Anda kelola, sehingga Anda dapat memeriksa, mengubah, atau bahkan memblokir traffic sebelum melanjutkan ke tujuannya.
Ekstensi memeriksa data berdasarkan kebijakan otorisasi yang dikonfigurasi. Anda dapat mengonfigurasi ekstensi otorisasi secara terpisah untuk kebijakan otorisasi berbasis permintaan dan berbasis konten, atau Anda dapat menggunakan keduanya untuk keamanan yang komprehensif.
Sebelum memulai
Sebelum memulai, pastikan Anda memenuhi persyaratan berikut:
Agent Gateway di-deploy. Lihat Mengonfigurasi Agent Gateway.
Anda harus memiliki izin IAM
agentGateway.usepada resource Agent Gateway yang di-deploy agar dapat melampirkan kebijakan otorisasi ke gateway.
Mengonfigurasi kebijakan otorisasi dengan ekstensi
Bagian ini menunjukkan cara mengonfigurasi kebijakan otorisasi yang mendelegasikan keputusan otorisasi dan keamanan konten ke Identity-Aware Proxy, Model Armor, dan layanan kustom lainnya.
Mendelegasikan otorisasi ke IAP
Anda dapat mengonfigurasi ekstensi otorisasi permintaan untuk mendelegasikan keputusan akses untuk kebijakan otorisasi ke IAP.
Langkah-langkah berikut menunjukkan cara mengonfigurasi ekstensi otorisasi dengan kebijakan otorisasi untuk instance Agent Gateway.
Buat kebijakan egress IAM yang diperlukan untuk agen dan alat Anda. Untuk mengetahui informasi selengkapnya, lihat Membuat kebijakan agen IAM.
-
IAP mengharuskan agen Anda terdaftar dengan resource Agent Registry yang terikat ke gateway.
Konfigurasi ekstensi otorisasi untuk mengarah ke IAP.
Tentukan ekstensi dalam file YAML. Gunakan nilai contoh yang disediakan.
cat >iap-request-authz-extension.yaml <<EOF name: my-iap-request-authz-ext service: iap.googleapis.com failOpen: true timeout: 1s EOFJika ingin men-deploy ekstensi dalam mode hanya audit uji coba, untuk menguji kebijakan otorisasi tanpa menerapkannya, Anda dapat menentukan kolom
DRY_RUN. Hal ini memungkinkan Anda memverifikasi kebijakan dan meminimalkan risiko gangguan traffic karena error konfigurasi:cat >iap-request-authz-extension.yaml <<EOF name: my-iap-request-authz-ext service: iap.googleapis.com failOpen: true timeout: 1s metadata: iamEnforcementMode: "DRY_RUN" EOFHapus kolom metadata
DRY_RUNsaat Anda siap mulai menerapkan kebijakan.Impor ekstensi otorisasi. Gunakan perintah
gcloud beta service-extensions authz-extensions importdengan nilai contoh berikut.gcloud beta service-extensions authz-extensions import my-iap-request-authz-ext
--source=iap-request-authz-extension.yaml
--location=LOCATION
Di project yang sama, konfigurasi kebijakan otorisasi yang mendelegasikan keputusan ke ekstensi.
Tentukan kebijakan otorisasi yang mengaitkan ekstensi
my-iap-request-authz-extdengan gateway Anda. Gunakan nilai contoh yang disediakan.cat >iap-request-authz-policy.yaml <<EOF name: my-iap-request-authz-policy target: resources: - "projects/PROJECT_ID/locations/LOCATION/agentGateways/AGENT_GATEWAY_NAME" policyProfile: REQUEST_AUTHZ action: CUSTOM customProvider: authzExtension: resources: - "projects/PROJECT_ID/locations/LOCATION/authzExtensions/my-iap-request-authz-ext" EOFImpor kebijakan otorisasi ke project. Gunakan perintah
gcloud beta network-security authz-policies importdengan nilai contoh berikut.gcloud beta network-security authz-policies import my-iap-request-authz-policy
--source=iap-request-authz-policy.yaml
--location=LOCATION
Mendelegasikan otorisasi ke Model Armor
Anda dapat mengonfigurasi ekstensi otorisasi untuk mendelegasikan keputusan keamanan konten untuk kebijakan otorisasi ke Model Armor.
Contoh berikut menunjukkan cara mengonfigurasi ekstensi otorisasi tersebut dengan kebijakan otorisasi untuk Agent Gateway.
Konsol
Untuk menggunakan Google Cloud konsol guna mengaktifkan Model Armor untuk Agent Gateway, lakukan langkah-langkah berikut:
Buat template Model Armor yang diperlukan.
Lihat Mengonfigurasi Agent Gateway untuk mengaktifkan Model Armor saat membuat Agent Gateway (menggunakan kotak centang Enable Model Armor ). Template Model Armor didukung dalam mode Client-to-Agent dan Agent-to-Anywhere.
Jika template Model Armor berada di project yang berbeda dengan gateway, Anda harus memberikan peran yang diperlukan ke akun layanan Agent Gateway secara manual. Akun layanan memiliki format:
service-PROJECT_NUMBER@gcp-sa-dep.iam.gserviceaccount.com, dengan PROJECT_NUMBER adalah nomor project tempat Anda membuat gateway.Berikan peran berikut:
- Peran
roles/modelarmor.calloutUserdanroles/serviceusage.serviceUsageConsumerdi project yang berisi gateway. - Peran
roles/modelarmor.userdi project yang berisi template Model Armor.
Anda harus menggunakan gcloud CLI untuk menyelesaikan langkah ini.
gcloud projects add-iam-policy-binding GATEWAY_PROJECT_ID \ --member=serviceAccount:service-GATEWAY_PROJECT_NUMBER@gcp-sa-dep.iam.gserviceaccount.com \ --role=roles/modelarmor.calloutUser gcloud projects add-iam-policy-binding GATEWAY_PROJECT_ID \ --member=serviceAccount:service-GATEWAY_PROJECT_NUMBER@gcp-sa-dep.iam.gserviceaccount.com \ --role=roles/serviceusage.serviceUsageConsumer gcloud projects add-iam-policy-binding MODEL_ARMOR_PROJECT_ID \ --member=serviceAccount:service-GATEWAY_PROJECT_NUMBER@gcp-sa-dep.iam.gserviceaccount.com \ --role=roles/modelarmor.user
Ganti kode berikut:
GATEWAY_PROJECT_ID: Project ID project tempat Anda membuat gateway.GATEWAY_PROJECT_NUMBER: Nomor project project tempat Anda membuat gateway.MODEL_ARMOR_PROJECT_ID: Project ID project yang berisi template Model Armor.
Jika Anda menggunakan gateway untuk Agent Runtime, Agen Layanan Mesin Penalaran juga memerlukan izin ini seperti yang didokumentasikan di Merutekan traffic Agent Runtime melalui Agent Gateway.
- Peran
gcloud
Buat template Model Armor yang diperlukan.
Jika template Model Armor berada di project yang berbeda dengan gateway, Anda harus memberikan peran yang diperlukan ke akun layanan Agent Gateway secara manual. Akun layanan memiliki format:
service-PROJECT_NUMBER@gcp-sa-dep.iam.gserviceaccount.com, dengan PROJECT_NUMBER adalah nomor project project tempat Anda membuat gateway.Berikan peran berikut:
- Peran
roles/modelarmor.calloutUserdanroles/serviceusage.serviceUsageConsumerdi project yang berisi gateway. - Peran
roles/modelarmor.userdi project yang berisi template Model Armor.
gcloud projects add-iam-policy-binding GATEWAY_PROJECT_ID \ --member=serviceAccount:service-GATEWAY_PROJECT_NUMBER@gcp-sa-dep.iam.gserviceaccount.com \ --role=roles/modelarmor.calloutUser gcloud projects add-iam-policy-binding GATEWAY_PROJECT_ID \ --member=serviceAccount:service-GATEWAY_PROJECT_NUMBER@gcp-sa-dep.iam.gserviceaccount.com \ --role=roles/serviceusage.serviceUsageConsumer gcloud projects add-iam-policy-binding MODEL_ARMOR_PROJECT_ID \ --member=serviceAccount:service-GATEWAY_PROJECT_NUMBER@gcp-sa-dep.iam.gserviceaccount.com \ --role=roles/modelarmor.user
Ganti kode berikut:
GATEWAY_PROJECT_ID: Project ID project tempat Anda membuat gateway.GATEWAY_PROJECT_NUMBER: Nomor project project tempat Anda membuat gateway.MODEL_ARMOR_PROJECT_ID: Project ID project yang berisi template Model Armor.
- Peran
Konfigurasi ekstensi otorisasi untuk mengarah ke Model Armor.
Tentukan ekstensi dalam file YAML. Gunakan nilai contoh yang disediakan.
cat >ma-content-authz-extension.yaml <<EOF name: my-ma-content-authz-ext service: modelarmor.LOCATION.rep.googleapis.com metadata: model_armor_settings: '[ { "response_template_id": "projects/MODEL_ARMOR_PROJECT_ID/locations/LOCATION/templates/TEMPLATE_ID", "request_template_id": "projects/MODEL_ARMOR_PROJECT_ID/locations/LOCATION/templates/TEMPLATE_ID" } ]' failOpen: true timeout: 1s EOFImpor ekstensi otorisasi. Gunakan
gcloud beta service-extensions authz-extensions importperintah dengan nilai contoh berikut.gcloud beta service-extensions authz-extensions import my-ma-content-authz-ext \ --source=ma-content-authz-extension.yaml \ --location=LOCATION
Konfigurasi kebijakan otorisasi dengan ekstensi.
Tentukan kebijakan otorisasi yang mengaitkan ekstensi
my-ma-content-authz-extdengan Agent Gateway.Agent-to-Anywhere
cat >ma-content-authz-policy.yaml <<EOF name: my-ma-content-authz-policy target: resources: - "projects/PROJECT_ID/locations/LOCATION/gateways/AGENT_GATEWAY_NAME" policyProfile: CONTENT_AUTHZ action: CUSTOM customProvider: authzExtension: resources: - "projects/PROJECT_ID/locations/LOCATION/authzExtensions/my-ma-content-authz-ext" httpRules: - to: operations: [ { "paths": [ { "prefix": "/" } ] } ] when: > request.headers['content-type'] == 'application/json' || request.headers['content-type'].startsWith('text/') EOFPerhatikan hal berikut:
Nilai
policyProfileditetapkan keCONTENT_AUTHZ. Hal ini menunjukkan bahwa penyedia kebijakan kustom memproses traffic permintaan dan respons, termasuk isi permintaan.Parameter
httpRulesmenunjukkan cara menggunakan CEL atribut untuk membuat kondisi yang cocok dengan traffic tertentu yang ingin Anda teruskan ke Model Armor untuk evaluasi. Dalam contoh ini, aturan cocok dengan semua traffic dengan jenis kontenapplication/jsonatautext/. Sebaiknya gunakan aturan tersebut untuk membatasi evaluasi Model Armor ke traffic yang relevan. Hal ini memungkinkan Anda merutekan traffic LLM API, MCP, dan A2A yang didukung ke Model Armor sekaligus mengecualikan traffic internal seperti panggilan gRPC agen.
Client-to-Agent
cat >ma-content-authz-policy.yaml <<EOF name: my-ma-content-authz-policy target: resources: - "projects/PROJECT_ID/locations/LOCATION/gateways/AGENT_GATEWAY_NAME" policyProfile: CONTENT_AUTHZ action: CUSTOM customProvider: authzExtension: resources: - "projects/PROJECT_ID/locations/LOCATION/authzExtensions/my-ma-content-authz-ext" EOFNilai
policyProfileditetapkan keCONTENT_AUTHZ. Hal ini menunjukkan bahwa penyedia kebijakan kustom memproses traffic permintaan dan respons, termasuk isi permintaan.Impor kebijakan otorisasi ke project. Gunakan perintah
gcloud beta network-security authz-policies importdengan nilai contoh berikut.gcloud beta network-security authz-policies import my-ma-content-authz-policy \ --source=ma-content-authz-policy.yaml \ --location=LOCATION
Mendelegasikan otorisasi ke ekstensi otorisasi kustom
Anda dapat mengonfigurasi ekstensi otorisasi kustom untuk mendelegasikan keputusan ke layanan kustom. Ekstensi kustom ini hanya dapat menargetkan nama domain yang sepenuhnya memenuhi syarat (FQDN).
Saat Anda menggunakan target FQDN, ekstensi akan menggunakan protokol HTTP2 dengan enkripsi TLS untuk berkomunikasi dengan endpoint di port 443. Namun, ekstensi tidak memvalidasi sertifikat server. Oleh karena itu, untuk keamanan yang lebih baik, Anda harus memastikan bahwa endpoint yang di-resolve berada dalam jaringan VPC. Pastikan juga Anda telah menyiapkan peering DNS antara project Agent Gateway dan jaringan VPC.
Untuk mengonfigurasi ekstensi otorisasi dengan kebijakan otorisasi untuk FQDN tertentu, seperti
mycustomauthz.internal.net, tentukan sebagai nilai untukservicedalam file YAML ekstensi seperti yang ditunjukkan contoh berikut. Contoh ini mengasumsikan bahwa Anda telah men-deploy server di jaringan VPC yang menerapkan protokolext_authz.cat >custom-authz-extension.yaml <<EOF name: my-custom-authz-ext service: mycustomauthz.internal.net failOpen: true timeout: 1s wireFormat: EXT_AUTHZ_GRPC EOFBuat ekstensi otorisasi untuk mengarah ke layanan kustom.
gcloud beta service-extensions authz-extensions import custom-authz-extension
--source=custom-authz-extension.yaml
--location=LOCATIONSetelah membuat ekstensi, konfigurasi kebijakan otorisasi
CUSTOMyang mendelegasikan keputusan ke ekstensi otorisasi.$ cat >authz-policy.yaml <<EOF name: authz-with-extension target: resources: - "projects/PROJECT_ID/locations/LOCATION/agentGateways/AGENT_GATEWAY_NAME" policyProfile: REQUEST_AUTHZ action: CUSTOM customProvider: authzExtension: resources: - projects/PROJECT_ID/locations/LOCATION/authzExtensions/custom-authz-extension EOFBuat kebijakan otorisasi.
gcloud beta network-security authz-policies import authz-policy-with-extension \ --source=authz-policy.yaml \ --location=LOCATION
Perhatikan bahwa saat ekstensi otorisasi dikaitkan dengan kebijakan otorisasi menggunakan profil REQUEST_AUTHZ seperti yang ditunjukkan dalam contoh ini, gateway hanya memanggil ekstensi saat header permintaan tiba. Isi permintaan, header respons, dan isi respons tidak terlihat oleh ekstensi otorisasi.
Menggabungkan otorisasi IAP dengan panduan Model Armor
Untuk keamanan yang komprehensif, sebaiknya siapkan kebijakan otorisasi CUSTOM dengan profil kebijakan REQUEST_AUTHZ dan kebijakan otorisasi CUSTOM lainnya dengan profil kebijakan CONTENT_AUTHZ.
Contoh berikut menggunakan IAP sebagai sistem otorisasi permintaan terpusat dan Model Armor untuk panduan AI. Seperti yang ditunjukkan dalam contoh sebelumnya, Anda dapat menukar setiap ekstensi ini dengan ekstensi layanan untuk menggunakan solusi kustom Anda sendiri.
Konfigurasi ekstensi otorisasi
REQUEST_AUTHZyang mendelegasikan ke IAP dan kebijakan otorisasi yang mengarah ke ekstensi.Tentukan ekstensi otorisasi.
$ cat >iap-extension.yaml <<EOF name: iap-extension service: iap.googleapis.com failOpen: true timeout: 1s EOFBuat ekstensi otorisasi.
gcloud beta service-extensions authz-extensions import iap-extension \ --source=iap-extension.yaml \ --location=LOCATION
Ganti
LOCATIONdengan region ekstensi.Konfigurasi kebijakan otorisasi
REQUEST_AUTHZyang mendelegasikan ke ekstensi.$ cat >authz-policy-request-authz.yaml <<EOF name: authz-iap target: resources: - "projects/PROJECT_ID/locations/LOCATION/agentGateways/AGENT_GATEWAY_NAME" policyProfile: REQUEST_AUTHZ action: CUSTOM customProvider: authzExtension: resources: - "projects/PROJECT_ID/locations/LOCATION/authzExtensions/iap-extension" EOFGanti kode berikut:
PROJECT_ID: Project ID Anda.LOCATION: Lokasi resource.AGENT_GATEWAY_NAME: Nama Agent Gateway.
Buat kebijakan otorisasi.
gcloud beta network-security authz-policies import authz-iap \ --source=authz-policy-request-authz.yaml \ --location=LOCATION
Konfigurasi ekstensi otorisasi
CONTENT_AUTHZyang mendelegasikan ke Model Armor dan kebijakan otorisasi yang mengarah ke ekstensi.Tentukan ekstensi.
$ cat >ma-extension-file.yaml <<EOF name: ma-extension service: modelarmor.LOCATION.rep.googleapis.com metadata: model_armor_settings: '[ { "response_template_id": "projects/MODEL_ARMOR_PROJECT_ID/locations/LOCATION/templates/RESPONSE_TEMPLATE_ID", "request_template_id": "projects/MODEL_ARMOR_PROJECT_ID/locations/LOCATION/templates/REQUEST_TEMPLATE_ID" } ]' failOpen: true timeout: 1s EOFGanti kode berikut:
LOCATION: Region tempat template Model Armor Anda berada.MODEL_ARMOR_PROJECT_ID: Project ID yang berisi template Model Armor.RESPONSE_TEMPLATE_ID: ID template respons.REQUEST_TEMPLATE_ID: ID template permintaan.
Buat ekstensi otorisasi.
gcloud beta service-extensions authz-extensions import ma-extension \ --source=ma-extension-file.yaml \ --location=LOCATION
Konfigurasi kebijakan otorisasi
CONTENT_AUTHZyang mendelegasikan ke ekstensi.$ cat >authz-policy-content-authz.yaml <<EOF name: authz-ma target: resources: - "projects/PROJECT_ID/locations/LOCATION/agentGateways/AGENT_GATEWAY_NAME" policyProfile: CONTENT_AUTHZ action: CUSTOM customProvider: authzExtension: resources: - "projects/PROJECT_ID/locations/LOCATION/authzExtensions/ma-extension" EOFBuat kebijakan otorisasi.
gcloud beta network-security authz-policies import ma-authz-policy \ --source=authz-policy-content-authz.yaml \ --location=LOCATION
Saat ekstensi otorisasi dikaitkan dengan profil CONTENT_AUTHZ, ekstensi tersebut akan menerima semua peristiwa ext_proc, termasuk header permintaan dan respons, isi, dan trailer. Jika ekstensi otorisasi berbasis ext_proc Anda dapat menangani otorisasi waktu permintaan dan otorisasi berbasis konten, sebaiknya konfigurasi satu kebijakan otorisasi CUSTOM dengan profil kebijakan CONTENT_AUTHZ. Kebijakan ini harus mengarah ke ekstensi otorisasi serbaguna Anda. Pendekatan ini memungkinkan kedua jenis otorisasi melalui satu ekstensi dan koneksi ext_proc, yang dapat meningkatkan latensi dibandingkan menggunakan ekstensi terpisah untuk profil REQUEST_AUTHZ dan CONTENT_AUTHZ.
Otorisasi berdasarkan atribut protokol MCP
Agent Gateway mengurai payload protokol MCP dalam permintaan dan membuat atribut yang diekstrak tersedia untuk kebijakan otorisasi.
Anda dapat membatasi akses berdasarkan parameter metode MCP seperti nama alat tertentu. Bagian ini menunjukkan dua contoh, satu untuk kebijakan ALLOW dan satu untuk DENY.
Konfigurasi kebijakan otorisasi.
Contoh kebijakan
ALLOWContoh ini mengizinkan akses ke kumpulan alat tertentu di server MCP dan fitur protokol dasar, tetapi tidak mengizinkan akses ke perintah dan resource.
Saat menulis kebijakan
ALLOW, pastikan Anda menentukanbaseProtocolMethodsOption: MATCH_BASE_PROTOCOL_METHODSsehingga RPC MCP non-akses tertentu seperti inisialisasi, logging, penyelesaian, notifikasi, dan ping terus berfungsi. Jika tidak melakukannya, Anda tidak akan dapat membuat sesi MCP.$ cat >authz-policy-restrict-tools.yaml <<EOF name: my-authz-policy-restrict-tools target: resources: - "projects/PROJECT_ID/locations/LOCATION/agentGateways/AGENT_GATEWAY_NAME" policyProfile: REQUEST_AUTHZ httpRules: - to: operations: - mcp: baseProtocolMethodsOption: MATCH_BASE_PROTOCOL_METHODS methods: - name: "tools/list" - name: "tools/call" params: - exact: "get_weather" - exact: "get_location" action: ALLOW EOFContoh kebijakan
DENYContoh ini tidak mengizinkan semua akses perintah/ metode ke server MCP di belakang Agent Gateway.
$ cat >authz-policy-disallow-prompts.yaml <<EOF name: my-authz-policy-disallow-prompts target: resources: - "projects/PROJECT_ID/locations/LOCATION/agentGateways/AGENT_GATEWAY_NAME" policyProfile: REQUEST_AUTHZ httpRules: - to: operations: - mcp: methods: - name: "prompts" action: DENY EOFBuat kebijakan otorisasi.
gcloud beta network-security authz-policies import AUTHZ_POLICY_NAME \ --source=AUTH_POLICY_YAML_FILE_PATH \ --location=LOCATION
Ganti kode berikut:
AUTHZ_POLICY_NAME: Nama kebijakan otorisasi.AUTH_POLICY_YAML_FILE_PATH: Jalur ke file YAML kebijakan otorisasi.LOCATION: Lokasi resource.
Batasan
Batasan berikut berlaku saat Anda menggunakan kebijakan otorisasi:
- Anda dapat mengonfigurasi maksimal empat kebijakan otorisasi kustom per Agent Gateway, terlepas dari profil kebijakan.
- Jika Anda menggunakan ekstensi otorisasi kustom dengan profil
CONTENT_AUTHZ, ekstensi tersebut harus mendukung protokolext_procdan modeFULL_DUPLEX_STREAMEDuntuk peristiwa isi. - Jika Anda mengonfigurasi beberapa kebijakan otorisasi kustom yang menggunakan profil yang sama, urutan eksekusinya tidak dijamin.
Selain itu, lihat bagian berikut untuk mengetahui informasi selengkapnya tentang batasan ekstensi otorisasi:
Untuk batasan yang berlaku untuk semua ekstensi, lihat Batasan ekstensi.
Untuk batasan yang berlaku untuk callout, lihat Batasan callout.