סקירה כללית על מערכת גישה מאוחדת לכללי מדיניות (UAP) ב-IAM

אתם יכולים ליצור מערכת גישה מאוחדת לכללי מדיניות (UAP) לניהול זהויות והרשאות גישה (IAM) כדי לשלוט בצורה מאובטחת בתקשורת בין ישויות מורשות של סוכנים לבין משאבי יעד, כמו סוכני יעד, שרתי MCP ונקודות קצה. כללי המדיניות האלה מחייבים את הפרויקט שמכיל את המקרים של Agent Gateway.

Agent Gateway משתמש בשרת proxy לאימות זהויות (IAP) כדי להעריך ולאכוף את ה-UAP.

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

כדי להגדיר UAPs עבור Agent Gateway, אפשר לעיין במאמר בנושא הגדרת UAPs ב-IAM.

אפשר גם ליצור גבול גישה לחשבון משתמש (PAB) בזהות של הסוכן. Agent Gateway יכול להשתמש ב-IAP כדי לאכוף מדיניות לקביעת גבול הגישה לחשבונות משתמשים (PAB).

הפעלת Agent Gateway

כדי להשתמש במדיניות תקשורת מבוססת-סוכן, צריך להגדיר את Agent Gateway.

מומלץ להגדיר את Agent Gateway במצב הרצה יבשה (DRY_RUN) בסביבת פיתוח כדי לוודא שהמדיניות פועלת כמצופה.

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

סקירה כללית על UAPs

ה-UAP קובעים אם יש לאחת או יותר ישויות מורשות של סוכן גישה למשאב יעד אחד או יותר. המאפיינים האלה מרחיבים את מודל מדיניות IAM בכך שהם תומכים בכמה כללים במדיניות אחת. בניגוד לכללי מדיניות ההרשאה והדחייה של IAM, כל כלל במדיניות UAP יכול להשפיע גם על הרשאה וגם על דחייה. מידע נוסף על סוגי מדיניות IAM

הכללים מכילים גם תנאים שמבוטאים ב-Common Expression Language‏ (CEL). התנאים הם המנגנון העיקרי לשליטה בגישה למשאבים אחרי השער. האכיפה של UAP באמצעות Agent Gateway ו-IAP מספקת שליטה קפדנית בהתנהגות של סוכנים שנפרסו בכל הארגון. אפשר לייצג במדיניות אחת תרחישי שימוש בעולם האמיתי שכוללים ניהול מפורט של סוכנים.

מדיניות טיפוסית מכילה לפחות שני כללים שונים:

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

לדוגמה, נניח שיש סוכן תמיכת לקוחות אוטומטי שצריך לבצע אינטראקציה עם כלים פנימיים שיש להם גישה עם הרשאות מיוחדות למסד נתונים של לקוחות. האדמין מגדיר Agent Gateway עם IAP כדי לאכוף UAP של IAM. האדמין יכול להגדיר UAP עם כלל הרשאה שמאשר לישות מורשית של סוכן לקרוא כרטיסי תמיכה, וכלל דחייה שלא מאפשר לישות מורשית של סוכן למחוק או לעדכן רשומות במסד הנתונים.

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

שיטות מומלצות

כשמגדירים מדיניות לגבי תעבורת נתונים יוצאת של סוכנים, מומלץ לפעול לפי השיטות המומלצות הבאות:

  • שימוש במצב הרצת בדיקה: כדאי להפעיל כללי מדיניות חדשים או משופצים במצב הרצת בדיקה כדי לוודא שהם פועלים כמו שצריך, בלי לחסום תנועה של סוכנים פעילים.
  • החלת העיקרון של הרשאות מינימליות: מעניקים רק את ההרשאות הנדרשות. במקום להשתמש בתווים כלליים לחיפוש, כדאי להשתמש בשמות או בנתיבים ספציפיים של כלים בתנאי CEL.
  • שימוש בכללי דחייה להגדרת אמצעי הגנה: כדאי להשתמש בכללי דחייה מפורשים כדי להטמיע אמצעי הגנה קריטיים, כמו חסימת כלים הרסניים בנקודות קצה של ייצור. שימוש בכללי דחייה כדי להגדיר אמצעי בקרה יעיל כי כללי דחייה מבטלים כללי הרשאה.
  • ביצוע ביקורות שוטפות: כדאי לבדוק מדי פעם את היומנים של Cloud Audit Logs ואת הגדרות המדיניות כדי לוודא שהם עומדים בדרישות של מדיניות האבטחה של הארגון.

רכיבי UAP

כללי UAP מכילים כלל אחד או יותר. כללים כוללים את הרכיבים הבאים:

Agent principals

ב-UAP של IAM, מגדירים חשבון משתמש אחד או יותר של סוכן. חשבונות המשתמשים של הסוכנים הם החברים שאתם מעניקים להם גישה. מציינים את הסוכנים לפי הזהות שלהם, כלומר הזהות של הסוכן שיוצר תקשורת עם משאב. מידע נוסף על האופן שבו סוגים שונים של סוכנים מקבלים זהויות זמין במאמר זהות הסוכן. זהויות של סוכנים מיוצגות על ידי מזהים של חשבונות משתמשים שמכילים את הזהות של הסוכן בפורמט SPIFFE (לדוגמה, principal://agents.global.org-...).

אפשר לציין מערך של זהויות סוכנים נפרדות או מערך של קבוצות חשבונות משתמשים.

זהויות סוכנים מובנות מוקצות לשירותים שונים של Cloud de Confiance Google Cloud, כמו Agent Runtime (מנוע חשיבה רציונלית), Gemini Enterprise (Discovery Engine) ושירותי Cloud Run שמוגדרים עם זהות סוכן. הסוכנים האלה מופיעים בפורמט principal://TRUST_DOMAIN/AGENT_UNIQUE_IDENTIFIER, כאשר המזהה מייצג את נתיב המשאב של הסוכן בשירות האירוח שלו. אפשר גם לציין סוכנים באמצעות מזהי ישויות (principals) של איחוד שירותי אימות הזהות של עומסי עבודה.

השפעת הכלל

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

משאבי היעד

ההרשאות המאוחדות ב-IAM מנהלות את הגישה של חשבונות משתמשים של סוכנים למשאבי יעד. משאבי היעד הם המשאבים שחשבונות המשתמש של הסוכן מנסים לגשת אליהם. משאבי היעד מצוינים בתנאים של הכלל. משאבי היעד יכולים להיות משאבים רשומים או משאבים לא רשומים.

משאבים רשומים

משאבים רשומים הם משאבים שרשומים במרשם של סוכני נדל"ן.

רשימת המשאבים הרשומים כוללת את המשאבים הבאים:

  • מאגרי מידע: מאגרי מידע של סוכנים שלמים בתוך פרויקט.
  • שרתי MCP: שרתי MCP שרשומים ב-Agent Registry.
  • סוכנים: סוכנים שרשומים במאגר סוכנים. אפשר לציין סוכנים בודדים לפי זהות הסוכן. אפשר לציין קבוצה של סוכנים באמצעות מזהה של קבוצת חשבונות ראשיים.
  • נקודות קצה: נקודות קצה שרשומות במאגר סוכנים.

אפשר לרשום שירותים ספציפיים במאגר סוכנים. אם אתם מחלקים את רישומי הסוכנים לאזורים, והכלל מנהל את הגישה למשאבים רשומים, אז ה-UAP חל רק על המשאבים שנמצאים באזור של הרישום.

משאבים לא רשומים

משאבים לא רשומים הם משאבים שלא רשומים במאגר של סוכנים. כדי להעניק או לדחות גישה למשאבים לא רשומים בכללי UAP, צריך לציין משאבים לא רשומים בתנאים של הכלל באמצעות ביטויי Common Expression Language‏ (CEL) שמכילים מאפיינים לא רשומים של מארח ונתיב.

תנאים

בכללי UAP, משתמשים בביטויים של Common Expression Language (CEL) בבלוק conditions כדי להגדיר גם היקף משאב היעד וגם קריטריונים מפורטים לגישה:

  • היקף משאבי היעד: מציין אילו משאבי יעד נשלטים על ידי הכלל. בקובצי מדיניות בפורמט JSON, מציינים מאפייני יעד, כמו destination.agent_registry.mcp_server.name או destination.unregistered.host. במסוף Cloud de Confiance , כשבוחרים יעדים בקטע משאבי יעד, הקריטריונים של המשאבים האלה מתווספים באופן אוטומטי לביטוי התנאי של הכלל.

  • קריטריוני גישה: משתמשים בביטוי בוליאני כדי לקבוע מתי ובאיזה אילוצים ההשפעה של הכלל חלה. לדוגמה, אפשר להגביל את הגישה על סמך שמות של כלים, סטטוס קריאה בלבד, שיטות HTTP או קידומות של נתיבים באמצעות מאפייני UAP CEL. ההשפעה של הכלל (אישור או דחייה) מתרחשת רק אם הביטוי כולו ב-CEL מחזיר את הערך true.

ב-CLI של gcloud וב-API בארכיטקטורת REST, מציינים את הביטויים האלה של CEL בשדה conditions של הגדרת הכלל.

במסוף Cloud de Confiance , אפשר להגדיר כללים רגילים באמצעות הכלי להגדרת תנאים, או לכתוב ביטויי CEL מותאמים אישית ישירות בעורך התנאים.

הרשאות

ב-IAP V2 עם UAP של IAM, ההרשאה iap.googleapis.com/resources.egressViaIAP תמיד מוענקת במשאב היעד. ב-CLI של gcloud וב-API בארכיטקטורת REST, מציינים את ההרשאה בשדה operation.permissions בקובץ המדיניות.

אפשרויות ליצירת מדיניות

בדף Policies במסוף Cloud de Confiance , אפשר ליצור מדיניות IAM UAP. מומלץ ליצור רק UAP (מדיניות IAM v3).

גם ב-CLI של gcloud וגם ב-API בארכיטקטורת REST, אפשר להגדיר UAP של IAM על ידי יצירת קובץ בפורמט JSON. מומלץ ליצור רק נכסי UAP.

אימות והרשאה מקצה לקצה

‫IAP ובקרת גישה מבוססת-הקשר מספקים אימות והרשאה של זהות הסוכן מקצה לקצה כברירת מחדל באמצעות הפרוטוקולים הבאים:

  • ‫Mutual TLS‏ (mTLS)
  • הוכחת בעלות (DPoP)

זהויות הסוכנים מוקצות עם אישור X.509 וטוקן שקשור לאישור. שרת IAP מחייב שזהויות של סוכנים ישתמשו ב-TLS הדדי (mTLS) כדי לבצע אימות ל-Agent Gateway. כשהשער מאפשר לסוכן לצאת ולגשת לממשקי API של Cloud de Confiance , לשרתי MCP, לסוכנים אחרים ולנקודות קצה, הסוכן מנסה לגשת מחוץ לגבולות של mTLS. כדי להגן על התקשורת, בקרת הגישה מבוססת-הקשר אוכפת מדיניות של בקרת גישה מבוססת-הקשר שמנוהלת על ידי Google. המדיניות מחייבת את DPoP לאמת את הטוקן שקשור לאישור וקשור לזהות הסוכן. מידע נוסף על השימוש ב-mTLS וב-DPoP בבקרת גישה מבוססת-הקשר זמין במאמר אבטחת סוכן בקרת הגישה מבוססת-הקשר.

מאפייני UAP CEL

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

לדוגמה, בתנאי הבא, בביטוי המשנה destination.unregistered.path.startsWith('/v1/statements'), סוג המשאב הוא יעד לא רשום, המאפיין הוא destination.unregistered.path והפונקציה של CEL היא startsWith().

destination.unregistered.host == 'finance.example.com' &&
destination.unregistered.path.startsWith('/v1/statements')

המאפיינים שמתוארים בטבלה הבאה זמינים לכל סוג משאב:

סוג משאב היעד מאפיין פרטים

Agent Registry

destination.is_registered
סוג הערך בוליאני
ערכים נתמכים true, false
פעולות נתמכות ==, !=
destination.agent_registry.resource_type
סוג הערך String
ערכים נתמכים 'AGENT', 'ENDPOINT', 'MCP_SERVER', 'SKILL'
פעולות נתמכות ==, !=, in
destination.agent_registry.location
סוג הערך String
ערכים נתמכים מזהה המיקום ב-Google Cloud (לדוגמה, 'global', 'us-central1')
פעולות נתמכות ==, !=, in
destination.agent_registry.project_id
סוג הערך String
ערכים נתמכים מזהה הפרויקט ב-Google Cloud
פעולות נתמכות ==, !=, in

סוכן

destination.agent_registry.agent.name
סוג הערך String
ערכים נתמכים שם המשאב של הסוכן (projects/PROJECT_ID/locations/LOCATION/agents/AGENT_NAME)
פעולות נתמכות ==, !=, in

שרת MCP

destination.agent_registry.mcp_server.name
סוג הערך String
ערכים נתמכים שם המשאב של שרת ה-MCP (projects/PROJECT_ID/locations/LOCATION/mcpServers/MCP_SERVER_NAME)
פעולות נתמכות ==, !=, in
destination.agent_registry.mcp_server.method
סוג הערך String
ערכים נתמכים שם שיטת ה-MCP (לדוגמה, 'tools', 'prompts', 'resources')
פעולות נתמכות ==, !=, in
destination.agent_registry.mcp_server.tool.name
סוג הערך String
ערכים נתמכים שם הכלי (לדוגמה, 'search_code', 'execute')
פעולות נתמכות ==, !=, in
destination.agent_registry.mcp_server.tool.annotations.read_only_hint
סוג הערך בוליאני
ערכים נתמכים true, false
פעולות נתמכות ==, !=
destination.agent_registry.mcp_server.tool.annotations.destructive_hint
סוג הערך בוליאני
ערכים נתמכים true, false
פעולות נתמכות ==, !=
destination.agent_registry.mcp_server.tool.annotations.idempotent_hint
סוג הערך בוליאני
ערכים נתמכים true, false
פעולות נתמכות ==, !=
destination.agent_registry.mcp_server.tool.annotations.open_world_hint
סוג הערך בוליאני
ערכים נתמכים true, false
פעולות נתמכות ==, !=
destination.agent_registry.mcp_server.prompt.name
סוג הערך String
ערכים נתמכים שם ההנחיה
פעולות נתמכות ==, !=, in
destination.agent_registry.mcp_server.resource.name
סוג הערך String
ערכים נתמכים שם המשאב
פעולות נתמכות ==, !=, in

נקודת קצה (endpoint)

destination.agent_registry.endpoint.name
סוג הערך String
ערכים נתמכים שם המשאב של נקודת הקצה (projects/PROJECT_ID/locations/LOCATION/endpoints/ENDPOINT_NAME)
פעולות נתמכות ==, !=, in

יעד לא רשום

destination.unregistered.host
סוג הערך String
ערכים נתמכים שם המארח (לדוגמה, 'google.com',‏ 'example.com')
פעולות נתמכות ==, !=, in, .startsWith(), .endsWith(), .contains()
destination.unregistered.path
סוג הערך String
ערכים נתמכים נתיב הבקשה (לדוגמה, '/admin', '/api/v1')
פעולות נתמכות ==, !=, in, .startsWith(), .endsWith(), .contains()
destination.unregistered.method
סוג הערך String
ערכים נתמכים שיטת HTTP (לדוגמה, 'get',‏ 'post', ‏ 'put', ‏ 'delete')
פעולות נתמכות ==, !=, in

המאמרים הבאים

Codelab

ב-Codelab בנושא אבטחת אפליקציות AI אקטיביות חוצות-ענן אפשר ללמוד איך לאבטח את האפליקציות האקטיביות.

סקירה כללית

סקירה כללית של Agent Gateway

מדריך

מידע על אמצעי אבטחה ל-Google Agent Platform