1. Giriş
Bu Codelab'de, Google Cloud dışında barındırılan harici Model Context Protocol (MCP) sunucularına erişen yapay zeka ajanları için Agent Gateway çıkış yönetimi ele alınmaktadır.
Bağımsız chatbot'lardan çoklu ajan iş akışlarına sahip otonom sistemlere kadar yapay zeka uygulamaları, harici araçları dinamik olarak çağırabilir. Ajanlara veritabanlarını sorgulama, web içeriğini getirme ve işlemleri yürütme konusunda kontrollü erişim sağlamak, güvenli ve verimli ajanlar için çok önemlidir. Ancak kurumsal ortamlarda aracı araç yürütme işleminin güvenliğini sağlamak zordur. Bir aracının doğrudan ağ erişimi varsa istem enjeksiyonu saldırıları veya model halüsinasyonları, aracının hassas verileri sızdırmasına ya da yıkıcı komutlar çalıştırmasına neden olabilir.
Agent Gateway, özerk temsilcileri geniş ölçekte yönetmek için doğrudan Agent Platform mimarisine entegre edilmiş merkezi bir sıfır güven uygulama noktası sağlar. Agent Gateway, her uygulamaya veya aracı koduna özgü özel uygulamalara güvenmek yerine platform düzeyinde uygulanan ağ yönlendirme, aracı yönetimi ve çalışma zamanı güvenliği sağlar.
Agent Gateway, çıkış (agent-to-anywhere) modunda çalıştığında, ağ geçidini kullanacak şekilde yapılandırılmış aracıların tüm giden isteklerini proxy'ler. Her aracı iş yükü isteğinin kimliği, benzersiz Aracı Kimliği kullanılarak doğrulanır ve Identity-Aware Proxy (IAP) politikaları kullanılarak yetkilendirilir. MCP aracı çağrıları, politika yaptırımı için dinamik olarak kod çözülür ve incelenir. Güvenlik yöneticileri, aracıların yalnızca onaylanmış uç noktaları ve yöntemleri çağırabilmesini sağlamak için ayrıntılı izinleri merkezi olarak zorunlu kılabilir.
Ne oluşturacaksınız?
- Çıkışta (agent-to-anywhere) Agent Gateway
- Identity-Aware Proxy (IAP) yetkilendirme uzantısı
- Ajan kimliğine sahip Agent Runtime ADK aracısı
- Google API ve MCP uç noktalarıyla Agent Registry
- Data Commons herkese açık veri kümelerine harici MCP aracı bağlantısı
- IAM erişim denetimi ile yetkilendirme politikaları
Şek. 1. Codelab mimarisi
Öğrenecekleriniz
- Agent Gateway'i yapılandırılmış bir yapılandırma sırasıyla dağıtma
- Yetkilendirme politikalarını prova modundan zorunlu moda geçirme
- Google API uç noktalarını ve MCP sunucularını Agent Registry'ye kaydetme
- MCP protokolü özelliklerine dayalı koşullu yetkilendirme politikalarını kullanma
- Çıkış yönetimi doğrulamak için aracı ağ geçidi günlükleri nasıl denetlenir?
İhtiyacınız olanlar
- Faturalandırmanın etkin olduğu bir Google Cloud projesi
- Ağ hizmetlerini ve aracı platformu kaynaklarını sağlama için IAM izinleri
- Google Cloud KSA'nın (
gcloudvebqbileşenleri) yüklü olduğu POSIX uyumlu bir kabuk (bashveyazsh) - Komut satırı araçları:
git,curl,jq(JSON işlemcisi), Python 3 veuv(Python paket yöneticisi) - Sorgu testi veri kümelerine erişmek için ücretsiz Data Commons API anahtarı
2. Kavramlar
Dağıtım sırası
Bu codelab, yapılandırılmış bir yapılandırma sırasını takip eder. Böylece, aracılar başlatma sırasında gerekli kaynaklara erişebilir ve zorunlu erişim politikaları uygulanmadan önce bağlantı doğrulanabilir.
Bu Codelab'de aşağıdaki dağıtım sırası kullanılır:
DRY_RUNmodunda başlatma: Aracı isteklerinin ağ geçidine başarıyla ulaştığından ve ağ geçidinden geçtiğinden (yalnızca denetim modu) emin olun.- Tüm hizmetleri kaydetme: Aracı Kaydı'ndaki tüm aracı bileşenlerini kaydedin ve aracı aracına erişimi onaylayın.
- Yetkilendirme politikaları oluşturma: Aracıların MCP sunucularına ve uç noktalarına giden trafiğe izin vermek için yetkilendirme politikaları oluşturun ve uygulayın.
ENFORCEDmoduna geçin: Politikaları zorunlu kılmak ve yetkisiz çıkış trafiğini engellemek için yetkilendirme uzantısı politikasını güncelleyin.
Şekil 2. Dağıtım sırası
Çıkış yönlendirme topolojisi
Agent Gateway çıkışı (agent-to-anywhere), ajan tabanlı iş yükleri için merkezi bir sıfır güven ilkeli giden proxy görevi görür. Bir aracı, harici bir araç veya API'ye istekte bulunduğunda giden istek, Agent Gateway tarafından yakalanır ve hedefine yönlendirilmeden önce yönetim politikalarına göre değerlendirilir. Google Cloud Agent Platform mimarisinde Agent Gateway, aşağıdaki öğelerle veri düzlemi bağlantısı sağlar:
- Özel ağlar (VPC): Şirket içi API'leri, mikro hizmetleri, özel VPC'lerde barındırılan veritabanlarını ve karma bağlantı üzerinden erişilebilen şirket içi veya bulutlar arası ağları hedefleyen giden trafik.
- Harici ağlar (İnternet): Üçüncü taraf web hizmetlerini, SaaS API'lerini veya herkese açık uç noktaları hedefleyen giden trafik.
- Yapay zeka hizmetleri ve aracı platformu: Yönetilen Google Cloud API'lerini, temel modelleri, Google MCP uç noktalarını (ör. BigQuery) ve platform yönetimi hizmetlerini (aracı kayıt defteri ve IAP politikaları) hedefleyen giden trafik.
Şekil 3. Agent Gateway çıkış yönlendirme topolojisi
Bu Codelab'in odak noktası, Agent Runtime'da bulunan özel bir aracıdan internet üzerinden erişilebilen harici bir üçüncü taraf MCP sunucusu uç noktasını hedefleyen giden trafiktir.
MCP protokolü denetimi
Agent Gateway çıkışı (agent-to-anywhere), MCP isteklerinin içeriklerini ayrıştırabilir ve erişim politikalarını ayrıntılı protokol özelliklerine göre değerlendirebilir. Aracıdan MCP sunucusuna çıkış politikaları, Common Expression Language (CEL) ile ifade edilen ve her istekte çalışma zamanında uygulanan koşullar içerebilir.
MCP çağrıları genellikle JSON-RPC kablo protokolü biçimini ve HTTP aktarımını kullanır. Çağrılan MCP yönteminin (ör. tools/call) ayrıntıları, hedef araç adı ve tüm bağımsız değişkenler HTTP gövdesindeki JSON yükünde yer alır.
iap.googleapis.com/mcp.toolName özelliği, Agent Gateway tarafından JSON gövdesi ayrıştırılarak istekte belirtilen araç tanımlayıcısı bulunarak çıkarılır.
iap.googleapis.com/mcp.tool.isReadOnly ve mcp.tool.isDestructive gibi özellikler genellikle her istek gövdesinde gönderilmez. Bunlar, araçla ilişkili ek açıklamalar (meta veriler) olarak gösterilir. Bu nedenle, Agent Gateway toolName değerini gövdeden çıkardığında toolspec.json içeriğinin kaydedildiği Agent Registry'den araç tanımını ve ilişkili özellikleri arar.
Şekil 4. Agent Gateway MCP incelemesi
IAP IAM koşullarında kullanılan CEL ifadeleri, api.getAttribute('iap.googleapis.com/ATTRIBUTE_NAME', 'DEFAULT_VALUE')== 'DESIRED_VALUE' standart biçimini kullanır.
Bu tabloda, MCP sunucu isteklerine uygulanabilecek Agent Gateway çıkış yönetimi özellikleri açıklanmaktadır:
Özellik | MCP Yöntemi / Konumu | Açıklama |
|
| RPC yükünde istenen hedef araç tanımlayıcısı (ör. |
| Agent Registry ( | Aracın salt okunur olup olmadığını (ortamını değiştirip değiştirmediğini) gösterir. |
| Agent Registry ( | Aracın çağrılmasının geri döndürülemez değişikliklere veya veri kaybına neden olup olmayacağını gösterir. |
| Agent Registry ( | Aynı bağımsız değişkenlerle tekrarlanan araç yürütme işleminin tam olarak aynı durumu oluşturup oluşturmadığını gösterir. |
| Agent Registry ( | Aracın, sınırlı dahili sistemlerin ötesine geçerek sınırsız herkese açık internete ulaşıp ulaşmadığını gösterir. |
Kavramlar bölümünü tamamladık. Şimdi Kurulum bölümüne geçiyoruz.
3. Kurulum
Gerekli IAM rolleri
Bu Codelab'deki kaynakları oluşturmak için aşağıdaki roller gereklidir:
Kategori | Gerekli IAM rolü (kimlik) | Açıklama |
API yönetimi |
| Google Cloud API hizmetlerini etkinleştirme |
Ağ ve ağ geçidi |
| Agent Gateway'i sağlama |
Hizmet uzantıları |
| Yönlendirme uzantılarını yapılandırma |
Ağ güvenliği |
| Yetkilendirme politikalarını dağıtma |
Agent Registry |
| Katalog için izin verilen ana makineler |
Vertex AI ve temsilciler |
| Agent Runtime iş yüklerini dağıtma |
Çıkış politikaları |
|
|
Cloud Storage |
| Dağıtım hazırlama paketlerini yönetme |
Günlükler ve denetleme |
| İzleri ve denetleme günlüklerini inceleme |
Alternatif olarak, roles/admin gibi geniş kapsamlı bir temel rol veya roles/owner gibi eski bir rol kullanın.
Projenize erişme
Bu Codelab'de tek bir Google Cloud projesi kullanılır. Yapılandırma adımlarında gcloud KSA'sı ve Linux kabuk komutları kullanılır.
Google Cloud projenizin komut satırına erişerek başlayın:
shell.cloud.google.comadresindeki Cloud Shell veyagcloudKSA'nın yüklü olduğu yerel bir terminal
Proje kimliğinizi ayarlama
gcloud config set project SET_YOUR_PROJECT_ID_HERE
Oturumun kimliğini doğrulama
# login to gcloud cli
gcloud auth login
# login for gcloud api
gcloud auth application-default login
Kabuk ortamı değişkenlerini ayarlama
# set custom var for slug (eg, "foo") and region preference
export SLUG="foo"
export REGION="us-central1"
export MREGION="us"
echo ${SLUG}
echo ${REGION}
echo ${MREGION}
# create project vars (automatic)
export PROJ_ID=$(gcloud config list --format="value(core.project)")
export PROJ_NO=$(gcloud projects describe ${PROJ_ID} --format="value(projectNumber)")
export ORG_ID=$(gcloud projects get-ancestors ${PROJ_ID} --format="value(id)" | tail -n 1)
echo ${PROJ_ID}
echo ${PROJ_NO}
echo ${ORG_ID}
# create resource vars (automatic)
export AGW_NAME="agw-${SLUG}-${REGION}-ata"
export AGW_URI="projects/${PROJ_ID}/locations/${REGION}/agentGateways/${AGW_NAME}"
export RE_AGENT_NAME="agent-datacommons"
export RE_AGENT_ID_SET="principalSet://agents.global.org-${ORG_ID}.system.id.goog/attribute.platformContainer/aiplatform/projects/${PROJ_NO}"
export STAGING_BUCKET="agent-staging-${PROJ_NO}"
export MCP_DISPLAY_NAME="api.datacommons.org"
export MCP_RESOURCE_NAME="${REGION}-datacommons-mcp"
export MCP_URL="https://api.datacommons.org/mcp"
echo ${AGW_NAME}
echo ${AGW_URI}
echo ${RE_AGENT_NAME}
echo ${RE_AGENT_ID_SET}
echo ${STAGING_BUCKET}
echo ${MCP_DISPLAY_NAME}
echo ${MCP_RESOURCE_NAME}
echo ${MCP_URL}
# create local dir for config files
mkdir -p cfg
gcloud cli uygulamasını güncelleyin (önerilen)
Google Cloud SDK'nın kendi kendine yönetilen bir yüklemesini (ör. Cloud Shell dışında) çalıştırıyorsanız bileşenleri en son sürüme güncelleyin.
# update gcloud cli
gcloud components update
API hizmetlerini etkinleştirme
# enable google apis (agent platform bundle, part 1)
gcloud services enable \
agentregistry.googleapis.com \
aiplatform.googleapis.com \
apphub.googleapis.com \
apptopology.googleapis.com \
cloudapiregistry.googleapis.com \
cloudtrace.googleapis.com \
compute.googleapis.com \
dataform.googleapis.com \
iam.googleapis.com \
iamconnectors.googleapis.com \
iap.googleapis.com \
logging.googleapis.com \
modelarmor.googleapis.com \
monitoring.googleapis.com \
networksecurity.googleapis.com \
networkservices.googleapis.com \
notebooks.googleapis.com \
observability.googleapis.com
# enable google apis (agent platform bundle, part 2)
gcloud services enable \
securitycenter.googleapis.com \
saasservicemgmt.googleapis.com \
storage.googleapis.com \
telemetry.googleapis.com \
texttospeech.googleapis.com
Kurulum bölümünün sonuna geldik. Şimdi Ağ Geçidi bölümüne geçiyoruz.
4. Ağ geçidi
Erişim kontrollerini zorunlu kılmadan önce Agent Gateway'i dağıtın ve yetkilendirme uzantısını DRY_RUN modunda yapılandırın. Bu, giden araç çağrılarının başarılı olmasına olanak tanırken denetim amacıyla değerlendirme sonuçlarını da kaydeder.
Burada Agent Gateway, bölgesel Agent Runtime kaynaklarını desteklemek için bölgesel bir kayıt defteri kullanır.
Ağ geçidi oluştur
# create agent gateway config file (regional registry)
cat > cfg/${AGW_NAME}.yaml << EOF
name: ${AGW_NAME}
protocols:
- MCP
googleManaged:
governedAccessPath: AGENT_TO_ANYWHERE
registries:
- "//agentregistry.googleapis.com/projects/${PROJ_ID}/locations/${REGION}"
EOF
# import agent gateway config file (create gateway)
gcloud network-services agent-gateways import ${AGW_NAME} \
--source="cfg/${AGW_NAME}.yaml" \
--location=${REGION}
# show agent gateway details (verify deployment state)
gcloud network-services agent-gateways describe ${AGW_NAME} \
--location=${REGION}
Ağ geçidi bölümünü tamamladık. Şimdi Yetkilendirme bölümüne geçiyoruz.
5. Yetkilendirme
Identity-Aware Proxy (IAP) için Agent Gateway yetkilendirme uzantısı, tüm Agent Platform iletişimleri için yetkilendirme kararlarını temsilciye devretmek üzere kullanılan bir hizmet uzantısı türüdür.
- Yetkilendirme akışı: Bir aracı, harici bir uç noktayı veya MCP sunucusunu çağırmaya çalıştığında isteği Agent Gateway'e yönlendirir. Ağ geçidi, erişimi yerel olarak değerlendirmek yerine yetkilendirme uzantısını kullanarak IAP değerlendirme hizmetine bir açıklama metni gönderir. IAP, temsilci (SPIFFE tabanlı) kimliğini, Temsilci Kayıt Defteri'ndeki hedef kaynağın IAM politikasına göre değerlendirir. IAP, ağ geçidine
ALLOWveyaDENYkararı döndürür. Ağ geçidi, trafiği iletir ya da HTTP403 Forbiddendurum koduyla engeller. - Zorunlu kılma modları:
DRY_RUNmodunda IAP, istekleri değerlendirir ve trafiği engellemeden kararları Cloud Logging'e kaydeder.ENFORCEmodunda, yetkisiz bir aracıdan gelen veya kayıtlı olmayan bir hedefe yönelik tüm istekler anında engellenir. - Bağlama katmanı: Hizmet uzantısı,
REQUEST_AUTHZprofiliyle yapılandırılmış bir yetkilendirme politikası kullanılarak Agent Gateway'e bağlanır.
Yetkilendirme uzantısı
Yetkilendirme uzantısı oluşturma
# create authz extension config file (dry run mode)
cat > cfg/${AGW_NAME}-svc-ext-authz-iap-dryrun.yaml << EOF
name: ${AGW_NAME}-svc-ext-authz-iap-dryrun
service: iap.googleapis.com
failOpen: true
timeout: 1s
metadata:
iamEnforcementMode: "DRY_RUN"
iapPolicyVersion: "V1"
EOF
# import authz extension file (create extension)
gcloud service-extensions authz-extensions import ${AGW_NAME}-svc-ext-authz-iap-dryrun \
--source=cfg/${AGW_NAME}-svc-ext-authz-iap-dryrun.yaml \
--location=${REGION}
# show authz extension details (verify extension state)
gcloud service-extensions authz-extensions describe ${AGW_NAME}-svc-ext-authz-iap-dryrun \
--location=${REGION}
Yetkilendirme politikası
Yetkilendirme politikası, güvenlik sağlayıcıyı (IAP) hedef ağ geçidi kaynağına bağlar ve yakalama profilini (REQUEST_AUTHZ) belirtir.
Yetkilendirme politikası oluşturma
# create authz policy config file (attach dry-run authz extension)
cat > cfg/${AGW_NAME}-authz-policy-profile-iap.yaml << EOF
name: ${AGW_NAME}-authz-policy-profile-iap
target:
resources:
- "projects/${PROJ_ID}/locations/${REGION}/agentGateways/${AGW_NAME}"
policyProfile: REQUEST_AUTHZ
action: CUSTOM
customProvider:
authzExtension:
resources:
- "projects/${PROJ_ID}/locations/${REGION}/authzExtensions/${AGW_NAME}-svc-ext-authz-iap-dryrun"
EOF
# import authz policy config file (enable authz policy)
gcloud beta network-security authz-policies import ${AGW_NAME}-authz-policy-profile-iap \
--source=cfg/${AGW_NAME}-authz-policy-profile-iap.yaml \
--location=${REGION}
# show authz policy details (verify dry run mode)
gcloud beta network-security authz-policies describe ${AGW_NAME}-authz-policy-profile-iap \
--location=${REGION}
Yetkilendirme bölümünü tamamladık. Şimdi Kod Tabanı bölümüne geçiyoruz.
6. Kod tabanı
Bu Codelab'de kullanılan aracı kodu ve uç nokta kaydı komut dosyası, uzak bir Google Cloud GitHub deposunda tutulur. Aşağıdaki adımlar, depoyu yerel olarak klonlar, gerekli dosyaları mevcut çalışma dizini yapısına kopyalar ve ardından geçici dosyaları temizler.
Agent Runtime'ın paketlenmiş aracı uygulama kodunu ve bağımlılık yapılarını yüklemesi, oluşturması ve dağıtması için bir depolama hazırlama paketi oluşturulur.
Uzak yapıları getirme
# clone remote repository to temp local dir
git clone https://github.com/GoogleCloudPlatform/cloud-networking-solutions.git ./temp_agw_cuj_arun_egress_emcp
# copy agent runtime and endpoint definitions to working project dir
cp -r temp_agw_cuj_arun_egress_emcp/codelabs/agw-cuj-arun-egress-emcp/agent-datacommons ./agent-datacommons
cp -r temp_agw_cuj_arun_egress_emcp/codelabs/agw-cuj-arun-egress-emcp/endpoints ./endpoints
# remove temporary directory
rm -rf temp_agw_cuj_arun_egress_emcp
Hazırlık paketi oluşturma
# create storage bucket for agent deployment artifacts
gcloud storage buckets create gs://${STAGING_BUCKET} --location=${REGION}
# verify staging bucket url
gcloud storage buckets list --format="value(storage_url)"
Kod tabanı bölümünü tamamladık. Şimdi Kayıt Defteri bölümüne geçiyoruz.
7. Kayıt otoritesi
Agent Registry, yapay zeka ekosistemindeki tüm aracıların, MCP sunucularının ve uç noktaların (API'ler) merkezi bir envanteridir. Ayrıca, yapay zeka uygulamalarının kullanabileceği diğer kayıtlı araç ve hizmetleri listelemek, aramak ve keşfetmek için kullanılabilecek bir katalogdur. Aracı Ağ Geçidi çıkış (agent-to-anywhere) modu, çıkış erişim denetimini zorunlu kılmak için kayıt veri modelini yönetim çerçevesi olarak kullanır. Arayan aracı için IAM rolü izinleri, kayıt kaynağına bağlı politika ile karşılaştırılarak kontrol edilir.
Ortamı başlatmak ve çeşitli Google API'leri ve Hizmetleri'ni kullanan aracıları desteklemek için endpoints/googleapis.txt'daki ana makine adlarını ve konumları kullanarak ortak bir API uç noktaları grubunu hızlıca kaydetmek için bir komut dosyası kullanılır.
Uç noktaları kaydetme
# run python script to register google api endpoints
python3 endpoints/register_endpoints.py \
--multi-region=${MREGION} \
--region=${REGION} \
--mtls-endpoints=include
Uç noktaları doğrulama
# list registry regional endpoints (verify registration)
gcloud agent-registry endpoints list --location=${REGION} \
--format="table(displayName, name.basename():label=ENDPOINT_ID, interfaces[0].url:label=URL)"
Kayıt bölümünü tamamladık. Şimdi Data Commons bölümüne geçiyoruz.
8. Data Commons
Data Commons, herkese açık veri kümelerini düzenleyerek herkesin kullanımına ve erişimine sunmayı amaçlayan bir Google girişimidir. Ücretsiz bir hizmettir ve hesap oluşturduktan sonra API anahtarı kullanılarak erişilebilir.
API anahtarı oluştur
Hesap oluşturduktan sonra API anahtarı almak için aşağıdaki adımları uygulayın:
- Data Commons API Portal'a giriş yapın.
- Sağ üst köşedeki "Uygulamalarım" düğmesini tıklayın.
- Kullanıcı adınızın altındaki sağ üst köşede "+ YENİ UYGULAMA" düğmesini tıklayın.
- Uygulamanıza bir ad verin (ör. "Codelab Agent MCP").
- Data Commons API için "ETKİNLEŞTİR" düğmesini tıklayın.
api.datacommons.org - Sağ alt köşedeki "KAYDET" düğmesini tıklayın.
Bu işlemle bir API anahtarı ve gizli anahtar oluşturulur. "API anahtarını kopyalamak" için anahtar değerinin yanındaki "kopyala" simgesini tıklayın. Değeri, DC_API_KEY ortam değişkenini ayarlamak için terminal komutuna yapıştırın.
# set api key env var
export DC_API_KEY="YOUR_API_KEY_HERE"
MCP sunucusu oluşturma toolspec
MCP sunucusu manuel olarak kaydedilirken kayıt sırasında bir araç spesifikasyon dosyası eklenmelidir. toolspec.json dosyası yüklemek, uç nokta tarafından kullanıma sunulan tüm araçları listeler ve diğer kullanıcıların bunları keşfetmesine olanak tanır.
test_mcp.py komut dosyası, agent-datacommons/ kod tabanında yer alır. Hedef MCP sunucusuna (SSE veya HTTP üzerinden) bağlanarak bir toolspec.json dosyası oluşturur ve sunucu tarafından kullanıma sunulan tüm araçları almak için list_tools() işlevini çağırır.
# generate toolspec for registry ingestion
uv --directory agent-datacommons run python3 test_mcp.py --toolspec=include --token="${DC_API_KEY}"
Oluşturulan toolspec çıktısına bakıldığında, Agent Gateway'in çıkış politikası değerlendirmesi ve zorunlu kılma için kullanabileceği MCP özellikleri gösterilir.
# show toolspec mcp attributes
jq '.tools[] | {name, isReadOnly, isDestructive, isIdempotent, isOpenWorld}' agent-datacommons/toolspec.json
MCP sunucusunu kaydetme
# register mcp server
gcloud agent-registry services create ${MCP_RESOURCE_NAME} \
--location=${REGION} \
--display-name="${MCP_DISPLAY_NAME}" \
--description="mcp server for data commons" \
--mcp-server-spec-type=tool-spec \
--mcp-server-spec-content=agent-datacommons/toolspec.json \
--interfaces=url=${MCP_URL},protocolBinding=JSONRPC
# list registry regional mcp servers
gcloud agent-registry mcp-servers list --location=${REGION} --format="table(displayName, interfaces.url)"
# show mcp server registry details
gcloud agent-registry services describe ${MCP_RESOURCE_NAME} --location=${REGION}
# fetch mcp server registry id
export MCP_REGISTRY_ID=$(gcloud agent-registry services describe ${MCP_RESOURCE_NAME} \
--location=${REGION} \
--format="value(registryResource.basename())")
echo ${MCP_REGISTRY_ID}
Data Commons bölümünü tamamladık. Şimdi Runtime bölümüne geçiyoruz.
9. Çalışma zamanı
Agent Runtime'a dağıtılan agent-datacommons ADK aracısı, Agent Platform ile entegrasyon için dağıtım komut dosyasında aşağıdaki ayarlarla yapılandırılır:
"identity_type": types.IdentityType.AGENT_IDENTITY, aracı için SPIFFE tabanlı benzersiz bir asıl kimlik sağlamak üzere- Giden tüm aracı tarafından başlatılan trafiği politika değerlendirmesi ve yaptırımı için aracı ağ geçidine yönlendirmek üzere
"agent_gateway_config": { "agent_to_anywhere_config": {"agent_gateway": } }
Ajanı dağıtma
# deploy agent runtime workload
uv --directory agent-datacommons run python3 deploy_agent.py \
--project=${PROJ_ID} \
--region=${REGION} \
--src-dir=./agent \
--staging-bucket=${STAGING_BUCKET} \
--display-name="${RE_AGENT_NAME}" \
--description="agent for data commons stats" \
--enable-telemetry \
--enable-agent-identity \
--agent-gateway-egress=${AGW_URI} \
--env-var="DC_API_KEY=${DC_API_KEY}"
Dağıtım önemli verilerini getirme
# fetch agent runtime resource (reasoning engine) id
export RE_ENGINE_ID=$(curl -s -X GET \
"https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJ_ID}/locations/${REGION}/reasoningEngines" \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" | \
jq -r --arg name "${RE_AGENT_NAME}" '.reasoningEngines[] | select(.displayName==$name) | .name | split("/") | last')
echo ${RE_ENGINE_ID}
# fetch agent runtime (reasoning engine) agent identity
export RE_AGENT_IDENTITY=$(gcloud agent-registry agents list \
--location=${REGION} --filter="displayName=${RE_AGENT_NAME}" \
--format="value(attributes.'agentregistry.googleapis.com/system/RuntimeIdentity'.principal)")
echo ${RE_AGENT_IDENTITY}
# fetch agent registry uid for agent
export RE_AGENT_REGISTRY_ID=$(gcloud agent-registry agents list \
--location=${REGION} \
--filter="displayName=${RE_AGENT_NAME}" \
--format="value(uid)")
echo ${RE_AGENT_REGISTRY_ID}
Kayıt defteri girişini doğrulama
# show agent resource registry details
gcloud agent-registry agents describe ${RE_AGENT_REGISTRY_ID} --location=${REGION}
10. Politikalar
Aracı yönetimi yetkilendirme politikaları, bir yapay zeka aracısından gelen trafiğin Aracı Ağ Geçidi üzerinden ve hedefe (ör. bir SaaS uygulaması için üçüncü taraf MCP sunucusu uç noktası) ulaşmasına izin verir. Trafik hedefe ulaştığında, normal hizmet düzeyi veya uygulama düzeyi izinler veri erişimini yetkilendirir.
Agent Gateway çıkışı için IAM rolü verme, aracı asıl kimliğinin Agent Gateway üzerinden kayıtlı hedef kaynaklara erişmesine izin veren erişim politikalarını etkinleştirir. Politikalar, aracı ağ geçidi düzeyinde uygulanır ve Identity-Aware Proxy (IAP) IAM politikaları kullanılarak doğrulanır.
Agent Gateway çıkışı için aracıya IAM rolleri verme
Agent Gateway, gelen istekleri kontrol ederek arayan aracının kimliğinin hedef kaynakta iap.webServiceVersions.egressViaIAP iznine (roles/iap.egressor rolü tarafından verilir) sahip olduğunu doğrular.
Seçilen hedef kaynakta ajan kimliğine veya Agent Runtime asıl kümesine roles/iap.egressor izni verilmesi, bu çıkış trafiğine izin verir. Bu codelab'de rol, belirli Agent Runtime aracı kimliğine izin veren agent ana hesabına uygulanır.
IAM politikaları, Agent Registry veri modelinde tanımlandığı şekilde hedef kaynaklara bağlıdır. iap_web/agentRegistry kaynağı, IAM hiyerarşisinde "kayıt genelinde" bir düzeyi temsil eder. Burada agentRegistry, agents, mcpServers ve endpoints için ayrı ayrı alt kaynakların üst öğesi olarak kullanılır. Bu codelab'de, IAM politikası mcpServer ve endpoint düzeylerine bağlıdır. Bu düzeyler, izni belirli alt kaynaklara uygular.
Koşullu MCP filtreleme hakkında
Data Commons MCP sunucusunda iki araç bulunur:
search_indicators: Hangi verilerin mevcut olduğunu keşfetme, değişken arama veya veri kapsamını anlama ile ilgili sorgular içinget_observations: belirli veri noktalarını veya zaman serilerini almak için yapılan sorgular
MCP sunucularında koşullu yönetim politikaları yapılandırırken dikkat etmeniz gereken bazı standart MCP işlemleri vardır. Bir MCP istemcisinin tools/call için search_indicators veya get_observations yapabilmesi için öncelikle protokol el sıkışması ve keşif istekleri göndermesi gerekir:
initializenotifications/initializedtools/list
Koşullu politika filtrelemeyi göstermek için politika şu koşullara göre yapılandırılacak:
Tablo. MCP istekleri için politika değerlendirmesi
İstek / Yöntem |
| CEL Değerlendirmesi | Sonuç |
|
|
| ✅ İZİN VERİLİR (200) |
|
|
| ✅ İZİN VERİLİR (200) |
|
|
| ✅ İZİN VERİLİR (200) |
|
|
| ❌ DENIED (403) |
Protokol el sıkışmalarına ve search_indicators araç çağrısına izin vermek için koşullu politika kuralı, "search_indicators" veya "" (boş dize) için izin içerir.
Kayıt defteri IAP MCP sunucusu IAM politikasını yapılandırma
# show iap iam policy for mcp server
gcloud beta iap web get-iam-policy \
--region=${REGION} \
--resource-type=agent-registry \
--mcp-server=${MCP_REGISTRY_ID}
NOT: Henüz politika tanımlanmadığı için etag:, varsayılan ACAB değerini döndürmelidir.
# fetch active etag on policy for mcp server
export IAP_ETAG=$(gcloud beta iap web get-iam-policy \
--resource-type=agent-registry --region=${REGION} \
--mcp-server=${MCP_REGISTRY_ID} --format="value(etag)")
echo ${IAP_ETAG}
# create policy config file
cat > cfg/iap-policy-dc-agent-to-dc-mcp-tool-1.json << EOF
{
"bindings": [
{
"role": "roles/iap.egressor",
"members": [
"${RE_AGENT_IDENTITY}"
],
"condition": {
"title": "allow ${RE_AGENT_NAME} to use search_indicators tool for ${MCP_DISPLAY_NAME}",
"expression": "api.getAttribute('iap.googleapis.com/mcp.toolName', '') in ['search_indicators', '']"
}
}
],
"etag": "${IAP_ETAG}",
"version": 3
}
EOF
# import policy file (bind iam policy)
gcloud beta iap web set-iam-policy cfg/iap-policy-dc-agent-to-dc-mcp-tool-1.json \
--resource-type=agent-registry \
--mcp-server=${MCP_REGISTRY_ID} \
--region=${REGION}
# verify iap iam policy for mcp server
gcloud beta iap web get-iam-policy \
--region=${REGION} \
--resource-type=agent-registry \
--mcp-server=${MCP_REGISTRY_ID}
Politikalar bölümümüzün sonuna geldik. Şimdi Denetim bölümüne geçiyoruz.
11. Denetim
Agent Gateway yetkilendirme uzantısı DRY_RUN modunda çalışıyor. Giden istekler gözlemlenir ve günlüğe kaydedilir ancak engellenmez.
Test temsilcisi sorguları
Google Cloud Console kullanıcı arayüzü için bir tarayıcı penceresi açın ve şuraya gidin:
- Agent Platform → Agents → Deployments →
agent-datacommons - Playground sekmesini seçin.
Alternatif olarak, bu terminal komutunu tekrarlayın ve bağlantıyı tıklayarak aracı deneme alanına gidin:
# playground
echo "https://console.cloud.google.com/agent-platform/runtimes/locations/${REGION}/agent-engines/${RE_ENGINE_ID}/playground?project=${PROJ_ID}"
Bazı test sorguları gönderin....
What data do you have on water quality in Zimbabwe?Compare the life expectancy, economic inequality, and GDP growth for BRICS nations
Sorguların geçerli yanıtlar döndürdüğünü doğrulayın.
Denetleme günlüklerini analiz etme
Günlükleri görüntüleyin ve deneme amaçlı politika değerlendirmelerini inceleyin.
# list unique urls with http status and iap authorization result
gcloud logging read \
"resource.type=\"networkservices.googleapis.com/Gateway\" \
AND httpRequest.requestUrl:*" \
--project=${PROJ_ID} \
--limit=200 \
--format="value(httpRequest.status, jsonPayload.authzPolicyInfo.result, httpRequest.requestUrl)" | sort -u
200 ALLOWED https://api.datacommons.org/mcp
200 ALLOWED https://cloudresourcemanager.googleapis.com:443/google.cloud.resourcemanager.v3.Projects/GetProject
200 ALLOWED https://telemetry.googleapis.com/v1/traces
200 ALLOWED https://${REGION}-aiplatform.googleapis.com/v1beta1/projects/${PROJ_ID}/locations/${REGION}/publishers/google/models/gemini-2.5-flash:generateContent
200 ALLOWED https://${REGION}-aiplatform.googleapis.com/v1beta1/projects/${PROJ_ID}/locations/${REGION}/reasoningEngines/${RE_ENGINE_ID}/sessions/${RE_SESSION_ID}
200 ALLOWED https://${REGION}-aiplatform.googleapis.com/v1beta1/projects/${PROJ_ID}/locations/${REGION}/reasoningEngines/${RE_ENGINE_ID}/sessions/${RE_SESSION_ID}:appendEvent
200 ALLOWED https://${REGION}-aiplatform.googleapis.com/v1beta1/projects/${PROJ_ID}/locations/${REGION}/reasoningEngines/${RE_ENGINE_ID}/sessions/${RE_SESSION_ID}/events
202 ALLOWED https://api.datacommons.org/mcp
Kayıt defteri IAP uç noktaları IAM politikasını güncelleme
Telemetri uç noktası için aracı çıkış izni verme
# set var for endpoint display name
export ENDPOINT_1_DISPLAY_NAME="telemetry.googleapis.com"
echo ${ENDPOINT_1_DISPLAY_NAME}
# fetch endpoint registry id
export ENDPOINT_1_REGISTRY_ID=$(gcloud agent-registry services list \
--location=${REGION} \
--filter="displayName=${ENDPOINT_1_DISPLAY_NAME}" \
--format="value(registryResource.basename())")
echo ${ENDPOINT_1_REGISTRY_ID}
# create policy config file
cat > cfg/iap-policy-re-agent-to-ep-1.json << EOF
{
"bindings": [
{
"role": "roles/iap.egressor",
"members": [
"${RE_AGENT_IDENTITY}"
]
}
]
}
EOF
# import policy file (bind iam policy)
gcloud -q beta iap web set-iam-policy cfg/iap-policy-re-agent-to-ep-1.json \
--resource-type=agent-registry \
--endpoint=${ENDPOINT_1_REGISTRY_ID} \
--region=${REGION}
# verify iap iam policy for telemetry endpoint
gcloud beta iap web get-iam-policy \
--region=${REGION} \
--resource-type=agent-registry \
--endpoint=${ENDPOINT_1_REGISTRY_ID}
aiplatform uç noktası için aracı çıkış izinleri verme
# set var for endpoint display name
export ENDPOINT_2_DISPLAY_NAME="${REGION}-aiplatform.googleapis.com"
echo ${ENDPOINT_2_DISPLAY_NAME}
# fetch endpoint registry id
export ENDPOINT_2_REGISTRY_ID=$(gcloud agent-registry services list \
--location=${REGION} \
--filter="displayName=${ENDPOINT_2_DISPLAY_NAME}" \
--format="value(registryResource.basename())")
echo ${ENDPOINT_2_REGISTRY_ID}
# create policy config file
cat > cfg/iap-policy-re-agent-to-ep-2.json << EOF
{
"bindings": [
{
"role": "roles/iap.egressor",
"members": [
"${RE_AGENT_IDENTITY}"
]
}
]
}
EOF
# import policy file (bind iam policy)
gcloud -q beta iap web set-iam-policy cfg/iap-policy-re-agent-to-ep-2.json \
--resource-type=agent-registry \
--endpoint=${ENDPOINT_2_REGISTRY_ID} \
--region=${REGION}
# verify iap iam policy for aiplatform endpoint
gcloud beta iap web get-iam-policy \
--region=${REGION} \
--resource-type=agent-registry \
--endpoint=${ENDPOINT_2_REGISTRY_ID}
Cloudresourcemanager uç noktası için aracı çıkış izinleri verme
# set var for endpoint display name
export ENDPOINT_3_DISPLAY_NAME="cloudresourcemanager.googleapis.com"
echo ${ENDPOINT_3_DISPLAY_NAME}
# fetch endpoint registry id
export ENDPOINT_3_REGISTRY_ID=$(gcloud agent-registry services list \
--location=${REGION} \
--filter="displayName=${ENDPOINT_3_DISPLAY_NAME}" \
--format="value(registryResource.basename())")
echo ${ENDPOINT_3_REGISTRY_ID}
# create policy config file
cat > cfg/iap-policy-re-agent-to-ep-3.json << EOF
{
"bindings": [
{
"role": "roles/iap.egressor",
"members": [
"${RE_AGENT_IDENTITY}"
]
}
]
}
EOF
# import policy file (bind iam policy)
gcloud -q beta iap web set-iam-policy cfg/iap-policy-re-agent-to-ep-3.json \
--resource-type=agent-registry \
--endpoint=${ENDPOINT_3_REGISTRY_ID} \
--region=${REGION}
# verify iap iam policy for cloudresourcemanager endpoint
gcloud beta iap web get-iam-policy \
--region=${REGION} \
--resource-type=agent-registry \
--endpoint=${ENDPOINT_3_REGISTRY_ID}
Denetim bölümümüzün sonuna geldik. Şimdi Uygulama bölümüne geçiyoruz.
12. Zorunlu kıl
Aracı, DRY_RUN modunda ağ geçidi üzerinden başarılı istekler gönderebildi. Yetkilendirme politikasını güncelleyerek Agent Gateway IAP yetkilendirme uzantısını ENFORCE moduna geçirin.
Yetkilendirme uzantısını güncelleme
# create authz extension config file (enforced mode)
cat > cfg/${AGW_NAME}-svc-ext-authz-iap-enforced.yaml << EOF
name: ${AGW_NAME}-svc-ext-authz-iap-enforced
service: iap.googleapis.com
failOpen: false
timeout: 1s
metadata:
iapPolicyVersion: "V1"
EOF
# import authz extension file (create extension)
gcloud service-extensions authz-extensions import ${AGW_NAME}-svc-ext-authz-iap-enforced \
--source=cfg/${AGW_NAME}-svc-ext-authz-iap-enforced.yaml \
--location=${REGION}
# list authz extensions (imported configs)
gcloud service-extensions authz-extensions list --location=${REGION}
Yetkilendirme politikasını güncelleme
# re-write authz policy config file (pointing to enforced authz extension)
cat > cfg/${AGW_NAME}-authz-policy-profile-iap.yaml << EOF
name: ${AGW_NAME}-authz-policy-profile-iap
target:
resources:
- "projects/${PROJ_ID}/locations/${REGION}/agentGateways/${AGW_NAME}"
policyProfile: REQUEST_AUTHZ
action: CUSTOM
customProvider:
authzExtension:
resources:
- "projects/${PROJ_ID}/locations/${REGION}/authzExtensions/${AGW_NAME}-svc-ext-authz-iap-enforced"
EOF
# import authz policy config file (enable new authz policy)
gcloud beta network-security authz-policies import ${AGW_NAME}-authz-policy-profile-iap \
--source=cfg/${AGW_NAME}-authz-policy-profile-iap.yaml \
--location=${REGION}
# show authz policy details (verify enforced mode)
gcloud beta network-security authz-policies describe ${AGW_NAME}-authz-policy-profile-iap \
--location=${REGION}
Koşullu izni doğrulama
Konsol kullanıcı arayüzünde aracı Playground'a geri dönün.
Ek bir test sorgusu gönderin (izin verilensearch_indicators aracı çağırmayı deneyin)...
What data topics do you have for Peru?
Gemini temel modeline (${REGION}-aiplatform.googleapis.com/...), Telemetri API'sine (telemetry.googleapis.com/...) ve Data Commons MCP sunucusu uç noktasına (api.datacommons.org/mcp) yapılan aracı isteklerinin HTTP 200 OK durum kodlarıyla iletildiğini gözlemleyin.
# show gateway logs for http requests
gcloud logging read \
"resource.type=\"networkservices.googleapis.com/Gateway\" \
AND httpRequest.requestUrl:*" \
--project=${PROJ_ID} \
--limit=10 \
--format="table(
timestamp.date(tz=LOCAL):label=TIMESTAMP,
httpRequest.requestMethod:label=METHOD,
httpRequest.status:label=STATUS,
jsonPayload.authzPolicyInfo.result:label=IAP_AUTHZ,
jsonPayload.agentGatewayInfo.mcpInfo.method:label=MCP_METHOD,
httpRequest.requestUrl:label=URL)"
Engellenen istek olup olmadığını kontrol edin. Ağ geçidi denetleme günlüklerinde HTTP 403 Forbidden durum kodlarıyla reddedilen çıkış girişimlerini arayın.
# show gateway logs for authz denies
gcloud logging read \
"resource.type=\"networkservices.googleapis.com/Gateway\" \
AND (jsonPayload.authzPolicyInfo.result=\"DENIED\" OR httpRequest.status=403)" \
--project=${PROJ_ID} \
--limit=10 \
--format="table(
timestamp.date(tz=LOCAL):label=TIMESTAMP,
httpRequest.requestMethod:label=METHOD,
httpRequest.status:label=STATUS,
jsonPayload.enforcedGatewaySecurityPolicy.serverNameIndication:label=SNI,
jsonPayload.authzPolicyInfo.result:label=AUTHZ_RESULT,
jsonPayload.authzPolicyInfo.policies[0].name.basename():label=DENYING_POLICY
)"
# show gateway logs for mcp requests with method and tool name
gcloud logging read \
"resource.type=\"networkservices.googleapis.com/Gateway\" \
AND jsonPayload.agentGatewayInfo.mcpInfo.method:*" \
--project=${PROJ_ID} \
--limit=10 \
--format="table(
timestamp.date(tz=LOCAL):label=TIMESTAMP,
httpRequest.status:label=STATUS,
jsonPayload.authzPolicyInfo.result:label=IAP_AUTHZ,
jsonPayload.agentGatewayInfo.mcpInfo.method:label=MCP_METHOD,
jsonPayload.agentGatewayInfo.mcpInfo.parameter:label=TOOL_NAME,
httpRequest.requestUrl:label=URL
)"
Koşullu reddetme işlemini doğrulama
Ek bir test sorgusu gönderin (reddedilenget_observations aracını çağırmaya çalışın)...
What are the diabetes levels in Peru compared to Slovakia?
Temsilci önce search_indicators'ya bakar, ardından get_observations'yi kullanmaya çalışır ancak başarısız olur ve temsilci yanıtı tamamlanmaz.
# show gateway logs for mcp requests with method and tool name
gcloud logging read \
"resource.type=\"networkservices.googleapis.com/Gateway\" \
AND jsonPayload.agentGatewayInfo.mcpInfo.method:*" \
--project=${PROJ_ID} \
--limit=10 \
--format="table(
timestamp.date(tz=LOCAL):label=TIMESTAMP,
httpRequest.status:label=STATUS,
jsonPayload.authzPolicyInfo.result:label=IAP_AUTHZ,
jsonPayload.agentGatewayInfo.mcpInfo.method:label=MCP_METHOD,
jsonPayload.agentGatewayInfo.mcpInfo.parameter:label=TOOL_NAME,
httpRequest.requestUrl:label=URL
)"
TIMESTAMP STATUS IAP_AUTHZ MCP_METHOD TOOL_NAME URL
YYYY-MM-DDTHH:MM:SS 403 DENIED tools/call get_observations https://api.datacommons.org/mcp
YYYY-MM-DDTHH:MM:SS ALLOWED tools/call get_observations https://api.datacommons.org/mcp
YYYY-MM-DDTHH:MM:SS 403 DENIED tools/call get_observations https://api.datacommons.org/mcp
YYYY-MM-DDTHH:MM:SS 200 ALLOWED tools/call search_indicators https://api.datacommons.org/mcp
YYYY-MM-DDTHH:MM:SS 200 ALLOWED tools/list https://api.datacommons.org/mcp
YYYY-MM-DDTHH:MM:SS 202 ALLOWED notifications/initialized https://api.datacommons.org/mcp
Bu işlem, yönetim politikasının beklendiği gibi çalıştığını doğrular.
Boş durumu ve ALLOWED simgesini gösteren ikinci satırın, 403 yanıtı gönderildikten sonra soket kapatılırken Agent Gateway tarafından yayınlanan ikincil bir bağlantı kapatma günlük etkinliği olduğunu unutmayın (bağlantı kapatma etkinliklerinde yanıt durumu kodları olmadığından httpRequest.status boş olur).
Yaptırım bölümünü tamamladık. Şimdi Temizleme bölümüne geçiyoruz.
13. Temizleme
# delete agent
curl -s -X DELETE "https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJ_ID}/locations/${REGION}/reasoningEngines/${RE_ENGINE_ID}?force=true" \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)"
# next
# delete storage bucket
gcloud -q storage rm --recursive gs://${STAGING_BUCKET}
# next
# clear policy on mcp server
export IAP_ETAG=$(gcloud beta iap web get-iam-policy --resource-type=agent-registry --mcp-server=${MCP_REGISTRY_ID} --region=${REGION} --format="value(etag)")
cat > cfg/iap-policy-empty.json << EOF
{
"bindings": [],
"etag": "${IAP_ETAG}"
}
EOF
gcloud -q beta iap web set-iam-policy cfg/iap-policy-empty.json \
--resource-type=agent-registry \
--mcp-server=${MCP_REGISTRY_ID} \
--region=${REGION}
# next
# clear policy on endpoint 1
export IAP_ETAG=$(gcloud beta iap web get-iam-policy --resource-type=agent-registry --endpoint=${ENDPOINT_1_REGISTRY_ID} --region=${REGION} --format="value(etag)")
cat > cfg/iap-policy-empty.json << EOF
{
"bindings": [],
"etag": "${IAP_ETAG}"
}
EOF
gcloud -q beta iap web set-iam-policy cfg/iap-policy-empty.json \
--resource-type=agent-registry \
--endpoint=${ENDPOINT_1_REGISTRY_ID} \
--region=${REGION}
# next
# clear policy on endpoint 2
export IAP_ETAG=$(gcloud beta iap web get-iam-policy --resource-type=agent-registry --endpoint=${ENDPOINT_2_REGISTRY_ID} --region=${REGION} --format="value(etag)")
cat > cfg/iap-policy-empty.json << EOF
{
"bindings": [],
"etag": "${IAP_ETAG}"
}
EOF
gcloud -q beta iap web set-iam-policy cfg/iap-policy-empty.json \
--resource-type=agent-registry \
--endpoint=${ENDPOINT_2_REGISTRY_ID} \
--region=${REGION}
# next
# clear policy on endpoint 3
export IAP_ETAG=$(gcloud beta iap web get-iam-policy --resource-type=agent-registry --endpoint=${ENDPOINT_3_REGISTRY_ID} --region=${REGION} --format="value(etag)")
cat > cfg/iap-policy-empty.json << EOF
{
"bindings": [],
"etag": "${IAP_ETAG}"
}
EOF
gcloud -q beta iap web set-iam-policy cfg/iap-policy-empty.json \
--resource-type=agent-registry \
--endpoint=${ENDPOINT_3_REGISTRY_ID} \
--region=${REGION}
# next
# remove manual registry entry
gcloud -q agent-registry services delete ${MCP_RESOURCE_NAME} --location=${REGION}
# delete gateway resources
gcloud -q beta network-security authz-policies delete ${AGW_NAME}-authz-policy-profile-iap --location=${REGION}
gcloud -q beta service-extensions authz-extensions delete ${AGW_NAME}-svc-ext-authz-iap-dryrun --location=${REGION}
gcloud -q beta service-extensions authz-extensions delete ${AGW_NAME}-svc-ext-authz-iap-enforced --location=${REGION}
gcloud -q network-services agent-gateways delete ${AGW_NAME} --location=${REGION}
# next
# clean up local working directories and generated configs
rm -rf cfg agent-datacommons endpoints
# end
Temizleme bölümümüzü tamamladık. Şimdi Sonuç bölümüne geçiyoruz.
14. Sonuç
Tebrikler! Agent Gateway'i kullanarak araçlara erişen bir aracı için giden iletişimi başarıyla dağıttınız ve yönetiyorsunuz.

Cosmopup, Codelab'lerin çok iyi olduğunu düşünüyor.
Sırada ne var?
- Gelişmiş özellikler ve eğitimler için Gemini Enterprise Agent Platform belgelerine göz atın.
- Ek yapay zeka güvenliği için Agent Gateway'de Model Armor korumalarını yapılandırma
- Doğal dil sorgularında işletme kurallarını ve uygunluğu zorunlu kılmak için Anlamsal Yönetim Politikaları'nı inceleyin.
Bu geri bildirim formunu kullanarak yorum, soru veya düzeltme önerilerinizi paylaşabilirsiniz.
Teşekkürler!