מפתחי אפליקציות יכולים לבקש זהות של סוכן לסוכני AI שפועלים ב-Google Kubernetes Engine (GKE). זהות הסוכן היא זהות לכל Pod שאפשר לקשור באופן מוצפן לכל Pod בעומס העבודה. לאחר מכן, סוכנים יכולים לבצע אימות ל- Google Cloud APIs באמצעות הזהות של הסוכן. אתם יכולים לקבוע לאילו משאבים תהיה לסוכן גישה, על ידי הכללת הסוכן כגורם מרכזי במדיניות של ניהול זהויות והרשאות גישה (IAM). במאמר הזה מוסבר איך לנהל את הגישה ל Google Cloud ממשקי API ולשירותים של סוכנים שמשתמשים בזהות סוכן.
המסמך הזה מיועד לאדמינים של אבטחה ולאדמינים של פלטפורמות שמנהלים הרשאות לסוכנים שמפתחים פורסים באשכולות GKE. כדאי כבר להכיר את הנושאים הבאים:
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את המשימות הבאות:
- מפעילים את ממשק ה-API של Google Kubernetes Engine. הפעלת Google Kubernetes Engine API
- כדי להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז לאתחל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
- מוודאים שיש לכם אשכול Autopilot קיים או אשכול Standard שמופעל בו איחוד זהויות של עומסי עבודה ל-GKE, ושהוא מריץ GKE בגרסה 1.37.0-gke.3503000 ואילך.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות לניהול הגישה לממשקי API של סוכנים ב Google Cloud , צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים ב Google Cloud פרויקט:
-
יצירת מדיניות IAM:
אדמין לענייני אבטחה (
roles/iam.securityAdmin) -
יצירת קטגוריה של Cloud Storage, העלאת אובייקטים והגדרת מדיניות IAM:
אדמין אחסון (
roles/storage.admin) -
פריסת עומסי עבודה באשכולות GKE:
Kubernetes Engine Developer (
roles/container.developer)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
איך מוצאים את מזהה החשבון של סוכן
בקטע הזה מוסבר איך ליצור את מזהה הגורם המוסמך של סוכן. אפשר להשתמש במזהה הזה במדיניות IAM כדי לקבוע לאילו משאבים יש לסוכן גישה.
כל עומס עבודה של סוכן שמבקש זהות של סוכן מקבל מחרוזת זהות של SPIFFE שהיא ייחודית לעומס העבודה הזה. כשהאפליקציה קוראת ל-API Google Cloud , הקריאות מאומתות באמצעות אסימון גישה של סוכן, שמאמת שלעומס העבודה יש זהות סוכן. אסימון הגישה הזה כולל מזהה של חשבון ראשי ב-IAM עבור עומס העבודה של הסוכן, ואפשר לכלול אותו במדיניות IAM כדי לקבוע לאילו משאבים יש לסוכן גישה.
כשמעצבים את מדיניות ה-IAM, אפשר ליצור את מזהי הגורמים המורשים לסוכנים באמצעות המידע הבא:
- היררכיית המשאבים של הפרויקט.
- שם האשכול.
- מרחב השמות של Kubernetes וחשבון השירות של Kubernetes באותו מרחב שמות.
כשמפתחים פורסים סוכנים שמקבלים זהות סוכן שתואמת למזהה העיקרי, הסוכן מקבל בירושה את הגישה שציינתם במדיניות.
כדי למצוא את מזהה הגורם המרכזי שבו צריך להשתמש במדיניות:
מזהים את מתחם האמון (trust domain) של הזהות. מתחם האמון (trust domain) תלוי בשאלה אם הפרויקט נמצא בארגון, באופן הבא:
פרויקטים שנמצאים בארגון:
agents.global.org-ORGANIZATION_ID.system.id.googמחליפים את
ORGANIZATION_IDבמזהה הארגון.פרויקטים שלא נמצאים בארגון:
agents.global.proj-PROJECT_NUMBER.system.id.googמחליפים את הערך
PROJECT_NUMBERבמספר הפרויקט של אשכול הפרויקט.
מזהים את הפרטים הבאים לגבי האשכול:
- השם של אשכול GKE.
- המיקום של מישור הבקרה של האשכול, למשל
us-central1. - מרחב השמות של Kubernetes שאליו המפתחים פורסים את עומסי העבודה.
- השם של חשבון השירות ב-Kubernetes שמפתחים צריכים להשתמש בו עבור עומס העבודה של הסוכן.
אם אתם לא יודעים את המידע הזה, אתם יכולים לשאול את צוות הפלטפורמה. צוות הפלטפורמה צריך להגדיר את מרחבי השמות, את חשבונות השירות ואת מדיניות RBAC באשכול, כך שסוכנים עם דרישות גישה שונות יקבלו זהויות שונות.
בונים את המזהה של החשבון הראשי:
principal://TRUST_DOMAIN/resources/container/projects/PROJECT_NUMBER/locations/CONTROL_PLANE_LOCATION/clusters/CLUSTER_NAME/ns/KUBERNETES_NAMESPACE/sa/KUBERNETES_SERVICEACCOUNTמחליפים את מה שכתוב בשדות הבאים:
TRUST_DOMAIN: מתחם האמון של זהות הסוכן.-
PROJECT_NUMBER: מספר הפרויקט של פרויקט האשכול. -
CONTROL_PLANE_LOCATION: האזור או התחום של מישור הבקרה של האשכול. -
CLUSTER_NAME: שם האשכול. -
KUBERNETES_NAMESPACE: השם של מרחב השמות של Kubernetes. -
KUBERNETES_SERVICEACCOUNT: השם של חשבון השירות של Kubernetes.
שימוש במדיניות כדי לשלוט בגישה
בקטע הזה מוסבר איך להשתמש במזהה העיקרי של סוכן כדי לקבוע לאילו Google Cloud ממשקי API ושירותים הסוכן יכול לגשת. כדי לשלוט בגישה, צריך לכלול את מזהה החשבון המשתמש בכל אחת ממדיניות IAM הבאות:
אחרי שיוצרים או מעדכנים מדיניות, לכל סוכן שמבקש זהות סוכן ופועל במרחב השמות הזה ומשתמש בחשבון השירות הזה יש את הגישה שצוינה במדיניות.
איך מאשרים לסוכנים לגשת למנהל ההרשאות
מנהל האימות של Agent Identity הוא ברוקר אימות וכספת של פרטי כניסה, שהסוכנים יכולים להשתמש בהם כדי לקבל פרטי כניסה לגישה לכלים ולשירותים חיצוניים, או כזהות של הסוכן עצמו או בשם משתמש קצה. למנהל ההרשאות יכולים להיות ספקי הרשאות אחד או יותר, וכל אחד מהם מטפל בתהליך ספציפי של אימות וקבלת פרטי כניסה לשירות מסוים. כדי לתת לסוכני GKE גישה לספקי אימות ספציפיים, פועלים לפי השלבים הבאים:
- איך מוצאים את מזהה הישות המורשית של הסוכן
- מקבלים את השם של ספק האימות שהסוכן צריך לגשת אליו.
מקצים את התפקיד Agent Identity User (
roles/agentidentity.user) בספק האימות לחשבון המשתמש של הסוכן:gcloud agent-identity auth-providers add-iam-policy-binding AUTH_PROVIDER_NAME \ --location=AUTH_PROVIDER_LOCATION \ --member=PRINCIPAL_IDENTIFIER \ --role=roles/agentidentity.userמחליפים את מה שכתוב בשדות הבאים:
-
AUTH_PROVIDER_NAME: השם של ספק האימות. -
AUTH_PROVIDER_LOCATION: האזור של ספק האימות. PRINCIPAL_IDENTIFIER: המזהה העיקרי של הסוכן.
לחלופין, לסוכנים שרשומים במאגר הסוכנים, אפשר לנהל את הגישה לספקי אימות על ידי יצירת קישור לספק אימות.
-