בדף הזה מוסבר איך להגדיר מדיניות IAM בנקודת קצה של Vertex AI כדי לשלוט בגישה אליה. המאמר מניח שאתם כבר מכירים את המושגים של IAM, כמו מדיניות, תפקידים, הרשאות וחשבונות משתמשים, כפי שמתואר במאמרים בקרת גישה ל-Vertex AI באמצעות IAM ומושגים שקשורים לניהול גישה.
מדיניות ב-IAM כוללת קישורי תפקידים שמגדירים אילו תפקידים ב-IAM משויכים לאילו חשבונות משתמשים. תפקיד הוא אוסף של הרשאות שאתם מעניקים לחשבון משתמש. Vertex AI מספק תפקידים מוגדרים מראש שאפשר להשתמש בהם במדיניות. אפשר גם ליצור תפקידים בהתאמה אישית.
טעינת המדיניות של ניהול הזהויות והרשאות הגישה
אפשר לראות את מדיניות ה-IAM הנוכחית בנקודת קצה של Vertex AI באמצעות API בארכיטקטורת REST. כדי לעשות את זה, צריכה להיות לכם הרשאת endpoints.getIamPolicy בנקודת הקצה או בפרויקט.
ההרשאה הזו ניתנת בתפקיד 'אדמין של Vertex AI' (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 בנקודת הקצה או בפרויקט.
ההרשאה הזו ניתנת בתפקיד 'אדמין של Vertex AI' (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
{
"permissions": [
"aiplatform.googleapis.com/aiplatform.endpoints.get",
"aiplatform.googleapis.com/aiplatform.endpoints.predict"
]
}
המאמרים הבאים
מידע נוסף על הגדרת פרויקטים עם בקרת גישה מאובטחת יותר לנקודות קצה זמין במאמר הגדרת פרויקט לצוות.