1. परिचय
Gemini Enterprise एजेंट प्लैटफ़ॉर्म एक ओपन प्लैटफ़ॉर्म है. इसका इस्तेमाल, एंटरप्राइज़-ग्रेड एआई एजेंट बनाने, उन्हें स्केल करने, मैनेज करने, और ऑप्टिमाइज़ करने के लिए किया जा सकता है. ये एजेंट, आपके डेटा पर आधारित होते हैं.
एजेंट रनटाइम, एजेंटों को चलाने के लिए मैनेज किया गया एक्ज़ीक्यूशन एनवायरमेंट उपलब्ध कराता है. जैसे, ओपन-सोर्स एजेंट डेवलपमेंट किट (एडीके) की मदद से बनाए गए एजेंटों को Google Cloud में सुरक्षित तरीके से चलाने के लिए.
इस कोडलैब में बताया गया है कि इन मुख्य बिल्डिंग ब्लॉक का इस्तेमाल करके, Gemini Enterprise में उपयोगकर्ता की ओर से शुरू किए गए एजेंट को कैसे कंट्रोल किया जा सकता है. इससे एजेंट, सुरक्षित तरीके से इंटरनल टूल तक पहुंच पाता है.
एजेंट गेटवे के बारे में जानकारी
Agent Gateway, प्लैटफ़ॉर्म के Agent Governance सुइट का नेटवर्किंग कॉम्पोनेंट है. यह सभी एजेंट इंटरैक्शन के लिए, नेटवर्क के एंट्री और एक्ज़िट पॉइंट के तौर पर काम करता है. इससे सुरक्षा एडमिन, केंद्रीकृत गवर्नेंस को लागू कर सकते हैं. इसके लिए, डेवलपर को जटिल नेटवर्किंग प्रिमिटिव मैनेज करने की ज़रूरत नहीं होती.
यह दो मुख्य तरीकों से ऐक्सेस करने की सुविधा देता है:
- क्लाइंट से एजेंट (इनग्रेस): यह बाहरी क्लाइंट (जैसे कि Cursor या Gemini CLI) और आपके एजेंट के बीच होने वाले कम्यूनिकेशन को सुरक्षित करता है.
- एजेंट-टू-एनीवेयर (इग्रेस डेटा ट्रैफ़िक): यह Google Cloud पर चल रहे एजेंट और कहीं भी चल रहे सर्वर, टूल या एपीआई के बीच होने वाली बातचीत को सुरक्षित करता है.
इस कोडलैब में, आपको एजेंट-टू-एनीवेयर (ईग्रैस) मोड पर फ़ोकस करना होगा.

सुरक्षा से जुड़ी नीतियों को लागू करने के लिए, एजेंट गेटवे को बाकी इकोसिस्टम के साथ इंटिग्रेट किया जाता है:
- एजेंट रजिस्ट्री: यह मंज़ूरी पा चुके एजेंट और टूल की एक सेंट्रल लाइब्रेरी है. इसमें तीसरे पक्ष के एमसीपी सर्वर भी शामिल हैं.
- एजेंट की पहचान: हर एजेंट के लिए एक यूनीक, ट्रैक किया जा सकने वाला पर्सोना. यह एंड-टू-एंड एमटीएलएस के साथ अपने-आप सुरक्षित हो जाता है.
- पहचान के बारे में जानकारी रखने वाली प्रॉक्सी (IAP) और IAM: यह डिफ़ॉल्ट एनफ़ोर्समेंट लेयर है. यह एजेंट की पहचान की पुष्टि करती है. इसके बाद, यह IAM की बारीक अनुमतियों के आधार पर, एजेंट को चुनिंदा टूल इस्तेमाल करने की अनुमति देती है.
- Model Armor: यह एआई सुरक्षा गार्डरेल है. इसे सर्विस एक्सटेंशन के ज़रिए इंटिग्रेट किया जाता है. इसका इस्तेमाल, कॉन्टेंट को सुरक्षित करने और प्रॉम्प्ट इंजेक्शन के हमलों या डेटा लीक होने से बचाने के लिए किया जाता है.
डिप्लॉयमेंट मोड (Cloud Run के लिए पब्लिक बनाम प्राइवेट नेटवर्किंग)
इस कोडलैब को ऐक्सेस करने के लिए, Cloud Run पर डिप्लॉय किए गए अपने इंटरनल टूल (एमसीपी सर्वर) के लिए, दो नेटवर्किंग पाथ में से किसी एक को चुना जा सकता है:
- डिफ़ॉल्ट (पब्लिक इनग्रेस): एमसीपी सर्वर, Cloud Run पर पब्लिक होस्टनेम (
ingress=all) के साथ डिप्लॉय किए जाते हैं. ट्रैफ़िक, एजेंट से टूल तक स्टैंडर्ड*.run.appयूआरएल के ज़रिए जाता है. इसके लिए, कस्टम डीएनएस डोमेन की ज़रूरत नहीं होती. साथ ही, गवर्नेंस के कॉन्सेप्ट को समझने का यह सबसे तेज़ तरीका है. - सुरक्षित (प्राइवेट नेटवर्किंग): यह एक पूरी तरह से निजी आर्किटेक्चर है. यह ज़रूरी नहीं है. एमसीपी सर्वर प्रतिबंधित (
ingress=internal-and-cloud-load-balancing) होते हैं और इन्हें सर्वरलेस एनईजी के साथ इंटरनल ऐप्लिकेशन लोड बैलेंसर के ज़रिए ऐक्सेस किया जाता है. इसके लिए, आपके पास सार्वजनिक डीएनएस डोमेन होना चाहिए, ताकि Google-मैनेज किए गए सर्टिफ़िकेट को उपलब्ध कराया जा सके.
Terraform को कॉन्फ़िगर करते समय, अपनी पसंद का पाथ चुनें.
Cloud Run के लिए नेटवर्क एंडपॉइंट इनग्रेस के बारे में ज़्यादा जानने के लिए, कृपया हमारे दस्तावेज़ पढ़ें.
आपको क्या करना होगा
- Terraform का इस्तेमाल करके, कोर इंफ़्रास्ट्रक्चर स्टैक को प्रोविज़न करना
- Cloud Run पर एमसीपी सर्वर के तौर पर इंटरनल टूल बनाना और उन्हें डिप्लॉय करना
- पीएससी इंटरफ़ेस इग्रेस का इस्तेमाल करके, ADK एजेंट को एजेंट रनटाइम में डिप्लॉय करना
- पहचान के आधार पर ऐक्सेस (आईएएम) और कॉन्टेंट की जांच (Model Armor) के लिए, Agent Gateway सेवा के एक्सटेंशन कॉन्फ़िगर करना
- एजेंट के सुरक्षित एंड-टू-एंड एक्ज़ीक्यूशन को ट्रेस और पुष्टि करना
आपको किन चीज़ों की ज़रूरत होगी
- कोई वेब ब्राउज़र, जैसे कि Chrome
- बिलिंग की सुविधा वाला Google Cloud प्रोजेक्ट और मालिक के तौर पर ऐक्सेस
- संगठन-लेवल पर IAM अनुमतियां (कोड लैब, संगठन के स्कोप वाली भूमिकाएं असाइन करता है)
- आपके कंट्रोल वाला कोई ऐसा डोमेन जिसे Cloud DNS को सौंपा गया हो (सार्वजनिक तौर पर मैनेज किए गए सर्टिफ़िकेट के लिए)
- Terraform,
gcloud, और Google Cloud Networking की बुनियादी जानकारी
कोडलैब टोपोलॉजी

इस कोडलैब में, आपको मॉर्गेज अंडरराइटिंग एजेंट को डिप्लॉय करना होगा. यह एजेंट, तीन इंटरनल टूल के साथ सुरक्षित तरीके से कम्यूनिकेट करता है.
आपको बुनियादी नेटवर्किंग की सुविधा चालू करनी होगी. इसमें वीपीसी और एजेंट गेटवे के तौर पर कॉन्फ़िगर किया गया इंटरनल ऐप्लिकेशन लोड बैलेंसर शामिल है. इसके बाद, आपको Cloud Run पर तीन मॉडल कॉन्टेक्स्ट प्रोटोकॉल (एमसीपी) सर्वर डिप्लॉय करने होंगे. ये आपके इंटरनल मालिकाना हक वाले टूल के तौर पर काम करते हैं:
- दस्तावेज़ मैनेजमेंट (
legacy-dms) - कॉर्पोरेट ईमेल (
corporate-email) - आय की पुष्टि (
income-verification)
टूल सेट अप करने के बाद, ADK की मदद से बनाए गए मॉर्टगेज असिस्टेंट (mortgage-agent) को एजेंट रनटाइम में डिप्लॉय करें. इस एजेंट को कॉन्फ़िगर करें, ताकि यह प्राइवेट इग्रेस के लिए पीएससी इंटरफ़ेस का इस्तेमाल कर सके. साथ ही, एजेंट रजिस्ट्री के ज़रिए रनटाइम टूल डिस्कवरी को चालू कर सके.
फ़्लो को सुरक्षित बनाने के लिए, आपको अपने एजेंट गेटवे को दो सेवा एक्सटेंशन के साथ कॉन्फ़िगर करना होगा. पहला, REQUEST_AUTHZ एक्सटेंशन, हर टूल के लिए IAM नीतियों के हिसाब से एजेंट की पहचान की पुष्टि करेगा. इससे यह पक्का किया जा सकेगा कि एजेंट सिर्फ़ उन टूल को ऐक्सेस कर सकता है जिनके लिए उसे अनुमति मिली है. दूसरा, Model Armor का इस्तेमाल करने वाला CONTENT_AUTHZ एक्सटेंशन, एजेंट के प्रॉम्प्ट और जवाबों की जांच करेगा.
आखिर में, आपको Gemini Enterprise में एजेंट को रजिस्टर करना होगा. इसके बाद, आपको सामान्य उपयोगकर्ता के तौर पर मॉर्गेज अंडरराइटिंग का टास्क ट्रिगर करना होगा. साथ ही, Cloud Trace का इस्तेमाल करके यह पुष्टि करनी होगी कि टास्क को सुरक्षित तरीके से और नियमों के मुताबिक पूरा किया गया है.
यह कोडलैब, सभी लेवल के प्लैटफ़ॉर्म और सुरक्षा इंजीनियर के लिए है. इसे पूरा करने में आपको करीब 100 मिनट लग सकते हैं.
2. शुरू करने से पहले
प्रोजेक्ट बनाना और पुष्टि करना
बिलिंग की सुविधा वाला नया GCP प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का इस्तेमाल करें. इसके बाद, Cloud Shell या अपनी लोकल मशीन की पुष्टि करें:
gcloud auth login
gcloud auth application-default login
gcloud config set project <your-project-id>
बूटस्ट्रैप एपीआई चालू करना
Terraform का फ़ाउंडेशन मॉड्यूल, पहली बार लागू करने पर ~30 एपीआई चालू करता है. हालांकि, terraform init और GCS स्टेट बकेट के लिए, बूटस्ट्रैप का छोटा सेट ज़रूरी है:
gcloud services enable \
compute.googleapis.com \
serviceusage.googleapis.com \
cloudresourcemanager.googleapis.com \
iam.googleapis.com \
storage.googleapis.com \
dns.googleapis.com
ज़रूरी टूल इंस्टॉल करना
टूलचेन इंस्टॉल करें. Cloud Shell पर इनमें से ज़्यादातर पहले से मौजूद होते हैं. वर्कस्टेशन पर:
# uv (Python package manager)
curl -LsSf https://astral.sh/uv/install.sh | sh
# skaffold
curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64 && \
sudo install skaffold /usr/local/bin/
# envsubst (gettext)
sudo apt-get install -y gettext-base
इसके अलावा, आपको Terraform >= 1.12.2, Python 3.12+, और Google Cloud SDK (gcloud) की भी ज़रूरत होगी.
एनवायरमेंट वैरिएबल सेट करना
कोडलैब के बाकी हिस्से में यह माना गया है कि इन्हें आपके शेल में एक्सपोर्ट किया गया है.
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
export ORG_ID=$(gcloud projects get-ancestors $PROJECT_ID | awk '$2 == "organization" {print $1}')
export REGION="us-central1"
# Only required if using the secure private networking path
export DOMAIN_NAME="agw.example.com"
पुष्टि करें कि आपके सभी वैरिएबल सही तरीके से भरे गए हों. आपको तीन वैल्यू दिखनी चाहिए.
echo $PROJECT_ID
echo $PROJECT_NUMBER
echo $ORG_ID
अगर आपका संगठन आईडी अपने-आप नहीं भरता है, तो इसे मैन्युअल तरीके से सेट किया जा सकता है.
gcloud organizations list
export ORG_ID=ID_FROM_OUTPUT
3. रिपॉज़िटरी को क्लोन करना
git clone https://github.com/GoogleCloudPlatform/cloud-networking-solutions.git
cd cloud-networking-solutions
cd demos/agent-gateway
डेमो डायरेक्ट्री में मौजूद आइटम के बारे में यहां बताया गया है:
src/ MCP servers (legacy-dms, corporate-email, income-verification-api) + mortgage-agent
terraform/ Root Terraform config + modules (foundation, networking, agent-gateway, model-armor, ...)
cloudrun/ Cloud Run service definitions (rendered from .yaml.tmpl via envsubst)
scripts/ grant_agent_mcp_egress.sh — per-MCP IAP egressor binding
skaffold.yaml.tmpl Skaffold pipeline that builds + deploys all three MCP services to Cloud Run
4. Terraform स्टेट बकेट और बैकएंड कॉन्फ़िगरेशन बनाना
रिमोट स्टेट को सेव करने के लिए, GCS बकेट बनाएं. इसके बाद, बैकएंड टेंप्लेट कॉपी करें:
gcloud storage buckets create gs://${PROJECT_ID}-tfstate \
--location=${REGION} \
--uniform-bucket-level-access
cp terraform/example.backend.conf terraform/backend.conf
अपनी वैल्यू के हिसाब से terraform/backend.conf में बदलाव करें:
bucket = "<your-project-id>-tfstate"
prefix = "agent-gateway"
5. (ज़रूरी नहीं) सार्वजनिक क्लाउड डीएनएस ज़ोन बनाना
इस लैब के लिए, Cloud Run का इनग्रेस कॉन्फ़िगरेशन डिफ़ॉल्ट रूप से all पर सेट होता है. साथ ही, एजेंट रजिस्ट्री हर एमसीपी सर्वर को उसके सार्वजनिक *.run.app यूआरएल पर रजिस्टर करती है. इसके लिए, किसी अतिरिक्त डीएनएस, सर्टिफ़िकेट या लोड बैलेंसर की ज़रूरत नहीं होती. अगर आपको प्राइवेट नेटवर्किंग (Cloud Run, इंटरनल ऐप्लिकेशन एलबी के पीछे ingress = internal-and-cloud-load-balancing) पर स्विच करना है, तो आपको सार्वजनिक Cloud DNS ज़ोन की भी ज़रूरत होगी. इससे Certificate Manager, एलबी सर्टिफ़िकेट की पुष्टि कर पाएगा.
निजी नेटवर्किंग का हाई लेवल फ़्लो

प्राइवेट नेटवर्किंग का इस्तेमाल करने के लिए:
- सार्वजनिक Cloud DNS ज़ोन बनाएं — Certificate Manager, मैनेज किए गए रीजनल सर्टिफ़िकेट की पुष्टि करता है. इसके लिए, वह इसमें CNAME लिखता है:
gcloud dns managed-zones create agw-example-com \
--dns-name="${DOMAIN_NAME}." \
--description="Public zone for ${DOMAIN_NAME}" \
--visibility=public
mcp.${DOMAIN_NAME} के लिए, इससे जुड़ा निजी ज़ोन, Terraform अपने-आप बनाता है. इसका इस्तेमाल MCP के इंटरनल एलबी और एजेंट रनटाइम से डीएनएस पियरिंग के लिए किया जाता है. आपको इसे मैन्युअल तरीके से बनाने की ज़रूरत नहीं है. प्राइवेट नेटवर्किंग की सुविधा बंद होने पर, न तो सार्वजनिक ज़ोन और न ही निजी ज़ोन उपलब्ध कराया जाता है.
6. Terraform वैरिएबल कॉन्फ़िगर करना
उदाहरण के तौर पर दिए गए tfvars को कॉपी करें और उसमें बदलाव करें:
cp terraform/example.tfvars terraform/terraform.tfvars
enable_cloud_run_private_networking के आधार पर, दो डेमो पाथ उपलब्ध हैं.
डिफ़ॉल्ट पाथ: Cloud Run में पब्लिक इन्ग्रेस की सुविधा
सबसे आसान सेटअप: डिफ़ॉल्ट पाथ के लिए, आपको सिर्फ़ terraform.tfvars में तीन वैल्यू में बदलाव करना होगा. फ़ाइल में मौजूद अन्य सभी वैरिएबल में, डेमो के लिए डिफ़ॉल्ट वैल्यू पहले से मौजूद होती है.
# GCP project ID where all resources will be created.
project_id = "my-gcp-project-id"
# GCP organization ID (numeric).
organization_id = "123456789012"
# Members granted demo-wide roles
platform_admin_members = ["user:admin@example.com"]
# IAP Enforcement Mode ("DRY_RUN" or null)
agent_gateway_iap_iam_enforcement_mode = "DRY_RUN"
निजी नेटवर्क (ज़रूरी नहीं)
enable_cloud_run_private_networking = true सेट करें और पूरी तरह से सुरक्षित स्टैक उपलब्ध कराने के लिए, यहां दिए गए वैरिएबल जोड़ें:
- इंटरनल ऐप्लिकेशन एलबी
- Google की ओर से मैनेज किया गया सर्टिफ़िकेट
ingress = internal-and-cloud-load-balancingके साथ Cloud Run- एजेंट गेटवे के लिए डीएनएस पियरिंग.
enable_cloud_run_private_networking = true
# DNS — must end with a trailing dot, must match a Cloud DNS zone you own
dns_zone_domain = "agw.example.com."
enable_certificate_manager = true
# mcp_internal_dns_zone.domain MUST be a real subdomain of dns_zone_domain so
# Certificate Manager can issue a Google-managed cert.
mcp_internal_dns_zone = {
name = "mcp-server-internal"
domain = "mcp.agw.example.com."
}
# Must match mcp_internal_dns_zone.domain so Agent Engine resolves MCP
# hostnames over the PSC interface peering.
psc_interface_dns_zone = {
name = "mcp-server-internal"
domain = "mcp.agw.example.com."
}
mcp_lb_protocol = "HTTPS"
7. Terraform की मदद से इन्फ़्रास्ट्रक्चर डिप्लॉय करना
शुरू करें, समीक्षा करें, और लागू करें:
cd terraform
terraform init -backend-config=backend.conf
terraform plan -out=tfplan
terraform apply tfplan
terraform apply डिफ़ॉल्ट पाथ पर ~40 संसाधन उपलब्ध कराता है. साथ ही, नए प्रोजेक्ट पर 8 से 10 मिनट लगते हैं (~60 संसाधन / 15 से 20 मिनट, जब enable_cloud_run_private_networking = true). यह बनाता है:
- प्रोजेक्ट की बुनियादी सुविधाएं (एपीआई, सेवा की पहचान, कोटा)
- वीपीसी, सबनेट (प्राइमरी, सिर्फ़ प्रॉक्सी, पीएससी, पीएससी-इंटरफ़ेस, एजेंट गेटवे को-लोकेशन), Cloud NAT, फ़ायरवॉल के नियम
- Cloud Run इमेज के लिए Artifact Registry रेपो
- Cloud Run की तीन सेवाएं + हर सेवा के लिए रनटाइम एसए (इनग्रेस = डिफ़ॉल्ट रूप से
all; प्राइवेट नेटवर्किंग चालू होने परinternal-and-cloud-load-balancing) - Model Armor टेंप्लेट + IAM
- Agent Gateway, PSC-I नेटवर्क अटैचमेंट, IAP और Model Armor एक्सटेंशन, अनुमति देने से जुड़ी दोनों नीतियां, और प्रोजेक्ट-लेवल का
roles/iap.egressorgrant - एजेंट रजिस्ट्री एंडपॉइंट (Vertex AI, IAP, Discovery Engine, ...) के साथ-साथ तीन एमसीपी सर्वर (डिफ़ॉल्ट रूप से
*.run.app/mcpपर रजिस्टर किए गए; निजी नेटवर्किंग चालू होने परपर रजिस्टर किए गए). /mcp
सिर्फ़ तब, जब enable_cloud_run_private_networking = true:
- बिना सर्वर वाले एनईजी (यूआरएल-मास्क राउटिंग) + निजी डीएनएस ए रिकॉर्ड के साथ इंटरनल रीजनल ऐप्लिकेशन एलबी
- वीपीसी से जुड़ा एमसीपी का निजी डीएनएस ज़ोन (
mcp.). - पब्लिक डीएनएस ज़ोन मॉड्यूल (Certificate Manager की डीएनएस अनुमतियां) + Google की तरफ़ से मैनेज किया जाने वाला रीजनल सर्टिफ़िकेट
- पीएससी इंटरफ़ेस डीएनएस ज़ोन (जब हल करने के लिए कोई निजी होस्टनेम नहीं होता है, तो यह अनाथ हो जाता है. इसलिए, इसे मास्टर फ़्लैग पर भी गेट किया जाता है)
mcp.के लिए एजेंट गेटवे डीएनएस पियरिंग (अपने-आप जुड़ जाता है).
8. एजेंट रजिस्ट्री के एंडपॉइंट की जांच करना
एजेंट रजिस्ट्री, हर प्रोजेक्ट के लिए सेवाओं (Google API और आपके अपने एमसीपी सर्वर) का कैटलॉग होती है. एजेंट, रनटाइम के दौरान इसे खोजता है. मॉर्गेज एजेंट, स्टार्टअप पर इसे पढ़ता है और टूल को डाइनैमिक तरीके से बाइंड करता है. एजेंट कोड या उसकी डिप्लॉय कमांड में कोई भी एमसीपी यूआरएल शामिल नहीं होता है.
एंडपॉइंट
Terraform ने आपकी ओर से क्या किया — agent_registry_google_apis में मौजूद हर Google API के लिए, इसने पांच वैरिएंट रजिस्टर किए (ग्लोबल, एमटीएलएस ग्लोबल, रीजनल, रीजनल एमटीएलएस, रीजनल आरईपी). उदाहरण के लिए, aiplatform के लिए:
gcloud alpha agent-registry services create aiplatform \
--project=${PROJECT_ID} --location=${REGION} \
--display-name="Vertex AI Platform" \
--endpoint-spec-type=no-spec \
--interfaces="url=https://aiplatform.googleapis.com,protocolBinding=JSONRPC"
gcloud alpha agent-registry services create aiplatform-mtls \
--project=${PROJECT_ID} --location=${REGION} \
--display-name="Vertex AI Platform mTLS" \
--endpoint-spec-type=no-spec \
--interfaces="url=https://aiplatform.mtls.googleapis.com,protocolBinding=JSONRPC"
gcloud alpha agent-registry services create ${REGION}-aiplatform \
--project=${PROJECT_ID} --location=${REGION} \
--display-name="Vertex AI Platform Locational" \
--endpoint-spec-type=no-spec \
--interfaces="url=https://${REGION}-aiplatform.googleapis.com,protocolBinding=JSONRPC"
gcloud alpha agent-registry services create aiplatform-${REGION}-rep \
--project=${PROJECT_ID} --location=${REGION} \
--display-name="Vertex AI Platform Regional (REP)" \
--endpoint-spec-type=no-spec \
--interfaces="url=https://aiplatform.${REGION}.rep.googleapis.com,protocolBinding=JSONRPC"
एमसीपी सर्वर
Terraform, आपके लिए तीन एमसीपी सर्वर भी रजिस्टर करता है. अन्य एमसीपी सर्वर रजिस्टर करने के लिए, दस्तावेज़ में दिए गए चरणों का पालन करें.
gcloud alpha agent-registry services create legacy-dms \
--project=${PROJECT_ID} \
--location=${REGION} \
--display-name="Legacy DMS" \
--mcp-server-spec-type=tool-spec \
--mcp-server-spec-content=src/legacy-dms/toolspec.json \
--interfaces=url=https://dms.${DOMAIN_NAME}/mcp,protocolBinding=JSONRPC
पंजीकृत एंडपॉइंट और एमसीपी सर्वर की पुष्टि करें.
gcloud alpha agent-registry services list \
--project=${PROJECT_ID} --location=${REGION} \
--format="value(displayName,name)"
gcloud alpha agent-registry mcp-servers list \
--project=${PROJECT_ID} --location=${REGION} \
--format="value(displayName,name)"
स्रोत: terraform/modules/agent-registry-endpoints/scripts/register_endpoints.sh.tpl
9. एजेंट गेटवे का कॉन्फ़िगरेशन देखना
एजेंट गेटवे, Google के ज़रिए मैनेज किया जाने वाला एक गवर्नेंस प्लेन है. यह एजेंट रनटाइम और आपके टूल के बीच काम करता है. AGENT_TO_ANYWHERE मोड में, यह प्रोजेक्ट की एजेंट रजिस्ट्री से जुड़ा होता है और ग्राहक के मालिकाना हक वाले पीएससी इंटरफ़ेस के ज़रिए बाहर निकलता है, ताकि यह आपके वीपीसी में मौजूद निजी एमसीपी सर्वर तक पहुंच सके.
अगर आपको इस गेटवे को मैन्युअल तरीके से इंपोर्ट करना है, तो YAML ऐसा दिखेगा:
# agent-gateway.yaml — for reference only, Terraform already created this
name: agent-gateway
protocols: [MCP]
googleManaged:
governedAccessPath: AGENT_TO_ANYWHERE
registries:
- "//agentregistry.googleapis.com/projects/${PROJECT_ID}/locations/${REGION}"
networkConfig:
egress:
networkAttachment: projects/${PROJECT_ID}/regions/${REGION}/networkAttachments/agent-gateway-na
dnsPeeringConfig:
domains:
- mcp.${DOMAIN_NAME}.
targetProject: ${PROJECT_ID}
targetNetwork: projects/${PROJECT_ID}/global/networks/gateway-vpc
gcloud alpha network-services agent-gateways import agent-gateway \
--source=agent-gateway.yaml \
--location=${REGION}
Terraform से बनाए गए गेटवे की पुष्टि करें:
gcloud alpha network-services agent-gateways describe agent-gateway \
--location=${REGION}
10. IAP और मॉडल आर्मर की अनुमति की जांच करना
एजेंट गेटवे, सेवा एक्सटेंशन को अनुमति सौंपता है. डेमो में दो नीति प्रोफ़ाइलें शामिल हैं:
- REQUEST_AUTHZ — इसका आकलन, हेडर स्टेज पर हर अनुरोध के लिए एक बार किया जाता है. इस कुकी का इस्तेमाल IAP को कॉल करने के लिए किया जाता है. इससे यह पता चलता है कि कॉल करने वाले एजेंट की पहचान के पास टारगेट एमसीपी सर्वर पर
roles/iap.egressorहै या नहीं. - CONTENT_AUTHZ — यह एक्सटेंशन को बॉडी इवेंट स्ट्रीम करता है, ताकि कॉन्टेंट को सुरक्षित बनाया जा सके. इसका इस्तेमाल Model Armor को कॉल करने के लिए किया जाता है. यह प्रॉम्प्ट इंजेक्शन, जेलब्रेक, आरएआई के उल्लंघन, और (ज़रूरत पड़ने पर) संवेदनशील डेटा सुरक्षा (एसडीपी) के ज़रिए व्यक्तिगत पहचान से जुड़ी जानकारी की जांच करता है.
IAP REQUEST_AUTHZ एक्सटेंशन
cat > iap-authz-extension.yaml <<EOF
name: agent-gateway-iap-authz
service: iap.googleapis.com
failOpen: true
timeout: 1s
EOF
gcloud beta service-extensions authz-extensions import agent-gateway-iap-authz \
--source=iap-authz-extension.yaml \
--location=${REGION} \
--project=${PROJECT_ID}
इसे REQUEST_AUTHZ नीति के साथ एजेंट गेटवे से बाइंड करें:
curl -fsS -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-X POST "https://networksecurity.googleapis.com/v1alpha1/projects/${PROJECT_ID}/locations/${REGION}/authzPolicies?authz_policy_id=agent-gateway-iap-policy" \
-d '{
"name": "agent-gateway-iap-policy",
"policyProfile": "REQUEST_AUTHZ",
"action": "CUSTOM",
"target": {
"resources": [
"projects/'"${PROJECT_ID}"'/locations/'"${REGION}"'/agentGateways/agent-gateway"
]
},
"customProvider": {
"authzExtension": {
"resources": [
"projects/'"${PROJECT_ID}"'/locations/'"${REGION}"'/authzExtensions/agent-gateway-iap-authz"
]
}
}
}'
Model Armor CONTENT_AUTHZ एक्सटेंशन
एक्सटेंशन का metadata.model_armor_settings, अनुरोध और जवाब के टेंप्लेट आईडी को ले जाता है. Model Armor इनका इस्तेमाल करके, हर कॉलआउट का आकलन करता है:
cat > ma-extension.yaml <<EOF
name: agent-gateway-ma-authz
service: modelarmor.${REGION}.rep.googleapis.com
failOpen: true
timeout: 1s
metadata:
model_armor_settings: '[
{
"request_template_id": "projects/${PROJECT_ID}/locations/${REGION}/templates/agw-request-template",
"response_template_id": "projects/${PROJECT_ID}/locations/${REGION}/templates/agw-response-template"
}
]'
EOF
gcloud beta service-extensions authz-extensions import agent-gateway-ma-authz \
--source=ma-extension.yaml \
--location=${REGION} \
--project=${PROJECT_ID}
curl -fsS -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-X POST "https://networksecurity.googleapis.com/v1alpha1/projects/${PROJECT_ID}/locations/${REGION}/authzPolicies?authz_policy_id=agent-gateway-ma-policy" \
-d '{
"name": "agent-gateway-ma-policy",
"policyProfile": "CONTENT_AUTHZ",
"action": "CUSTOM",
"target": {
"resources": [
"projects/'"${PROJECT_ID}"'/locations/'"${REGION}"'/agentGateways/agent-gateway"
]
},
"customProvider": {
"authzExtension": {
"resources": [
"projects/'"${PROJECT_ID}"'/locations/'"${REGION}"'/authzExtensions/agent-gateway-ma-authz"
]
}
}
}'
डीएलपी के कस्टम टेंप्लेट
Model Armor, sdpSettings.basicConfig में बिल्ट-इन जानकारी के टाइप की सूची का इस्तेमाल करता है. बेहतर कंट्रोल (कस्टम जानकारी के टाइप, कुछ हिस्से को मास्क करना, सरोगेट से बदलना, संभावना के हिसाब से डेटा छिपाना) के लिए, sdpSettings.advancedConfig के ज़रिए Model Armor को अपने Cloud DLP inspect और de-identify टेंप्लेट पर पॉइंट करें.
एक ऐसा जांच टेंप्लेट बनाएं जो अमेरिका के सोशल सिक्योरिटी नंबर को POSSIBLE संभावना या उससे ज़्यादा के आधार पर फ़्लैग करे:
curl -fsS -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "x-goog-user-project: ${PROJECT_ID}" \
"https://dlp.googleapis.com/v2/projects/${PROJECT_ID}/locations/${REGION}/inspectTemplates" \
-d '{
"templateId": "agw-ssn-inspect-template",
"inspectTemplate": {
"displayName": "SSN Inspect Template",
"inspectConfig": {
"infoTypes": [
{ "name": "US_SOCIAL_SECURITY_NUMBER" }
],
"minLikelihood": "POSSIBLE"
}
}
}'
पहचान छिपाने वाला एक टेंप्लेट बनाएं. यह टेंप्लेट, हर नतीजे को उसके जानकारी के टाइप वाले टोकन (जैसे, [US_SOCIAL_SECURITY_NUMBER]) से बदल देता है:
curl -fsS -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "x-goog-user-project: ${PROJECT_ID}" \
"https://dlp.googleapis.com/v2/projects/${PROJECT_ID}/locations/${REGION}/deidentifyTemplates" \
-d '{
"templateId": "agw-ssn-redaction-template",
"deidentifyTemplate": {
"displayName": "SSN Redaction Template",
"deidentifyConfig": {
"infoTypeTransformations": {
"transformations": [{
"primitiveTransformation": { "replaceWithInfoTypeConfig": {} }
}]
}
}
}
}'
इसके बाद, sdpSettings.advancedConfig के ज़रिए Model Armor टेंप्लेट के जवाब कॉन्फ़िगरेशन को पेयर पर पॉइंट करें. अगर आपने इसे सेट अप किया है, तो Terraform का model_armor मॉड्यूल advanced_config को यहीं सेट करेगा:
{
"filterConfig": {
"sdpSettings": {
"advancedConfig": {
"inspectTemplate": "projects/${PROJECT_ID}/locations/${REGION}/inspectTemplates/agw-ssn-inspect-template",
"deidentifyTemplate": "projects/${PROJECT_ID}/locations/${REGION}/deidentifyTemplates/agw-ssn-redaction-template"
}
}
}
}
आईएपी इग्रेसर IAM (सिर्फ़ एमसीपी सर्वर के हिसाब से)
Terraform, प्रोजेक्ट-वाइड roles/iap.egressor नहीं बनाता है. यह इंप्लिसिट IAP एजेंट रजिस्ट्री पर बाइंड होता है. IAP REQUEST_AUTHZ की बाइंडिंग का आकलन, हर एमसीपी सर्वर और हर रीज़निंग इंजन के हिसाब से किया जाता है. यह बाइंडिंग, एजेंट को डिप्लॉय करने के बाद दी जाती है. साथ ही, आपको एजेंट आईडी पता होना चाहिए. इसके लिए, "Grant the agent per-MCP-server egress" चरण scripts/grant_agent_mcp_egress.sh को चलाता है.
11. एमसीपी सर्वर को Cloud Run पर बनाएं और डिप्लॉय करें
cloudrun/*.yaml.tmpl और skaffold.yaml.tmpl फ़ाइलें, ${PROJECT_ID}, ${REGION}, और ${MCP_INGRESS} (Cloud Run का इन्ग्रेस एनोटेशन) को रेफ़रंस करती हैं. टेराफ़ॉर्म आउटपुट से MCP_INGRESS को सोर्स करें, ताकि रेंडर किए गए मेनिफ़ेस्ट, enable_cloud_run_private_networking के साथ सिंक रहें. इसके बाद, envsubst का इस्तेमाल करके रेंडर करें:
Cloud Run के इन्ग्रेस कॉन्फ़िगरेशन को एक्सपोर्ट करें.
allinternal-and-cloud-load-balancing(Private Networking का इस्तेमाल करते समय)
export MCP_INGRESS=all
डेमो की रूट डायरेक्ट्री पर वापस जाएं:
cd ..
टेंप्लेट वैल्यू बदलें:
envsubst '${PROJECT_ID} ${REGION} ${MCP_INGRESS}' < skaffold.yaml.tmpl > skaffold.yaml
for f in cloudrun/*.yaml.tmpl; do
envsubst '${PROJECT_ID} ${REGION} ${MCP_INGRESS}' < "$f" > "${f%.tmpl}"
done
हर Cloud Run सेवा, सेवा के हिसाब से रनटाइम एसए Terraform के तौर पर चलती है. जैसे, mcp-legacy-dms@${PROJECT_ID}.iam.gserviceaccount.com. इन एसए के तौर पर डिप्लॉय करने के लिए, आपके पास roles/iam.serviceAccountUser होना चाहिए:
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="user:$(gcloud config get-value account)" \
--role="roles/iam.serviceAccountUser"
Cloud Build की मदद से इमेज बनाएं और Skaffold की मदद से डिप्लॉय करें:
skaffold run
Skaffold, आपकी Artifact Registry repo में तीन इमेज (legacy-dms, corporate-email, income-verification-api) बनाता है. साथ ही, हर Cloud Run सेवा को नए डाइजेस्ट पर पॉइंट करने के लिए अपडेट करता है.
पुष्टि करें:
gcloud run services list --region=${REGION}
आपको तीनों सेवाओं के लिए ACTIVE स्टेटस दिखेगा.
12. मॉर्गिज एजेंट को एजेंट रनटाइम में डिप्लॉय करना
हमने रजिस्ट्री में जिन एंडपॉइंट को रजिस्टर किया है उन सभी पर, सभी एजेंट को IAP Egressor की भूमिका असाइन करें. एजेंट को इन एंडपॉइंट का ऐक्सेस चाहिए, क्योंकि डिप्लॉयमेंट के दौरान, इसे पैकेज के लिए github.com तक पहुंचना होता है. इसके बाद, इसे डिप्लॉयमेंट के लिए ज़रूरी अलग-अलग Google API तक पहुंचना होता है.
./scripts/grant_agent_mcp_egress.sh --bind-all-agents --endpoints
एजेंट की डिपेंडेंसी इंस्टॉल करें और उसे डिप्लॉय करें:
cd src/mortgage-agent
uv sync
uv run python deploy_agent.py \
--project=${PROJECT_ID} \
--region=${REGION} \
--enable-agent-identity \
--agent-name=mortgage-agent \
--agent-gateway=projects/${PROJECT_ID}/locations/${REGION}/agentGateways/agent-gateway \
--mcp-invoker-sa=$(terraform -chdir=../../terraform output -raw agent_mcp_invoker_email) \
--model-endpoint-location=global
स्क्रिप्ट पूरी होने के बाद, प्रिंट किए गए reasoningEngines/ को अपने शेल में कॉपी करें. उदाहरण के लिए, 4262292559201566720:
export AGENT_ID=<numeric-id-from-output>
cd ../..
13. हर एमसीपी सर्वर के हिसाब से एजेंट को इग्रेस की अनुमति देना
IAP REQUEST_AUTHZ एक्सटेंशन, हर टूल कॉल को अनुमति देता है. इसके लिए, वह एजेंट के roles/iap.egressor की जांच करता है. यह जांच, किसी खास एमसीपी सर्वर या एंडपॉइंट पर की जाती है. एजेंट से एमसीपी सर्वर तक डेटा भेजने की नीति बनाना लेख पढ़ें.
स्क्रिप्ट (scripts/grant_agent_mcp_egress.sh), एजेंट रजिस्ट्री में projects/${PROJECT_ID}/locations/${REGION} के तहत एमसीपी सर्वर की गिनती करती है. साथ ही, एजेंट प्रिंसिपल के लिए roles/iap.egressor बाइंडिंग को हर सर्वर की IAM नीति में मर्ज करती है. यह gcloud add-iam-policy-binding के सिमैंटिक को मिरर करती है.
इस्तेमाल का पहला उदाहरण — बिना शर्त के, खास एमसीपी सर्वर के लिए स्कोप किया गया ग्रांट
./scripts/grant_agent_mcp_egress.sh \
--mcp \
--agent-id ${AGENT_ID} \
--mcp-filter "legacy-dms income-verification"
इस्तेमाल का दूसरा उदाहरण — किसी खास एमसीपी सर्वर के लिए, शर्त के हिसाब से अनुमति देना (सीईएल)
किसी एजेंट को एक एमसीपी सर्वर पर मौजूद टूल के सबसेट तक सीमित करने के लिए, IAM की शर्त अटैच करें. एजेंट गेटवे, हर टूल के हिसाब से एट्रिब्यूट पब्लिश करता है. IAP REQUEST_AUTHZ, इन एट्रिब्यूट को CEL के लिए उपलब्ध कराता है. इनमें ये शामिल हैं:
iap.googleapis.com/mcp.toolNameiap.googleapis.com/mcp.tool.isReadOnlyiap.googleapis.com/request.auth.type.
एजेंट को corporate-email पर सिर्फ़ रीड-ओनली टूल का इस्तेमाल करने की अनुमति दें:
./scripts/grant_agent_mcp_egress.sh \
--mcp \
--agent-id ${AGENT_ID} \
--mcp-filter "corporate-email" \
--condition-expression "api.getAttribute('iap.googleapis.com/mcp.tool.isReadOnly', false) == true || api.getAttribute('iap.googleapis.com/mcp.toolName', '') == ''" \
--condition-title "ReadOnlyToolsOnly" \
--condition-description "Restrict ${AGENT_ID} to read-only tools on corporate-email"
इसके बाद, IAP REQUEST_AUTHZ से corporate-email return 403 PermissionDenied पर लिखने के टूल काम करते हैं. हालांकि, सिर्फ़ पढ़ने के टूल काम करते रहते हैं.
बाइंडिंग की पुष्टि करना
नीति टैब पर जाएं. यहां आपको एंडपॉइंट और एमसीपी सर्वर के ख़िलाफ़ बनाई गई नीतियों की सूची दिखेगी.
इस्तेमाल के अन्य उदाहरण:
हर एमसीपी सर्वर पर बिना शर्त अनुमति दी जाती है, जो एक एजेंट के लिए होती है
हर एजेंट को फिर से डिप्लॉय करने के बाद, इसे चलाएं. बिना किसी फ़िल्टर और शर्त के, नामित एजेंट को रजिस्ट्री में मौजूद हर एमसीपी सर्वर पर roles/iap.egressor मिलता है:
./scripts/grant_agent_mcp_egress.sh \
--mcp \
--agent-id ${AGENT_ID}
14. Agent Platform console में एजेंट की जांच करना
Agent Platform Console में एक Playground शामिल होता है. इसकी मदद से, डिप्लॉय किए गए एजेंट से सीधे तौर पर चैट की जा सकती है. यह टूल कॉल की स्मोक टेस्टिंग करने और Gemini Enterprise में एजेंट को जोड़ने से पहले ट्रेस की जाँच करने का सबसे तेज़ तरीका है.
- Google Cloud Console में, Agent Platform Deployments पेज खोलें.
- अगर आपको रनटाइम की सूची को छोटा करना है, तो फ़िल्टर फ़ील्ड का इस्तेमाल करें. इसके बाद, अपने
mortgage-agentरनटाइम पर क्लिक करें. - Playground टैब खोलें.
- एजेंट से चैट करने के लिए कोई प्रॉम्प्ट टाइप करें:
I am reviewing the Sterling familys current application. Can you summarize their 2024 and 2025 tax returns and verify if their total household income meets our 2026 debt-to-income requirements?
इससे, दस्तावेज़ मैनेज करने वाले टूल और आय की पुष्टि करने वाले टूल से जवाब मिलना चाहिए. साथ ही, इस जवाब में एसएसएन को भी छिपाया जाना चाहिए. 5. कुछ और पूछने के लिए प्रॉम्प्ट टाइप करें:
Can you send a summary of this to my email jane@example.com
एजेंट ईमेल भेज पाएगा, क्योंकि आईएपी एक्सटेंशन के ड्राय रन मोड में होने की वजह से, शर्तों के साथ लागू होने वाली नीति लागू नहीं की जा रही है.
एजेंट को OpenTelemetry इंस्ट्रूमेंटेशन के साथ डिप्लॉय किया गया था. इसलिए, Playground में चार साइड-पैनल व्यू दिखते हैं. एजेंट के जवाब देने के दौरान, इनके बीच स्विच किया जा सकता है:
- ट्रेस — बातचीत के पूरे ट्रेस, जिनमें Agent Gateway, IAP REQUEST_AUTHZ, और Model Armor CONTENT_AUTHZ स्पैन शामिल हैं
- इवेंट — इसमें, चालू बातचीत के दौरान इस्तेमाल किए गए टूल और इवेंट की जानकारी का ग्राफ़ दिखता है
- स्टेट — एजेंट के सेशन की स्थिति और टूल के इनपुट/आउटपुट
- सेशन — इस रनटाइम के ख़िलाफ़ शुरू किया गया हर सेशन
15. IAP की अनुमति देने की सुविधा लागू करना
हमने डिप्लॉयमेंट की पुष्टि कर ली है. अब हम नीतियों को लागू करने के लिए, IAP एनफ़ोर्समेंट मोड को null पर अपडेट कर सकते हैं. terraform.tfvars खोलें और मोड को DRY_RUN से null पर अपडेट करें
# IAP Enforcement Mode ("DRY_RUN" or null)
agent_gateway_iap_iam_enforcement_mode = null
बदलाव लागू करें.
terraform apply
Playground पर वापस जाएं और बातचीत फिर से शुरू करें.
- Google Cloud Console में, Agent Platform Deployments पेज खोलें.
- अगर आपको रनटाइम की सूची को छोटा करना है, तो फ़िल्टर फ़ील्ड का इस्तेमाल करें. इसके बाद, अपने
mortgage-agentरनटाइम पर क्लिक करें. - Playground टैब खोलें.
- एजेंट से चैट करने के लिए कोई प्रॉम्प्ट टाइप करें:
I am reviewing the Sterling familys current application. Can you summarize their 2024 and 2025 tax returns and verify if their total household income meets our 2026 debt-to-income requirements?
इससे, दस्तावेज़ मैनेज करने वाले टूल और आय की पुष्टि करने वाले टूल से जवाब मिलना चाहिए. साथ ही, इस जवाब में एसएसएन को भी छिपाया जाना चाहिए. 5. कुछ और पूछने के लिए प्रॉम्प्ट टाइप करें:
Can you send a summary of this to my email jane@example.com
अगर सब कुछ सही तरीके से सेट अप किया गया है, तो एजेंट को यह जवाब देना चाहिए कि वह अनुमति देने से जुड़ी नीति की वजह से ईमेल नहीं भेज सकता.
16. Gemini Enterprise को सेटअप करना और उसकी जांच करना
Gemini Enterprise को सेट अप करना
Gemini Enterprise का इस्तेमाल शुरू करने से जुड़ी गाइड पढ़ें.
Gemini Enterprise के साथ हमारे ADK एजेंट को रजिस्टर करें
Gemini Enterprise में हमारे एजेंट को रजिस्टर करने के लिए, यह तरीका अपनाएं. इसके लिए, यहां दिया गया तरीका भी अपनाया जा सकता है.
- Google Cloud Console में, Gemini Enterprise पेज पर जाएं.
- वह Gemini Enterprise ऐप्लिकेशन चुनें जिसमें एजेंट रजिस्टर किया गया है.
- Gemini Enterprise का वेब ऐप्लिकेशन इस्तेमाल के लिए तैयार है सेक्शन में दिया गया यूआरएल खोलें.
- एजेंट गैलरी खोलने के लिए, बाईं ओर मौजूद मेन्यू में जाकर एजेंट टैब चुनें.
- Mortgage Assistant Agent को चुनें और चैट करना शुरू करें.
एजेंट रनटाइम प्लेग्राउंड में जाकर, यही प्रॉम्प्ट आज़माएं:
शुरुआती प्रॉम्प्ट:
I am reviewing the Sterling familys current application. Can you summarize their 2024 and 2025 tax returns and verify if their total household income meets our 2026 debt-to-income requirements?
फ़ॉलो अप प्रॉम्प्ट:
Can you send a summary of this to my email jane@example.com
अगर आप कंसोल में एजेंट डिप्लॉयमेंट सेक्शन पर वापस जाते हैं, तो हमारे एजेंट डिप्लॉयमेंट को चुनें. इसके बाद, ट्रेस टैब पर जाएं. अब आपको Gemini Assistant एजेंट, उस स्पैन में दिखेगा जिसमें Gemini Enterprise से कॉल शुरू होने की जानकारी दी गई है.
17. जांचने की क्षमता वाला डैशबोर्ड
अनुमति की पुष्टि करने से जुड़ी गड़बड़ियों को ठीक करने वाला डैशबोर्ड, एजेंट रनटाइम एजेंट के इग्रेस ट्रैफ़िक की जानकारी एक ही जगह पर दिखाता है.

डैशबोर्ड में यह जानकारी दिखती है:
- एजेंट ➔ एंडपॉइंट (403 अस्वीकार किए गए)
- एजेंट ➔ एमसीपी सर्वर (403 अस्वीकार किए गए)
- एजेंट ➔ एजेंट (403 Denials)
- भेजे गए ऐसे ईमेल जिन्हें ब्लॉक किया गया है और जो रजिस्टर नहीं हैं
- ट्रैफ़िक की खास जानकारी और IAP एनफ़ोर्समेंट मोड
- GCP API के लिए IAM से जुड़ी अनुमतियां अस्वीकार की गईं
हर विजेट में एजेंट आईडी, अनुरोध किया गया होस्ट, रजिस्टर किया गया रिसॉर्स पाथ, और यह जानकारी दिखती है कि क्या गेटवे और आईएपी ने अनुरोध को अनुमति दी है.
- रजिस्टर नहीं किए गए आउटबाउंड ब्लॉक — यह विजेट, एजेंट गेटवे के उस ट्रैफ़िक को अलग करता है जिसे एजेंट गेटवे ने ब्लॉक किया है. ऐसा इसलिए, क्योंकि डेस्टिनेशन होस्टनेम, एजेंट रजिस्ट्री में मौजूद नहीं है. गेटवे प्रॉक्सी, इन अनुरोधों को IAP तक पहुंचने से पहले ही ब्लॉक कर देती है. इसलिए, इन एंट्री के लिए IAP ऑडिट लॉग नहीं होते.
- ट्रैफ़िक की खास जानकारी और IAP एनफ़ोर्समेंट मोड — यह विजेट, सभी ट्रैफ़िक पैटर्न दिखाने वाली टेबल उपलब्ध कराता है. इसमें IAP के ड्राई रन का स्टेटस भी शामिल होता है. इससे उपयोगकर्ताओं को यह पता चलता है कि IAP की नीतियां, ट्रैफ़िक को ब्लॉक कर रही हैं या सिर्फ़ उसकी निगरानी कर रही हैं.
- GCP API IAM से जुड़ी अनुमतियां अस्वीकार की गईं — यह विजेट, स्टैंडर्ड Cloud Audit Logs (
cloudaudit.googleapis.com) खोजता है, ताकि एजेंट के लिए Google Cloud API की अनुमति से जुड़ी गड़बड़ियों का पता लगाया जा सके.
यह डैशबोर्ड, Cloud Console में देखा जा सकता है: Monitoring > Dashboards > Agent Platform: Authorization Debugging
18. समस्या हल करना और सामान्य समाधान
Gemini CLI की मदद से, एआई की सहायता से डीबग करना
समस्याओं को हल करने के लिए, Gemini CLI में agent-platform-debugger स्किल का इस्तेमाल किया जा सकता है. इस स्किल पैकेज में, एआई की मदद से डीबग करने के बारे में खास जानकारी दी गई है. Gemini CLI, .agents/skills/ को वर्कस्पेस के स्कोप में .gemini/skills/ के लिए पहले दर्जे के एलियास के तौर पर इस्तेमाल करता है. इसलिए, सीधे तौर पर इन स्किल का इस्तेमाल किया जा सकता है. Codelab Repo में इस स्किल का इस्तेमाल करने के लिए:
रिपॉज़िटरी डायरेक्ट्री पर जाएं और Gemini CLI शुरू करें:
cd /path/to/cloud-networking-solutions/demos/agent-gateway
gemini
जब आपसे कहा जाए, तब वर्कस्पेस पर भरोसा करें. वर्कस्पेस के स्कोप वाली स्किल सिर्फ़ भरोसेमंद फ़ोल्डर से लोड होती हैं. लोड की गई स्किल की पुष्टि करें:
/skills list
आपको सूची में agent-platform-debugger दिखेगा. अगर यह मौजूद नहीं है, तो स्किल फिर से लोड करें:
/skills reload
समस्या हल करने के बारे में सलाह
terraform applyएजेंट गेटवे पर "संसाधन बनाया जा रहा है, इसलिए इसे अपडेट नहीं किया जा सकता" — गेटवे के किरायेदार प्रोजेक्ट को सेटल होने में ~30 सेकंड लगते हैं. इसके बाद ही, authz नीतियां अटैच की जा सकती हैं. इस समस्या को मॉड्यूल काtime_sleep.wait_for_gatewayहैंडल करता है. बसterraform applyको फिर से चलाएं.- एजेंट को "कोई एमसीपी सर्वर नहीं मिला" रिपोर्ट मिलती है या वह सिर्फ़ यूटिलिटी टूल के साथ बूट होता है —
terraform.tfvarsमेंenable_agent_registry_endpoints = trueकी पुष्टि करें. इसके बाद: आपको तीन एंट्री दिखनी चाहिए. हर Cloud Run MCP सेवा के लिए एक एंट्री. अगर सूची खाली है, तो जांच करें कि एमसीपी सेवाएं वीपीसी के अंदर से ऐक्सेस की जा सकती हैं या नहीं. साथ ही, यह भी देखें कि एजेंट गेटवे ने रजिस्ट्री को भर दिया है या नहीं. यह पहली प्रॉक्सी की गई टूल सूची पर ऐसा करता है.gcloud alpha agent-registry mcp-servers list \ --project=${PROJECT_ID} --location=${REGION} - टूल कॉल से 403 PermissionDenied गड़बड़ी दिखती है —
scripts/grant_agent_mcp_egress.shको फिर से चलाएं. इसकी सबसे आम वजह यह है कि एजेंट को फिर से डिप्लॉय करने के बाद, अनुमतियां फिर से देने की प्रोसेस पूरी नहीं की गई है. हर डिप्लॉयमेंट के बाद,reasoningEngines/बदल जाता है. skaffold run"सेवा खाते के लिए अनुमति नहीं दी गई" मैसेज के साथ फ़ेल हो जाता है — आपके पासroles/iam.serviceAccountUserनहीं है. पिछले चरण में, खुद को अनुमति देने की प्रोसेस को फिर से चलाएं.- एजेंट गेटवे से एमसीपी एलबी तक डीएनएस पियरिंग से जुड़ी गड़बड़ियां — जांच करें कि
agent_gateway_dns_peering_config.target_network,projects/${PROJECT_ID}/global/networks/${VPC_NAME}से पूरी तरह मेल खाता हो. साथ ही, हरdomainsएंट्री के आखिर में ट्रेलिंग डॉट मौजूद हो. terraform plan, Cloud Run इमेज टैग को अपडेट करने का अनुरोध करता रहता है. ऐसाlifecycle { ignore_changes }नियम की वजह से नहीं होना चाहिए. अगर ऐसा होता है, तो पुष्टि करें कि आपनेskaffold runके बाद,terraform.tfvarsमेंmcp_services[*].imageमें बदलाव नहीं किया है.
19. व्यवस्थित करें
रीज़निंग इंजन को Terraform मैनेज नहीं करता है. इसे ADK SDK बनाता है. इसे मैन्युअल तरीके से मिटाएं:
gcloud beta ai reasoning-engines delete ${AGENT_ID} \
--region=${REGION} --project=${PROJECT_ID}
Terraform की बनाई गई सभी चीज़ें मिटाएं:
cd terraform
terraform destroy
cd ..
अगर आपने सार्वजनिक डीएनएस ज़ोन सिर्फ़ इस कोडलैब के लिए बनाया है, तो:
gcloud dns managed-zones delete agw-example-com
आखिर में, Terraform स्टेट बकेट मिटाएं:
gcloud storage rm -r gs://${PROJECT_ID}-tfstate
20. बधाई हो
बधाई हो! आपने Agent Gateway का इस्तेमाल करके, मल्टी-टूल ADK एजेंट के लिए एजेंट गवर्नेंस को लागू कर लिया है. Agent Gateway, नेटवर्क कंट्रोल प्लेन के तौर पर काम करता है. इसकी मदद से, निजी टूल के लिए सुरक्षित इग्रेस पाथ बनाया जा सकता है. साथ ही, Identity-Aware Proxy के ज़रिए पहचान के आधार पर IAM की नीतियां लागू की जा सकती हैं. इसके अलावा, इंटिग्रेट किए गए Model Armor के गार्डरेल का इस्तेमाल करके, कॉन्टेंट इंटरैक्शन को सुरक्षित किया जा सकता है.
आपने क्या सीखा
- एजेंट से किसी भी जगह पर जाने वाले ट्रैफ़िक के लिए, एजेंट गेटवे को सेंट्रल गवर्नेंस लेयर के तौर पर डिप्लॉय और कॉन्फ़िगर करने का तरीका.
- शासन के दायरे में आने वाले, डाइनैमिक रनटाइम टूल की खोज के लिए, एजेंट रजिस्ट्री को इंटिग्रेट करने का तरीका.
- एजेंट के एक्ज़ीक्यूशन पाथ को पूरी तरह से कंट्रोल करने के लिए, हर टूल और शर्त के आधार पर आईएएम नीतियां लिखने और लागू करने का तरीका.
- मॉडल आर्मर की नीतियां लागू करने के लिए, एजेंट गेटवे सेवा के एक्सटेंशन का इस्तेमाल कैसे करें. इससे, एजेंट के संवेदनशील ट्रैफ़िक को अपने-आप रोका जा सकता है और उसे छिपाया जा सकता है.