שרת proxy לאימות זהויות (IAP) מאפשר לכם לאבטח שרתים של Model Context Protocol (MCP) שנפרסו ב-Cloud Run באמצעות אימות זהויות מרכזי. לאחר מכן תוכלו להגדיר לקוחות כמו Gemini CLI או סוכני AI כדי לבצע אימות באמצעות IAP ולהריץ כלים בצורה מאובטחת בשרת המרוחק.
לפני שמתחילים
מפעילים את Cloud Run בפרויקט.
מפעילים את IAP בפרויקט.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות להגדרת אימות IAP לשרתי MCP של Cloud Run, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
- אדמין Cloud Run (
roles/run.admin) בפרויקט - אדמין IAP (
roles/iap.admin) בפרויקט -
פריסת שירות חדש או פריסת גרסה חדשה של שירות קיים:
- משתמש בחשבון שירות (
roles/iam.serviceAccountUser) בחשבון השירות של זמן הריצה - קורא של Artifact Registry (
roles/artifactregistry.reader) במאגר קובצי אימג' של קונטיינר
- משתמש בחשבון שירות (
-
יוצרים ומגדירים לקוח OAuth:
OAuth Config Editor (
roles/oauthconfig.editor) בפרויקט -
מתחברים לשרת ה-MCP המאובטח באמצעות IAP או מבצעים קריאה אליו:
משתמש באפליקציית אינטרנט מאובטחת באמצעות IAP (
roles/iap.httpsResourceAccessor) בפרויקט או בשירות Cloud Run
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
הגדרת IAP בשירות Cloud Run
כדי להגדיר IAP בשרת MCP של Cloud Run, צריך לבצע את הפעולות הבאות:
מקצים את התפקיד Cloud Run Invoker (
roles/run.invoker) לסוכן השירות של IAP:gcloud beta run services add-iam-policy-binding SERVICE_NAME \ --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-iap.s3ns-system.iam.gserviceaccount.com' \ --role='roles/run.invoker'מחליפים את מה שכתוב בשדות הבאים:
-
SERVICE_NAME: שם השירות -
PROJECT_NUMBER: מספר הפרויקט ב- Cloud de Confiance by S3NS
-
מפעילים את IAP כשפורסים שירות חדש או כשפורסים גרסה חדשה של שירות קיים:
שירות חדש
כדי לפרוס שירות חדש עם IAP מופעל, מריצים את הפקודה
gcloud beta run deploy:gcloud beta run deploy SERVICE_NAME \ --image=CONTAINER_IMAGE \ --region=REGION \ --project=PROJECT_ID \ --allow-unauthenticated \ --iap \ --functional-type=mcp-server
מחליפים את מה שכתוב בשדות הבאים:
-
SERVICE_NAME: שם השירות -
CONTAINER_IMAGE: קובץ האימג' של הקונטיינר -
REGION: האזור שבו פורסים את השירות -
PROJECT_ID: המזהה של הפרויקט שבו Cloud Run מופעל
שירות קיים
כדי לפרוס גרסה חדשה של שירות קיים עם IAP מופעל, מריצים את הפקודה
gcloud beta run services update:gcloud beta run services update SERVICE_NAME \ --region=REGION \ --iap \ --functional-type=mcp-server
מחליפים את מה שכתוב בשדות הבאים:
-
SERVICE_NAME: שם השירות -
REGION: האזור שבו פורסים את השירות
-
יוצרים ומגדירים לקוח OAuth:
כדי לרשום את מזהה הלקוח האוניברסלי של לקוח ה-OAuth לשימוש ב-IAP, אפשר לעיין במאמר בנושא שיתוף לקוחות OAuth לגישה פרוגרמטית.
מתעדים את הערכים הבאים:
- מזהה לקוח ב-OAuth
- סוד לקוח OAuth
- URI של הפניה לכתובת אחרת
כדי לחבר לקוח כמו Gemini CLI או את הסוכן שלכם לשרת ה-MCP שפרסתם, צריך לערוך את הקובץ
~/.gemini/settings.json.מוסיפים את ההגדרה הבאה לקובץ
settings.json:{ "mcpServers": { "my_mcp_server": { "httpUrl": "https://SERVICE_URL", "oauth": { "enabled": "true", "clientId": "OAUTH_CLIENT_ID", "clientSecret": "OAUTH_CLIENT_SECRET", "scopes": [ "email", "openid" ], "redirectUri": "REDIRECT_URI" } } } }מחליפים את מה שכתוב בשדות הבאים:
-
SERVICE_URL: כתובת ה-URL של שירות Cloud Run -
OAUTH_CLIENT_ID: מזהה הלקוח מהגדרות הלקוח ב-OAuth -
OAUTH_CLIENT_SECRET: סוד הלקוח מתצורת לקוח OAuth -
REDIRECT_URI: ה-URI של ההפניה האוטומטית מהגדרות לקוח OAuth
-
אימות החיבור
כדי לוודא שהלקוח יכול לעבור אימות דרך IAP ולהתחבר לשרת ה-MCP, מבצעים את הפעולות הבאות:
בטרמינל, מפעילים את Gemini CLI:
gemini
כשמוצגת בקשה בדפדפן, משלימים את תהליך האימות של IAP.
מוודאים ש-Gemini CLI מזהה ומציג את הכלים שסופקו על ידי שרת ה-MCP.