ניהול הגישה של סוכנים לממשקי API של Google Cloud

מפתחי אפליקציות יכולים לבקש זהות של סוכן לסוכני 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 לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.

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

כדי לקבל את ההרשאות שדרושות לניהול הגישה לממשקי API של סוכנים ב Google Cloud , צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים ב Google Cloud פרויקט:

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

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

איך מוצאים את מזהה החשבון של סוכן

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

כל עומס עבודה של סוכן שמבקש זהות של סוכן מקבל מחרוזת זהות של SPIFFE שהיא ייחודית לעומס העבודה הזה. כשהאפליקציה קוראת ל-API‏ Google Cloud , הקריאות מאומתות באמצעות אסימון גישה של סוכן, שמאמת שלעומס העבודה יש זהות סוכן. אסימון הגישה הזה כולל מזהה של חשבון ראשי ב-IAM עבור עומס העבודה של הסוכן, ואפשר לכלול אותו במדיניות IAM כדי לקבוע לאילו משאבים יש לסוכן גישה.

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

  • היררכיית המשאבים של הפרויקט.
  • שם האשכול.
  • מרחב השמות של Kubernetes וחשבון השירות של Kubernetes באותו מרחב שמות.

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

כדי למצוא את מזהה הגורם המרכזי שבו צריך להשתמש במדיניות:

  1. מזהים את מתחם האמון (trust domain) של הזהות. מתחם האמון (trust domain) תלוי בשאלה אם הפרויקט נמצא בארגון, באופן הבא:

    • פרויקטים שנמצאים בארגון:

      agents.global.org-ORGANIZATION_ID.system.id.goog
      

      מחליפים את ORGANIZATION_ID במזהה הארגון.

    • פרויקטים שלא נמצאים בארגון:

      agents.global.proj-PROJECT_NUMBER.system.id.goog
      

      מחליפים את הערך PROJECT_NUMBER במספר הפרויקט של אשכול הפרויקט.

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

    • השם של אשכול GKE.
    • המיקום של מישור הבקרה של האשכול, למשל us-central1.
    • מרחב השמות של Kubernetes שאליו המפתחים פורסים את עומסי העבודה.
    • השם של חשבון השירות ב-Kubernetes שמפתחים צריכים להשתמש בו עבור עומס העבודה של הסוכן.

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

  3. בונים את המזהה של החשבון הראשי:

    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 גישה לספקי אימות ספציפיים, פועלים לפי השלבים הבאים:

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

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

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