שליטה בגישה לנקודות קצה ב-Agent Platform

בדף הזה מוסבר איך להגדיר מדיניות IAM בנקודת קצה של Gemini Enterprise Agent Platform כדי לשלוט בגישה אליה.

המאמר מניח שאתם כבר מכירים את המושגים של IAM, כמו מדיניות, תפקידים, הרשאות וישויות מורשות, כפי שמתואר במאמרים בקרת גישה ל-Agent Platform באמצעות IAM ומושגים שקשורים לניהול הרשאות הגישה.

מדיניות ב-IAM כוללת קישור אחד או יותר בין תפקידים, שמגדיר אילו תפקידים ב-IAM משויכים לאילו חשבונות משתמשים. תפקיד הוא אוסף של הרשאות שמעניקים לחשבון משתמש. ‫Gemini Enterprise Agent Platform מספקת תפקידים מוגדרים מראש שאפשר להשתמש בהם במדיניות. אפשר גם ליצור תפקידים בהתאמה אישית.

טעינת המדיניות של ניהול הזהויות והרשאות הגישה

אפשר לראות את מדיניות IAM הנוכחית בנקודת קצה של פלטפורמת סוכני Gemini Enterprise באמצעות API ל-REST. כדי לעשות את זה, צריכה להיות לכם הרשאת endpoints.getIamPolicy בנקודת הקצה או בפרויקט. ההרשאה הזו ניתנת בתפקיד 'אדמין של Agent Platform' (roles/aiplatform.admin).

REST

כדי לקבל את מדיניות IAM ממשאב, שולחים בקשת POST שמשתמשת בשיטה getIamPolicy.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • LOCATION_ID: האזור שבו ממוקמת נקודת הקצה, למשל, us-central1.
  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • ENDPOINT_ID: המזהה של נקודת הקצה.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:getIamPolicy

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

curl

מריצים את הפקודה הבאה:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:getIamPolicy"

PowerShell

מריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:getIamPolicy" | Select-Object -Expand Content

אתם אמורים לקבל תגובת JSON עם מדיניות ה-IAM הנוכחית:

{
  "version": 1,
  "etag": "BwXTmICm7mI",
  "bindings": [
    {
      "role": "roles/aiplatform.user",
      "members": [
        "user:example@example.com"
      ]
    }
  ]
}

הגדרת מדיניות IAM

אפשר להגדיר מדיניות IAM בנקודת קצה באמצעות API בארכיטקטורת REST. כדי לעשות את זה, צריכה להיות לכם הרשאת endpoints.setIamPolicy בנקודת הקצה או בפרויקט. ההרשאה הזו ניתנת בתפקיד 'אדמין של Agent Platform' (roles/aiplatform.admin).

REST

כדי להגדיר את מדיניות ה-IAM במשאב, שולחים בקשת POST שמשתמשת ב-method ‏setIamPolicy.

הגדרת מדיניות IAM מבטלת כל מדיניות קיימת. השינויים לא מתווספים. כדי לשנות מדיניות קיימת של משאב, משתמשים ב-method ‏getIamPolicy כדי לקבל את המדיניות הקיימת שלו ואז מבצעים שינויים. צריך לכלול את המדיניות ששיניתם יחד עם etag בבקשה setIamPolicy.

אם מקבלים את קוד השגיאה 409, זה אומר שבקשה setIamPolicy בו-זמנית כבר עדכנה את המדיניות. משתמשים ב-method ‏getIamPolicy כדי לקבל את etag המעודכן של המדיניות, ואז מנסים שוב לשלוח את בקשת setIamPolicy עם etag החדש.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • LOCATION_ID: האזור שבו ממוקמת נקודת הקצה, למשל, us-central1.
  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • ENDPOINT_ID: המזהה של נקודת הקצה.
  • ROLE: תפקיד IAM שכולל את ההרשאות להענקה, כמו roles/aiplatform.user.
  • PRINCIPAL: חשבון המשתמש שמקבל את ההרשאות של התפקיד, כמו user:myuser@example.com.
  • ETAG: ערך מחרוזת שמשמש למניעת מצב שבו עדכונים בו-זמניים של מדיניות יחליפו אחד את השני. הערך הזה מוחזר כחלק מהתגובה getIamPolicy.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:setIamPolicy

גוף בקשת JSON:

{
  "policy": {
    "bindings": [
      {
        "role": "ROLE",
        "members": [
          "PRINCIPAL"
        ]
      },
      ...
    ],
    "etag": "ETAG"
  }
}

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

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:setIamPolicy"

PowerShell

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:setIamPolicy" | Select-Object -Expand Content

אתם אמורים לקבל תגובת JSON עם מדיניות ה-IAM הנוכחית:

{
  "version": 1,
  "etag": "BwXTmICm7mI",
  "bindings": [
    {
      "role": "roles/aiplatform.user",
      "members": [
        "user:example@example.com"
      ]
    }
  ]
}

אימות הרשאות IAM של משתמש עבור נקודת קצה

אפשר לבדוק אם למשתמש המאומת יש הרשאות IAM ספציפיות לנקודת קצה.

REST

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

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • LOCATION_ID: האזור שבו נמצאת נקודת הקצה, למשל us-central1.
  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • ENDPOINT_ID: המזהה של נקודת הקצה.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:testIamPermissions

גוף בקשת JSON:

{
  "permissions": [
    "aiplatform.googleapis.com/aiplatform.endpoints.get",
    "aiplatform.googleapis.com/aiplatform.endpoints.predict"
  ]
}

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

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:testIamPermissions"

PowerShell

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:testIamPermissions" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו: התגובה כוללת רק את ההרשאות מגוף ה-JSON של הבקשה שזמינות למשתמש שאומת כרגע.
{
  "permissions": [
    "aiplatform.googleapis.com/aiplatform.endpoints.get",
    "aiplatform.googleapis.com/aiplatform.endpoints.predict"
  ]
}

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

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