אימות באמצעות OAuth דו-רגלי עם מנהל הרשאות

כדי לאפשר לסוכנים שלכם לבצע אימות לכלים חיצוניים כמו ServiceNow או Salesforce באמצעות ההרשאה שלהם, צריך להגדיר אימות יוצא באמצעות ספקי אימות OAuth דו-רגלי (פרטי כניסה של לקוח) במנהל האימות של זהות הסוכן.

ספקי אימות OAuth דו-רגליים מנהלים את פרטי הכניסה והטוקנים בשבילכם. כך לא צריך לכתוב קוד בהתאמה אישית כדי לטפל בתהליכי אימות.

תהליך עבודה של OAuth דו-רגלי

ספקי אימות OAuth עם 2 רגליים משתמשים בזהות של הסוכן ולא דורשים הסכמה מהמשתמש. ‫Google מנהלת את האחסון של פרטי הכניסה של הלקוח. כשמשתמשים בערכה לפיתוח סוכנים (ADK), המערכת מאחזרת באופן אוטומטי את אסימוני הגישה שנוצרו ומזריקה אותם לכותרות של הפעלת הכלי.

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

  1. מוודאים שבחרתם את שיטת האימות הנכונה.
  2. מפעילים את Agent Identity Connector API.

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, נדרשת ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin). כך מקצים תפקידים.

    להפעלת ה-API

  3. יצירה ופריסה של סוכן.

  4. מקבלים את מזהה הלקוח ואת סוד הלקוח מאפליקציית הצד השלישי שאליה רוצים להתחבר.

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

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

כדי לקבל את ההרשאות שדרושות ליצירה ולשימוש בספק אימות זהויות של סוכן עם אימות דו-שלבי, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:

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

התפקידים המוגדרים מראש כוללים את ההרשאות שנדרשות ליצירה ולשימוש בספק אימות של זהות סוכן עם 2 רגליים. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:

ההרשאות הנדרשות

כדי ליצור ספק אימות של זהות סוכן עם 2 רגליים ולהשתמש בו, נדרשות ההרשאות הבאות:

  • כדי ליצור ספקי אימות: iamconnectors.connectors.create
  • כדי להשתמש בספקי אימות:
    • iamconnectors.connectors.retrieveCredentials
    • aiplatform.endpoints.predict
    • aiplatform.sessions.create

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

יצירת ספק אימות דו-רגלי

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

כדי ליצור ספק אימות דו-רגלי, משתמשים במסוף Google Cloud או ב-Google Cloud CLI.

המסוף

  1. נכנסים לדף Agent Registry במסוף Google Cloud .

    כניסה ל-Agent Registry

  2. לוחצים על השם של הסוכן שרוצים ליצור עבורו ספק אימות.
  3. לוחצים על זהות.
  4. בקטע Auth Providers (ספקי אימות), לוחצים על Add auth provider (הוספת ספק אימות).
  5. בחלונית הוספת ספק אימות, מזינים שם ותיאור.

    השם יכול להכיל רק אותיות קטנות, מספרים או מקפים, הוא לא יכול להסתיים במקף והוא חייב להתחיל באות קטנה.

  6. מהרשימה OAuth Type (סוג OAuth) בוחרים באפשרות OAuth (2 legged) .
  7. לוחצים על Create and continue.
  8. כדי לתת לסוכן הרשאה להשתמש בספק האימות, לוחצים על Grant access (מתן גישה).

    כך מוקצה אוטומטית התפקיד Connector User (roles/iamconnectors.user) לזהות הסוכן במשאב של ספק האימות.

  9. בקטע Auth provider credentials (פרטי כניסה של ספק אימות), מזינים את הפרטים הבאים:
    • Client ID
    • סוד לקוח
    • כתובת URL לטוקן
  10. לוחצים על Add provider config (הוספת הגדרת ספק).

ספק האימות החדש שנוצר מופיע ברשימה ספקי אימות.

‫CLI של gcloud

  1. יוצרים את ספק האימות:

    gcloud alpha agent-identity connectors create AUTH_PROVIDER_NAME \
        --location="LOCATION" \
        --two-legged-oauth-client-id="CLIENT_ID" \
        --two-legged-oauth-client-secret="CLIENT_SECRET" \
        --two-legged-oauth-token-endpoint="TOKEN_ENDPOINT"
  2. מוודאים שספק האימות מופיע ברשימה והסטטוס שלו הוא ENABLED:
    gcloud alpha agent-identity connectors list \
       --project="PROJECT_ID" \
       --location="LOCATION"
  3. נותנים הרשאות גישה כדי לאפשר לסוכן ולסביבת הפיתוח המקומית לאחזר פרטי כניסה מספק האימות. כדי לאפשר לסוכן הפרוס ולחשבון המשתמש האישי שלכם לגשת לספק האימות, צריך להקצות את התפקיד Connector User (roles/iamconnectors.user) במשאב של ספק האימות:

    1. הענקת גישה למזהה SPIFFE של הסוכן שפרסתם (זהות הסוכן):

      gcloud alpha agent-identity connectors add-iam-policy-binding AUTH_PROVIDER_NAME \
          --project="PROJECT_ID" \
          --location="LOCATION" \
          --role="roles/iamconnectors.user" \
          --member="principal://agents.global.org-ORGANIZATION_ID.system.id.goog/resources/aiplatform/projects/PROJECT_NUMBER/locations/LOCATION/reasoningEngines/ENGINE_ID"
    2. מתן גישה לחשבון המשתמש האישי שלכם לצורך פיתוח ובדיקה מקומיים (adk web):

      gcloud alpha agent-identity connectors add-iam-policy-binding AUTH_PROVIDER_NAME \
          --project="PROJECT_ID" \
          --location="LOCATION" \
          --role="roles/iamconnectors.user" \
          --member="user:USER_EMAIL"

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • LOCATION: המיקום שבו ספק האימות והסוכן שלכם נפרסים (לדוגמה, us-west1).
  • AUTH_PROVIDER_NAME: השם של ספק האימות (לדוגמה, jira-mcp-2lo-authprovider).
  • CLIENT_ID: מזהה הלקוח של OAuth שנוצר משירות הצד השלישי.
  • CLIENT_SECRET: סוד לקוח OAuth שנוצר משירות הצד השלישי.
  • TOKEN_ENDPOINT: כתובת ה-URL של נקודת הקצה של הטוקן (לדוגמה, https://oauth2.googleapis.com/token).
  • ORGANIZATION_ID: מזהה הארגון ב- Google Cloud .
  • PROJECT_NUMBER: מספר הפרויקט ב- Google Cloud .
  • ENGINE_ID: המזהה של סוכן מנוע ההסקה שנפרס.
  • USER_EMAIL: כתובת האימייל בחשבון המשתמש האישי שלכם.

אימות בקוד הסוכן

כדי לאמת את הנציג, אפשר להשתמש ב-ADK.

ADK

אפשר להפנות לספק האימות בקוד של הסוכן באמצעות ערכת הכלים של MCP ב-ADK.

from google.adk.agents.llm_agent import LlmAgent
from google.adk.auth.credential_manager import CredentialManager
from google.adk.integrations.agent_identity import GcpAuthProvider, GcpAuthProviderScheme
from google.adk.tools.mcp_tool.mcp_session_manager import StreamableHTTPConnectionParams
from google.adk.tools.mcp_tool.mcp_toolset import McpToolset
from