באמצעות Agent Gateway אתם יכולים לנהל את התנועה היוצאת מסוכני ה-AI שאתם יוצרים ומארחים ב-Cloud Run. אם תנתבו את התנועה היוצאת משירות Cloud Run דרך Agent Gateway בניהול עצמי שפועל ב-Secure Web Proxy, תוכלו לאכוף כללי מדיניות גישה ריכוזיים, לבדוק את המטען הייעודי (payload) כדי לוודא שהתוכן בטוח ולאסוף נתוני טלמטריה של ניראות בעומסי העבודה של הסוכנים.
במאמר הזה מוסבר איך להגדיר ארכיטקטורה ריכוזית ל-Agent Gateway ב-Cloud Run, ואיך לבצע את הפעולות הבאות:
- הגדרת התפקידים הנדרשים בניהול הזהויות והרשאות הגישה (IAM) והדרישות המוקדמות
- יצירת Agent Gateway בניהול עצמי
- הגדרת Ambient Networking ב-Cloud Run כדי לגשת ל-Traffic Director API
- פריסה או עדכון של שירות Cloud Run עם Ambient Networking ו-Direct VPC egress
- הגדרת הסוכן ב-Cloud Run כך שיסמוך על Agent Gateway
- ניתוב תעבורת נתונים יוצאת אל Agent Gateway
- הגדרת כללי מדיניות של אבטחת תוכן וגישה ב-Agent Gateway
- הגדרת פריסה ריכוזית בכמה פרויקטים באמצעות VPC משותף
ארכיטקטורה
בפריסה ריכוזית בניהול עצמי, Secure Web Proxy פועל כנקודת אכיפת המדיניות ופועל בתוך רשת ה-VPC שלכם. הקונטיינר המשני (sidecar) של Ambient Networking מיירט את תעבורת הנתונים היוצאת מסוכן Cloud Run ומנתב אותה דרך Direct VPC egress למכונה של Secure Web Proxy. Secure Web Proxy אוכף כללי גישה ותוכן מנקודות החלטה לגבי מדיניות, כמו שרת proxy לאימות זהויות (IAP) והגנה מוגברת על המודל.
כדי לנתב את התנועה ולנהל אותה בארכיטקטורה הזו, צריך להגדיר את הרכיבים הבאים:
- Direct VPC egress ו-Ambient Networking: שירות Cloud Run מתחבר לרשת ה-VPC באמצעות
--vpc-egress=allו---ambient-networking, שמשתמשים בהיקף האזורי כברירת מחדל ומנתבים את כל תעבורת הנתונים היוצאת לרשת ה-VPC. - Agent Gateway בניהול עצמי: משאב Agent Gateway לוגי במצב ניהול עצמי, שמפנה למכונה של Secure Web Proxy ברשת ה-VPC שלכם.
- מדיניות ניתוב של תעבורת נתונים יוצאת (egress): מדיניות של Network Services API
EgressRoutingשמפנה את תעבורת הנתונים היוצאת מהשירות ב-Cloud Run למכונה של Secure Web Proxy.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloudליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init מפעילים את ממשקי ה-API הבאים, אם הם עדיין לא מופעלים: Cloud Run Admin API, Network Services API, Network Security API, Service Extensions API, Model Armor API, Certificate Authority Service API, Certificate Manager API, Cloud Resource Manager API, App Hub API, Identity and Access Management API, Identity-Aware Proxy API, Compute Engine API, Traffic Director API, Cloud DNS API, Network Connectivity API ו-Agent Registry API.
התפקידים שנדרשים כדי להפעיל ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה
serviceusage.services.enable. אם אתם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, אתם יכולים לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים- יוצרים רשת VPC ותת-רשת, ומפעילים בתת-רשת את גישה פרטית ל-Google.
- מגדירים את Agent Registry בפרויקט או בארגון.
- התקן ואתחל את ממשק שורת הפקודה (CLI) של גוגל קלאוד.
-
מעדכנים את הרכיבים של ה-CLI של gcloud:
gcloud components update
התפקידים הנדרשים
כדי לקבל את ההרשאות שנדרשות להגדרת Agent Gateway ל-Cloud Run, בקשו מהאדמין להקצות לכם את התפקידים הבאים ב-IAM בפרויקט:
-
פריסה וניהול של משאבי Cloud Run:
אדמין ב-Cloud Run (
roles/run.admin) -
ניהול המשאבים של Agent Registry:
אדמין של Agent Registry API (
roles/agentregistry.admin) -
פריסה עם זהות ספציפית:
משתמש בחשבון שירות ב-IAM (
roles/iam.serviceAccountUser) -
ניהול רשתות VPC ורשתות משנה:
אדמין של רשת Compute (
roles/compute.networkAdmin) -
ניהול של Agent Gateway ומשאבי ניתוב של תעבורת נתונים יוצאת:
אדמין של שירותי רשת (
roles/networkservices.admin) -
הגדרת מדיניות הרשאות ב-Agent Gateway:
אדמין אבטחת רשת (
roles/networksecurity.admin) -
יצירת קישורים לתוספים:
אדמין של תוספי שירות (
roles/serviceextensions.admin) -
ניהול תחום DNS וקבוצות של רשומות ב-Cloud DNS:
אדמין של DNS (
roles/dns.admin) -
מייצאים אישורי CA מ-CA Service:
- אדמין ב-CA Service (
roles/privateca.admin) - מבקר של שירות CA (
roles/privateca.auditor)
- אדמין ב-CA Service (
-
הגדרת מדיניות גישה של IAP ו-IAM:
אדמין מדיניות IAP (
roles/iap.admin) ואדמין מדיניות גישה (roles/iam.accessPolicyAdmin) -
יצירת תבניות של Model Armor:
אדמין של Model Armor (
roles/modelarmor.admin) -
הקצאת תפקידי IAM ברמת הפרויקט לסוכני שירות: אדמין IAM של פרויקט (
roles/resourcemanager.projectIamAdmin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
אם אתם מגדירים פריסה בכמה פרויקטים עם VPC משותף, בקשו מהאדמין להקצות לכם את התפקיד roles/compute.xpnAdmin ברמת הארגון או התיקייה.
יצירת Agent Gateway בניהול עצמי
לפני שיוצרים את המשאב של Agent Gateway, צריך לפרוס ולהגדיר מכונה של Secure Web Proxy ברשת ה-VPC, כמו שמתואר במאמר פריסת Secure Web Proxy בתור Agent Gateway:
- מגדירים בדיקת TLS ויוצרים מדיניות אבטחה של שער שמצרפת את
TlsInspectionPolicy. אתם לא צריכים כללים של מדיניות אבטחה או רשימות של כתובות URL ב-Secure Web Proxy. - יצירת משאב
ServerTlsPolicyבאמצעותallowOpen: falseו-mtlsPolicy.clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT. אל תגדירו אתclientValidationTrustConfig. - פורסים מכונה של Secure Web Proxy במצב ניתוב מפורש של שרת proxy, עם
addresses,ports,certificateUrls,gatewaySecurityPolicyו-serverTlsPolicyשמוגדרים כשיוצרים את השער, כדי ש-Cloud Run יעביר את Workload Identity של הסוכן ל-Secure Web Proxy ול-IAP דרך mTLS.
אחרי שהמכונה של Secure Web Proxy מוכנה, יוצרים משאב של Agent Gateway בניהול עצמי שמפנה למכונה של Secure Web Proxy:
יוצרים קובץ תצורה בפורמט YAML בשם
my-agent-gateway.yaml:name: AGENT_GATEWAY_NAME registries: - "//agentregistry.googleapis.com/projects/PROJECT_ID/locations/REGION" selfManaged: resourceUris: - "projects/PROJECT_ID/locations/REGION/gateways/SWP_NAME"
מחליפים את מה שכתוב בשדות הבאים:
-
AGENT_GATEWAY_NAME: השם שרוצים לתת למשאב של Agent Gateway. -
PROJECT_ID: מזהה הפרויקט שמארח את המכונה של Secure Web Proxy. -
REGION: האזור של מכונת Secure Web Proxy, למשלus-central1. -
SWP_NAME: השם של מכונת Secure Web Proxy.
-
מייבאים את ההגדרות של Agent Gateway:
gcloud beta network-services agent-gateways import AGENT_GATEWAY_NAME \ --source="my-agent-gateway.yaml" \ --location=REGION \ --project=PROJECT_ID
מאמתים את המשאב של Agent Gateway:
gcloud beta network-services agent-gateways describe AGENT_GATEWAY_NAME \ --location=REGION \ --project=PROJECT_ID
לפני שממשיכים לחלק הבא, מוודאים שהפלט מציג את ההגדרות של
selfManagedואת ה-URI של המשאב של המכונה של Secure Web Proxy.
הגדרת Ambient Networking ב-Cloud Run כדי לגשת ל-Traffic Director API
כשמגדירים שירות Cloud Run עם Direct VPC egress ו---vpc-egress=all, כל החיבורים היוצאים ממכונת הקונטיינר מנותבים דרך רשת ה-VPC. זה כולל את החיבור של Envoy sidecar ל-trafficdirector.REGION.rep.googleapis.com.
כדי לאפשר ל-sidecar לזהות את Traffic Director API ולהגיע אליו, צריך להגדיר אזור פרטי ב-Cloud DNS ברשת ה-VPC, בהתאם לשימוש של הסביבה ב-VPC Service Controls:
בלי VPC Service Controls
אם בפרויקט לא משתמשים ב-VPC Service Controls, יוצרים תחום Cloud DNS פרטי שמנתב בקשות ל-trafficdirector.REGION.rep.googleapis.com אל כתובת ה-IP של שער Secure Web Proxy, כדי ש-Secure Web Proxy יאפשר לתנועה לעבור:
מאחזרים את כתובת ה-IP הפנימית של שער Secure Web Proxy:
SWP_IP=$(gcloud network-services gateways describe SWP_NAME \ --project="PROJECT_ID" \ --location="REGION" \ --format="value(addresses[0])")
מחליפים את מה שכתוב בשדות הבאים:
-
SWP_NAME: השם של מכונת Secure Web Proxy. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
REGION: האזור של הפריסה.
-
יוצרים אזור מנוהל פרטי ב-Cloud DNS בשביל Traffic Director API:
gcloud dns managed-zones create td-swp-zone \ --project="PROJECT_ID" \ --dns-name="trafficdirector.REGION.rep.googleapis.com." \ --description="Private DNS zone routing control plane traffic to SWP" \ --visibility="private" \ --networks="VPC_NETWORK_NAME"
מחליפים את
VPC_NETWORK_NAMEבשם של רשת ה-VPC.מוסיפים רשומת
Aשמפנה את הדומיין האזורי של Traffic Director API לכתובת ה-IP של Secure Web Proxy:gcloud dns record-sets create "trafficdirector.REGION.rep.googleapis.com." \ --project="PROJECT_ID" \ --zone="td-swp-zone" \ --type="A" \ --ttl=300 \ --rrdatas="${SWP_IP}"
מוודאים שקבוצת רשומות ה-DNS פעילה באזור הפרטי:
gcloud dns record-sets list \ --project="PROJECT_ID" \ --zone="td-swp-zone"
מוודאים שרשומת
Aשלtrafficdirector.REGION.rep.googleapis.com.מפנה לכתובת ה-IP של Secure Web Proxy.
עם VPC Service Controls
בסביבות של VPC Service Controls, מקצים נקודת קצה אזורית של Private Service Connect שמטרגטת את Traffic Director API האזורי בתוך רשת המשנה של ה-VPC, וממפים את הדומיין באמצעות תחום Cloud DNS פרטי:
יוצרים נקודת קצה אזורית של Private Service Connect שמטרגטת את Traffic Director API האזורי:
gcloud network-connectivity regional-endpoints create td-rep-endpoint \ --project="PROJECT_ID" \ --region="REGION" \ --network="projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME" \ --subnetwork="projects/PROJECT_ID/regions/REGION/subnetworks/VPC_SUBNET_NAME" \ --target-google-api="trafficdirector.REGION.rep.googleapis.com"
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
REGION: האזור של הפריסה. -
VPC_NETWORK_NAME: השם של רשת ה-VPC -
VPC_SUBNET_NAME: השם של רשת המשנה של ה-VPC.
-
מאחזרים את כתובת ה-IP הפנימית של נקודת הקצה האזורית:
TD_ENDPOINT_IP=$(gcloud network-connectivity regional-endpoints describe td-rep-endpoint \ --project="PROJECT_ID" \ --region="REGION" \ --format="value(address)")
יוצרים אזור מנוהל פרטי ב-Cloud DNS בשביל Traffic Director API:
gcloud dns managed-zones create td-psc-zone \ --project="PROJECT_ID" \ --dns-name="trafficdirector.REGION.rep.googleapis.com." \ --description="Private DNS zone for regional endpoint" \ --visibility="private" \ --networks="VPC_NETWORK_NAME"
מוסיפים רשומת
Aשמפנה את הדומיין האזורי של Traffic Director API לכתובת ה-IP של נקודת הקצה האזורית:gcloud dns record-sets create "trafficdirector.REGION.rep.googleapis.com." \ --project="PROJECT_ID" \ --zone="td-psc-zone" \ --type="A" \ --ttl=300 \ --rrdatas="${TD_ENDPOINT_IP}"
מאמתים את נקודת הקצה האזורית ואת קבוצת רשומות ה-DNS:
gcloud dns record-sets list \ --project="PROJECT_ID" \ --zone="td-psc-zone"
מוודאים שרשומת
Aשלtrafficdirector.REGION.rep.googleapis.com.מפנה לכתובת ה-IP של נקודת הקצה האזורית.
פריסה או עדכון של שירות Cloud Run עם Ambient Networking ו-Direct VPC egress
כדי לחבר את סוכן Cloud Run למכונה של Secure Web Proxy ברשת ה-VPC, מפעילים את Direct VPC egress ואת Ambient Networking האזורית, ומגדירים את השירות עם Agent Identity.
כשפורסים באמצעות --functional-type=agent ו---identity-type=agent-identity, Cloud Run מעניק את התפקיד roles/run.agentDefaultAccess, שכולל את ההרשאות roles/trafficdirector.client ו-roles/cloudtrace.agent:
פורסים שירות חדש של סוכן Cloud Run או מעדכנים שירות קיים כדי להפעיל רשתות מקומיות אזוריות, תעבורת נתונים יוצאת ישירה של VPC לכל התנועה היוצאת ו-Agent Identity:
שירות חדש
gcloud beta run deploy SERVICE_NAME \ --image=IMAGE_URL \ --network=VPC_NETWORK_NAME \ --subnet=VPC_SUBNET_NAME \ --vpc-egress=all \ --functional-type=agent \ --identity-type=agent-identity \ --ambient-networking \ --set-env-vars="GOOGLE_API_USE_CLIENT_CERTIFICATE=false,GOOGLE_API_USE_MTLS_ENDPOINT=never" \ --region=REGION \ --project=PROJECT_ID
שירות קיים
gcloud beta run services update SERVICE_NAME \ --network=VPC_NETWORK_NAME \ --subnet=VPC_SUBNET_NAME \ --vpc-egress=all \ --functional-type=agent \ --identity-type=agent-identity \ --ambient-networking \ --update-env-vars="GOOGLE_API_USE_CLIENT_CERTIFICATE=false,GOOGLE_API_USE_MTLS_ENDPOINT=never" \ --region=REGION \ --project=PROJECT_ID
מחליפים את מה שכתוב בשדות הבאים:
-
SERVICE_NAME: השם של שירות הסוכן ב-Cloud Run. -
IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר, לדוגמהus-docker.pkg.dev/cloudrun/container/hello:latest. אם אתם משתמשים ב-Artifact Registry, המאגר REPO_NAME כבר צריך להיות קיים. הפורמט של כתובת ה-URL הואLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. -
VPC_NETWORK_NAME: השם של רשת ה-VPC שמארחת את המכונה של Secure Web Proxy. מידע נוסף על יצירת רשת VPC ורשת משנה זמין במאמר יצירה וניהול של רשתות VPC. -
VPC_SUBNET_NAME: השם של תת-הרשת של ה-VPC שבה אפשר לגשת למכונה של Secure Web Proxy. -
REGION: האזור של השירות. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
-
מוודאים ששירות Cloud Run משתמש ב-Ambient Networking, בתעבורת נתונים יוצאת ישירה של VPC וב-Agent Identity:
gcloud beta run services describe SERVICE_NAME \ --region=REGION \ --project=PROJECT_ID
מוודאים שבפלט מוצגים רשת המשנה של התעבורה היוצאת של Direct VPC, התעבורה היוצאת של
all-traffic, הרשת הסביבתית האזורית וחשבון המשתמש שהוקצה לזהות הסוכן.
הגדרת הסוכן ב-Cloud Run כך שיסמוך על Agent Gateway
כדי ש-Secure Web Proxy יוכל לבדוק את המטענים הייעודיים (payloads) של HTTPS ולאכוף כללי מדיניות, הוא צריך לסיים סשנים יוצאים של TLS מהסוכן. מאגר הסוכנים של Cloud Run צריך לתת אמון באישור של רשות האישורים (CA) הראשית או המשנית שמשויכת למדיניות בדיקת ה-TLS של Secure Web Proxy בשירות CA או ב-PKI הפרטי של הארגון:
מייצאים את אישור ה-CA בקידוד PEM ממאגר שירות ה-CA למכונה של Secure Web Proxy:
gcloud privateca pools get-ca-certs CA_POOL_NAME \ --location=REGION \ --project=PROJECT_ID \ --output-file=agent-gateway-root.crt
מחליפים את מה שכתוב בשדות הבאים:
-
CA_POOL_NAME: השם של מאגר ה-CA שמשויך למדיניות בדיקת ה-TLS של Secure Web Proxy. -
REGION: האזור של מאגר ה-CA. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
-
מעדכנים את שירות Cloud Run כדי להעביר את תוכן האישור במשתנה סביבה:
gcloud beta run services update SERVICE_NAME \ --region=REGION \ --project=PROJECT_ID \ --update-env-vars="AGENT_GATEWAY_ROOT_CERT=$(cat agent-gateway-root.crt)"
מחליפים את מה שכתוב בשדות הבאים:
-
SERVICE_NAME: השם של שירות הסוכן ב-Cloud Run. -
REGION: האזור של השירות. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
לדוגמה, הסקריפט הבא של נקודת הכניסה של מאגר Debian או Ubuntu,
entrypoint.sh, מתקין אתAGENT_GATEWAY_ROOT_CERTבמאגר האישורים של המערכת ומייצא את נתיבי חבילת ה-CA ללקוחות Python ו-gRPC לפני הפעלת האפליקציה:#!/usr/bin/env bash set -e if [ -n "${AGENT_GATEWAY_ROOT_CERT}" ]; then printf '%s\n' "${AGENT_GATEWAY_ROOT_CERT}" > /usr/local/share/ca-certificates/agent-gateway.crt update-ca-certificates export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt export REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt export GRPC_DEFAULT_SSL_ROOTS_FILE_PATH=/etc/ssl/certs/ca-certificates.crt fi exec "$@"
-
מוודאים שהשירות מגדיר את משתנה הסביבה
AGENT_GATEWAY_ROOT_CERT:gcloud beta run services describe SERVICE_NAME \ --region=REGION \ --project=PROJECT_ID \ --format="yaml(spec.template.spec.containers[0].env)"
ניתוב תעבורת נתונים יוצאת אל Agent Gateway
אחרי שמגדירים את שירות Cloud Run ואת Agent Gateway, יוצרים מדיניות EgressRouting של Network Services API כדי להפנות את התנועה היוצאת משירות Cloud Run לשער של Secure Web Proxy:
יוצרים את המשאב
EgressRouting:gcloud alpha network-services egress-routings create my-run-egress-routing \ --location=REGION \ --project=PROJECT_ID \ --gateway="//networkservices.googleapis.com/projects/PROJECT_ID/locations/REGION/gateways/SWP_NAME" \ --sources="workloadUri=//run.googleapis.com/projects/PROJECT_ID/locations/REGION/services/SERVICE_NAME"
מחליפים את מה שכתוב בשדות הבאים:
-
REGION: האזור של שירות Cloud Run והשער. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
SWP_NAME: השם של משאב ה-Secure Web ProxyGatewayהבסיסי, ולא של משאב ה-AgentGateway. -
SERVICE_NAME: השם של שירות הסוכן ב-Cloud Run. כדי לנתב את כל שירותי Cloud Run בפרויקט דרך השער באמצעות מדיניות אחת, מגדירים אתworkloadUriלערך//run.googleapis.com/projects/PROJECT_IDאו//run.googleapis.com/projects/PROJECT_NUMBER.
אחרי שההגדרה
EgressRoutingנכנסת לתוקף, כל התנועה היוצאת משירות Cloud Run מנותבת דרך Secure Web Proxy. בקטע הבא מוסבר איך להגדיר כללי מדיניות כדי לאפשר בקשות יוצאות ולנהל אותן.-
מוודאים שהמשאב
EgressRoutingפעיל:gcloud alpha network-services egress-routings describe my-run-egress-routing \ --location=REGION \ --project=PROJECT_ID
מוודאים שבשדה
sourcesמופיע ה-URI של עומס העבודה ב-Cloud Run, ובשדהgatewayמופיע משאב השער של Secure Web Proxy.
הגדרת כללי מדיניות ב-Agent Gateway
אחרי שמנתבים את תעבורת הנתונים היוצאת דרך Agent Gateway, אפשר לנהל את הבקשות היוצאות של הנציג על ידי צירוף של כללי מדיניות הרשאה וקישורי תוספים של Service Extensions למשאב של Agent Gateway:
- סינון תנועה בסיסית וכלים של MCP: מאפשרים נקודות קצה של מודלים ושיטות וכלים מאושרים של Model Context Protocol (MCP) באמצעות
ALLOWמדיניות הרשאה. - בקרת גישה מבוססת-זהות: מקשרים את IAP למשאב
ExtensionBindingומגדירים מדיניות גישה מאוחדת של IAM כדי לקבוע אילו נציגים יכולים לקרוא לשרתי MCP, לכלים או לנקודות קצה ספציפיים. - אבטחת תוכן: מקשרים את Model Armor למשאב
ExtensionBindingכדי לבדוק ולנקות פרומפטים ותשובות, וכך למנוע החדרת פרומפטים, דליפת מידע רגיש או הפרות מדיניות.
המערכת מתעלמת מכללי מדיניות ההרשאה או מכללי מדיניות האבטחה של השער שמצורפים למשאב Gateway הבסיסי של Secure Web Proxy. אחרי שיוצרים או מעדכנים משאב ExtensionBinding, יכול להיות שיעברו עד חמש דקות עד שהשינויים יתעדכנו בשער. כדי לראות את רצף הערכת הכללים בכללי הרשת, בדיקת TLS, קישורי תוספים וכללי HTTP, עיינו בקטע סדר ההערכה של כללי ההרשאה.
אישור תעבורת נתונים בסיסית יוצאת ותעבורת נתונים של MCP
כברירת מחדל, Secure Web Proxy דוחה את כל תעבורת הנתונים היוצאת עם שגיאות 403 Forbidden, עד שALLOW AuthzPolicy במשאב Agent Gateway מאפשר זאת.
מכיוון שהשירות של Cloud Run משתמש ב---vpc-egress=all, כל תעבורת הנתונים היוצאת של הקונטיינר, כולל קריאות API לכלי MCP ובקשות ל-LLM, מנותבת דרך השער. מצרפים ALLOW כללי מדיניות הרשאה למשאב Agent Gateway לשני סוגי התנועה:
- שרתי MCP וכלים: מאפשרים שיטות וכלים מורשים של MCP לפי ההוראות במאמר הגבלת הכלים של MCP באמצעות כללי מדיניות הרשאה.
- נקודות קצה של מודלים ונקודות קצה שהן לא MCP: מאפשרים בקשות לנקודות קצה של מודלים כמו Vertex AI בכתובת
REGION-aiplatform.googleapis.comבאמצעות כלל SNI בשכבה 4 או כלל מארחhttpRulesבשכבה 7. כלל SNI בשכבה 4 מדלג על בדיקת TLS, כמו שמוצג במאמר מעקף של יירוט TLS באמצעות התאמת SNI. כלל מארח של שכבה 7 ב-httpRulesמשאיר את בדיקת ה-TLS פעילה אם בודקים את המטען הייעודי (payload) של המודל באמצעות Model Armor, כמו שמוסבר במאמר הגדרת מדיניות הרשאות ליעדים של סוכנים.
הגדרת כללי מדיניות של תעבורת נתונים יוצאת (egress) ב-IAP
Agent Gateway משתמש ב-IAP כמנוע לקבלת החלטות לגבי מדיניות, כדי להעריך את כללי המדיניות של IAM Unified Access Policies. כדי לאכוף את כללי המדיניות של זהות הסוכן, מגדירים את כללי הגישה במדיניות גישה מאוחדת (UAP) ב-IAM ומקשרים את IAP לשער:
- יוצרים מערכת גישה מאוחדת לכללי מדיניות (UAP) של IAM באמצעות ישות מורשית Agent Identity של שירות Cloud Run,
principal://agents.global.org-ORGANIZATION_ID.system.id.goog/resources/run/projects/PROJECT_NUMBER/locations/REGION/services/SERVICE_NAME, ומקשרים את המדיניות לפרויקט או לשער לפי ההוראות במאמרים יצירת מדיניות גישה של IAM וקישור מדיניות גישה מאוחדת לפרויקט. - מקשרים את IAP,
iap.googleapis.com, ל-Agent Gateway באמצעותExtensionBinding, לפי ההוראות במאמר קישור של IAP ל-Agent Gateway.
--vpc-egress=all שולח קריאות למודל כמו REGION-aiplatform.googleapis.com דרך השער, לכן צריך להגדיר את ההיקף matchConditions ב-IAP ExtensionBinding ל-prefix: "urn:mcp" כדי שהקריאות למודל יעקפו את ההערכה של IAP. כדי לנהל גם את התנועה בין הסוכנים, צריך להוסיף את prefix: "urn:agent". אם קישור התוסף תואם למארחים אחרים, צריך להוסיף כלל הרשאה לכל מארח במדיניות הגישה המאוחדת (UAP) של IAM, למשל destination.unregistered.host == 'REGION-aiplatform.googleapis.com'.
לדוגמה, ראו יצירת מדיניות לנקודת קצה לא רשומה של נציג.
הגדרת כללי מדיניות של Model Armor
כדי לבדוק את ההנחיות והתשובות שעוברות דרך Agent Gateway ולהסיר מהן תוכן זדוני או רגיש, צריך ליצור תבניות של Model Armor ולקשר אותן לשער:
- יוצרים תבניות אזוריות של בקשות ותגובות להגנה מוגברת על המודל, ומקצים את התפקידים הנדרשים לסוכן השירות של Service Extensions לפי ההוראות במאמר הגדרת הגנה מוגברת על המודל בשער.
- מצרפים את התבניות ל-Agent Gateway באמצעות
ExtensionBinding, לפי ההוראות במאמר קישור של Model Armor להסרת תוכן זדוני או רגיש מהנחיות ומתשובות.
הגדרת פריסה מרכזית בכמה פרויקטים באמצעות VPC משותף
בארגון עם כמה פרויקטים, אתם יכולים לפרוס את הסוכנים של Cloud Run בפרויקט שירות אחד או יותר, ולארח את Agent Gateway, מכונה של Secure Web Proxy ו-Agent Registry בפרויקט מארח ייעודי של רשתות באמצעות VPC משותף:
- פרויקט א', פרויקט שירות של סוכן: מארח את שירות הסוכן של Cloud Run ואת המדיניות המקומית של
EgressRouting. - פרויקט ב', פרויקט מארח של שער ורשתות: משמש כפרויקט המארח של ה-VPC המשותף, וצריך לארח את Agent Gateway, מכונה של Secure Web Proxy, Agent Registry, משאבי
ExtensionBindingוקישורי מדיניות IAM.
לפני שמתחילים את השלבים האלה, צריך להפעיל את run.googleapis.com, compute.googleapis.com, networkservices.googleapis.com ו-trafficdirector.googleapis.com בפרויקט א', ואת aiplatform.googleapis.com אם הנציג שלכם קורא ל-Vertex AI. בפרויקט ב', פורסים את המכונה של Secure Web Proxy ואת המשאב של Agent Gateway ברשת ה-VPC המשותפת, כמו שמתואר במאמר יצירת Agent Gateway בניהול עצמי, ומגדירים את הניתוב של DNS או של Private Service Connect כמו שמתואר במאמר הגדרת Ambient Networking ב-Cloud Run כדי לגשת ל-Traffic Director API, כדי שרכיבי ה-sidecar הסביבתיים בפרויקט א' יוכלו לגשת ל-Traffic Director API.
כדי להגדיר פריסה בכמה פרויקטים:
מגדירים את פרויקט ב' כפרויקט מארח של VPC משותף, מצרפים את פרויקט א' כפרויקט שירות ומשתפים את תת-הרשת שמארחת את המכונה של Secure Web Proxy. כדי להפעיל VPC משותף ולצרף פרויקטים של שירות, צריך את ההרשאה
roles/compute.xpnAdminברמת הארגון או התיקייה. הוראות מפורטות זמינות במאמרים שליחת תנועה לרשת VPC משותפת באמצעות תנועה יוצאת של Direct VPC והקצאת VPC משותף.בפרויקט ב', מקצים את התפקיד
roles/compute.networkUserבתת-הרשת המשותפת לסוכן השירות של Cloud Run מפרויקט א':gcloud compute networks subnets add-iam-policy-binding SHARED_SUBNET_NAME \ --project=PROJECT_B_ID \ --region=REGION \ --member="serviceAccount:service-PROJECT_A_NUMBER@serverless-robot-prod.iam.gserviceaccount.com" \ --role="roles/compute.networkUser"
מחליפים את מה שכתוב בשדות הבאים:
-
SHARED_SUBNET_NAME: השם של רשת המשנה המשותפת בפרויקט ב'. -
PROJECT_B_ID: מזהה הפרויקט של פרויקט B, שהוא הפרויקט המארח של השער ושל ה-VPC המשותף. -
REGION: האזור של רשת המשנה המשותפת. -
PROJECT_A_NUMBER: מספר הפרויקט של פרויקט א', פרויקט השירות של הסוכן.
-
פורסים את שירות הסוכן של Cloud Run בפרויקט א' ומפנים אותו לרשת המשנה המשותפת בפרויקט ב':
gcloud beta run deploy SERVICE_NAME \ --project=PROJECT_A_ID \ --image=IMAGE_URL \ --subnet=projects/PROJECT_B_ID/regions/REGION/subnetworks/SHARED_SUBNET_NAME \ --vpc-egress=all \ --functional-type=agent \ --identity-type=agent-identity \ --ambient-networking \ --set-env-vars="GOOGLE_API_USE_CLIENT_CERTIFICATE=false,GOOGLE_API_USE_MTLS_ENDPOINT=never" \ --region=REGION
מחליפים את מה שכתוב בשדות הבאים:
-
SERVICE_NAME: השם של שירות הסוכן של Cloud Run בפרויקט א'. -
PROJECT_A_ID: מזהה הפרויקט של פרויקט A, פרויקט השירות של הסוכן. -
IMAGE_URL: הפניה לקובץ האימג' של הקונטיינר, לדוגמהus-docker.pkg.dev/cloudrun/container/hello:latest. אם אתם משתמשים ב-Artifact Registry, המאגר REPO_NAME כבר צריך להיות קיים. הפורמט של כתובת ה-URL הואLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
אחרי פריסת השירות, מגדירים את הסוכן בפרויקט א' כך שיסמוך על אישור ה-CA הבסיסי של מכונת ה-Secure Web Proxy בפרויקט ב', לפי השלבים שמפורטים בקטע הגדרת סוכן Cloud Run כך שיסמוך על Agent Gateway.
-
יוצרים מדיניות
EgressRoutingבפרויקט א' שמפנה לשער Secure Web Proxy בפרויקט ב'. בפרויקט א' צריכה להיות לכם ההרשאהroles/networkservices.admin:gcloud alpha network-services egress-routings create my-central-egress-routing \ --location=REGION \ --project=PROJECT_A_ID \ --gateway="//networkservices.googleapis.com/projects/PROJECT_B_ID/locations/REGION/gateways/CENTRAL_SWP_NAME" \ --sources="workloadUri=//run.googleapis.com/projects/PROJECT_A_ID/locations/REGION/services/SERVICE_NAME"
מחליפים את
CENTRAL_SWP_NAMEבשם של שער Secure Web Proxy בפרויקט ב'. כדי לנתב את כל שירותי Cloud Run בפרויקט א' דרך השער של פרויקט ב', מגדירים אתworkloadUriלערך//run.googleapis.com/projects/PROJECT_A_IDאו//run.googleapis.com/projects/PROJECT_A_NUMBER.מוודאים שהמשאב
EgressRoutingבפרויקט A פעיל:gcloud alpha network-services egress-routings describe my-central-egress-routing \ --location=REGION \ --project=PROJECT_A_ID
מגדירים מדיניות בסיסית ריכוזית, מדיניות IAP ומדיניות הגנה מוגברת על המודל במשאב Agent Gateway בפרויקט ב', כמו שמתואר בקטע הגדרת כללי מדיניות ב-Agent Gateway:
- מאפשרים תעבורת נתונים בסיסית של MCP ומודלים במשאב Agent Gateway בפרויקט ב', לפי ההוראות במאמר איך מאפשרים תעבורת נתונים בסיסית של MCP ותעבורת נתונים יוצאת.
- כדי לתת לסוכן בפרויקט א' הרשאה לשלוח קריאות לשרתי MCP שרשומים בפרויקט ב', יוצרים מדיניות גישה מאוחדת של IAM בפרויקט ב' שרשימת ה-
principalsשלה מפנה למספר הפרויקט של פרויקט א',principal://agents.global.org-ORGANIZATION_ID.system.id.goog/resources/run/projects/PROJECT_A_NUMBER/locations/REGION/services/SERVICE_NAME, מקשרים את המדיניות לפרויקט ב' או למשאב Agent Gateway שלו, ומצרפים את ה-ExtensionBindingשל IAP בפרויקט ב'. - כדי להחיל את מעקות הבטיחות המרוכזים של Model Armor בפרויקט ב', צריך ליצור את התבניות האזוריות של Model Armor, להקצות את התפקידים הנדרשים לסוכן השירות של Service Extensions בפרויקט ב' ולצרף את
ExtensionBindingשל Model Armor למשאב Agent Gateway בפרויקט ב'.
הצגת יומנים ומעקבים
אינטראקציות של נציגים יוצאים שמנותבות דרך Agent Gateway יוצרות יומנים ומעקבים מבוזרים, כדי שתוכלו לעקוב אחרי החלטות לגבי הפרת מדיניות ולנפות באגים בהתנהגות של הנציגים:
- ב-Cloud Logging, צופים ביומני הבקשות של שירות Cloud Run ושל שער Secure Web Proxy. מידע נוסף זמין במאמרים הצגה וכתיבה של יומני קונטיינרים ורשומות ביומן הטרנזקציות של Agent Gateway.
- לנתח את זמן האחזור של בקשות מקצה לקצה ואת המעקב אחרי הנציג והשער ב-Cloud Trace. למידע נוסף, קראו את המאמר מעקב אחרי בקשות באמצעות Trace.
אם בקשות יוצאות נכשלות או עוקפות את השער, עיינו במאמר פתרון בעיות ב-Agent Gateway.
אזורים נתמכים
אתם יכולים להשתמש ב-Agent Gateway ב-Cloud Run באזורים הבאים:
europe-west1us-central1
מגבלות
בנוסף למגבלות של Ambient Networking ולשיקולים לגבי Secure Web Proxy שמפורטים במאמר פריסת Secure Web Proxy בתור Agent Gateway, כשמשתמשים ב-Agent Gateway עם Cloud Run חלות המגבלות הבאות:
- בקשות של סוכנים יוצאים שמנותבות דרך מכונה של Secure Web Proxy לבדיקת TLS לנקודות קצה (endpoints) של
*.mtls.googleapis.comו-*.mtls.run.appנכשלות עם שגיאות503, כי Secure Web Proxy מסיים ומפעיל מחדש סשנים של TLS בלי להעביר את אישור הלקוח. - כל Agent Gateway אזורי בניהול עצמי תומך לכל היותר ב-Agent Registry אזורי אחד ברשימת
registriesשלו. - כברירת מחדל, כל פרויקט תומך בעד 10 משאבי
AgentGatewayאזוריים ו-10 משאביEgressRoutingאזוריים לכל אזור. בפרויקטים חדשים, המגבלה יכולה להתחיל ב-2 לכל אזור. כדי לבקש להגדיל את המכסה, פנו לצוות ניהול החשבון. - אתם צריכים לייצא את אישור הבסיס או האישור המשני ממאגר שירות ה-CA או מה-PKI הפרטי של הארגון, ולהגדיר את מאגר ה-Agent כך שיסמוך עליו.
המאמרים הבאים
- פתרון בעיות ב-Agent Gateway
- הגדרת התכונות של פלטפורמת הסוכנים של Gemini Enterprise ל-Cloud Run
- הגדרת Ambient Networking ל-Cloud Run
- שליחת תעבורת נתונים לרשת VPC באמצעות Direct VPC egress
- סקירה כללית על Agent Gateway
- סקירה כללית על ניהול טוקנים