אימות של שרת MCP ב-Cloud Run באמצעות IAP

שרת proxy לאימות זהויות (IAP) מאפשר לכם לאבטח שרתים של Model Context Protocol‏ (MCP) שנפרסו ב-Cloud Run באמצעות אימות זהויות מרכזי. לאחר מכן תוכלו להגדיר לקוחות כמו Gemini CLI או סוכני AI כדי לבצע אימות באמצעות IAP ולהריץ כלים בצורה מאובטחת בשרת המרוחק.

לפני שמתחילים

  1. מוודאים שיש לכם את התפקידים הנדרשים.

  2. מפעילים את Cloud Run בפרויקט.

  3. מפעילים את IAP בפרויקט.

  4. פריסת שרת MCP ב-Cloud Run.

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות להגדרת אימות IAP לשרתי MCP של Cloud Run, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:

להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.

הגדרת IAP בשירות Cloud Run

כדי להגדיר IAP בשרת MCP של Cloud Run, צריך לבצע את הפעולות הבאות:

  1. מקצים את התפקיד 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
  2. מפעילים את 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: האזור שבו פורסים את השירות
  3. יוצרים ומגדירים לקוח OAuth:

    כדי לרשום את מזהה הלקוח האוניברסלי של לקוח ה-OAuth לשימוש ב-IAP, אפשר לעיין במאמר בנושא שיתוף לקוחות OAuth לגישה פרוגרמטית.

    מתעדים את הערכים הבאים:

    • מזהה לקוח ב-OAuth
    • סוד לקוח OAuth
    • ‫URI של הפניה לכתובת אחרת
  4. כדי לחבר לקוח כמו 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, מבצעים את הפעולות הבאות:

  1. בטרמינל, מפעילים את Gemini CLI:

    gemini
    
  2. כשמוצגת בקשה בדפדפן, משלימים את תהליך האימות של IAP.

  3. מוודאים ש-Gemini CLI מזהה ומציג את הכלים שסופקו על ידי שרת ה-MCP.