אתם יכולים לשלוט בגישה למשאבים של Vertex AI Feature Store (גרסה קודמת) על ידי הגדרת מדיניות IAM ברמות שונות של היררכיית המשאבים. לדוגמה:
מדיניות IAM ברמת הפרויקט חלה על כל המשאבים בפרויקט. אתם יכולים להגדיר מדיניות ברמת הפרויקט כדי להעניק למשתמשים הרשאות לקרוא את כל מאגרי התכונות בפרויקט.
מדיניות IAM ברמת המשאב מאפשרת לכם לציין אילו משתמשים יכולים לגשת למשאבים ספציפיים. אפשר להגדיר מדיניות ברמת המשאב כדי לתת הרשאות כתיבה למאגרי תכונות ספציפיים בפרויקט שלכם, עבור קבוצת משנה של משתמשים.
אפשר להגדיר כללי מדיניות של ניהול זהויות והרשאות גישה (IAM) ברמת המשאב במשאבים הבאים של Vertex AI Feature Store (גרסה קודמת):
מאגר תכונות: כשמגדירים מדיניות של ניהול זהויות והרשאות גישה במאגר תכונות, המדיניות חלה על מאגר התכונות ועל כל סוגי הישויות שנוצרו במאגר התכונות הזה.
סוג ישות: כשמגדירים מדיניות של ניהול זהויות והרשאות גישה (IAM) לגבי סוג ישות, המדיניות חלה רק על סוג הישות ועל מאגר הפיצ'רים שבו נוצר סוג הישות.
מדיניות ב-IAM כוללת קישורי תפקידים שמגדירים אילו תפקידים ב-IAM משויכים לאילו חשבונות משתמשים. תפקיד הוא אוסף של הרשאות שמעניקים לחשבון משתמש. Vertex AI מספק תפקידים מוגדרים מראש שאפשר להשתמש בהם במדיניות. אפשר גם ליצור תפקידים בהתאמה אישית.
לתשומת ליבכם
אי אפשר להגדיר מדיניות משאבים מותנית. לדוגמה, אי אפשר ליצור מדיניות שמעניקה גישה לכל משאב שהשם שלו מתחיל במחרוזת מסוימת כמו testing, או שיש לו שם כזה בעתיד.
תרחיש שימוש לדוגמה
לדוגמה, נניח שבארגון שלכם יש שתי קבוצות של משתמשים. קבוצה אחת מנהלת את התשתית הבסיסית שלכם בתפקיד אדמין DevOps. קבוצה אחרת מנהלת סוגים מסוימים של ישויות והתכונות שלהן, כמו מהנדס מערכות מידע.
אדמין DevOps מנהל מאגרי תכונות וסוגי ישויות ברמת הפרויקט. כשמהנדסי נתונים מבקשים סוג ישות חדש, אדמין DevOps יכול ליצור את סוג הישות הזה ולהעביר את הבעלות עליו למהנדסי הנתונים. מהנדסי נתונים יכולים לנהל באופן חופשי תכונות בסוגי הישויות שבבעלותם, אבל הם לא יכולים להפעיל את מאגר הפיצ'רים או סוגי ישויות אחרים. לדוגמה, האמצעי הזה מאפשר לאדמינים של DevOps להגביל את הגישה לסוגי ישויות שמכילים מידע רגיש.
בתרחיש הזה, לאדמין DevOps יש תפקיד aiplatform.featurestoreAdmin ברמת הפרויקט. לאחר מכן, כשמהנדס מערכות מידע מבקש סוג ישות חדש, האדמין יוצר סוג ישות חדש ואז מקצה את התפקיד aiplatform.entityTypeOwner למהנדס מערכות מידע ברמת סוג הישות (כמדיניות ברמת המשאב).
קבלת מדיניות IAM
אפשר לראות את מדיניות IAM הנוכחית במאגר תכונות או בסוג ישות באמצעות מסוף Google Cloud או API.
ממשק משתמש באינטרנט
- בקטע Vertex AI במסוף Google Cloud , עוברים לדף Features.
- בוחרים אזור מהרשימה הנפתחת אזור.
- בטבלת התכונות, בוחרים מאגר פיצ'רים או סוג ישות מהעמודה מאגר פיצ'רים או סוג ישות.
- לוחצים על הרשאות.
- כדי להציג הרשאות ברמת המשאב, משביתים את האפשרות הצגת הרשאות שעברו בירושה.
חשבונות משתמשים שיש להם גישה למשאב שנבחר מקובצים לפי תפקיד.
- מרחיבים את התפקיד כדי לראות אילו חשבונות משתמשים הוקצו לו.
REST
כדי לקבל את מדיניות IAM ממשאב, שולחים בקשת POST שמשתמשת ב-method getIamPolicy. בדוגמה הבאה מוצגת מדיניות של סוג ישות.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- LOCATION_ID: האזור שבו נמצא מאגר התכונות, למשל
us-central1. - PROJECT_ID: מזהה הפרויקט.
- FEATURESTORE_ID: מזהה של מאגר התכונות.
- ENTITY_TYPE_ID: מזהה סוג הישות.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:getIamPolicy" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"version": 1,
"etag": "BwXTmICm7mI",
"bindings": [
{
"role": "roles/aiplatform.entityTypeOwner",
"members": [
"user:example@example.com"
]
}
]
}
הגדרת מדיניות IAM
אפשר להגדיר מדיניות IAM במאגר תכונות או בסוג ישות.
ממשק משתמש באינטרנט
- בקטע Vertex AI במסוף Google Cloud , עוברים לדף Features.
- בוחרים אזור מהרשימה הנפתחת אזור.
- בטבלת התכונות, בוחרים מאגר פיצ'רים או סוג ישות מהעמודה מאגר פיצ'רים או סוג ישות.
- לוחצים על הרשאות.
- לוחצים על Add principal.
- מציינים חשבון משתמש ותפקיד אחד או יותר לשיוך לחשבון המשתמש.
- לוחצים על Save.
REST
כדי להגדיר את מדיניות ה-IAM במשאב, שולחים בקשת POST שמשתמשת ב-method setIamPolicy. בדוגמה הבאה מוגדרת מדיניות לסוג ישות.
הגדרת מדיניות IAM מבטלת כל מדיניות קיימת (השינויים לא מתווספים). כדי לשנות מדיניות קיימת של משאב, משתמשים ב-method getIamPolicy כדי לקבל את המדיניות הקיימת ואז מבצעים שינויים. צריך לכלול את המדיניות ששיניתם יחד עם etag בבקשה setIamPolicy.
אם קיבלתם את קוד השגיאה 409, הייתה בקשה מקבילה SetIamPolicy לעדכון המדיניות. שולחים בקשת GetIamPolicy כדי לקבל את ה-etag המעודכן של המדיניות, ואז מנסים שוב לשלוח את בקשת SetIamPolicy עם ה-etag החדש.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- LOCATION_ID: האזור שבו נמצא מאגר התכונות, למשל
us-central1. - PROJECT_ID: מזהה הפרויקט.
- FEATURESTORE_ID: מזהה של מאגר התכונות.
- ENTITY_TYPE_ID: מזהה סוג הישות.
- ROLE: תפקיד IAM שכולל את ההרשאות להענקה, כמו
roles/aiplatform.featurestoreDataViewer. - PRINCIPAL: חשבון המשתמש שמקבל את ההרשאות של התפקיד, כמו
user:myuser@example.com. - ETAG: ערך מחרוזת שמשמש למניעת מצב שבו עדכונים בו-זמניים של מדיניות יחליפו אחד את השני. הערך הזה מוחזר כחלק מהתגובה
getIamPolicy.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:setIamPolicy" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"version": 1,
"etag": "BwXTmICm7mI",
"bindings": [
{
"role": "roles/aiplatform.entityTypeOwner",
"members": [
"user:user1@example.com"
]
},
{
"role": "roles/aiplatform.featurestoreDataViewer",
"members": [
"user:user2@example.com",
"user:user3@example.com"
]
},
{
"role": "roles/aiplatform.featurestoreDataWriter",
"members": [
"user:user4@example.com",
]
}
]
}
אימות הרשאות IAM למשאב
אתם יכולים לבדוק אם למשתמש המאומת יש הרשאות IAM ספציפיות למאגר פיצ'רים או לסוג ישות.
REST
כדי לבדוק אם למשתמש יש הרשאות IAM ספציפיות למשאב, שולחים בקשת POST באמצעות השיטה testIamPermissions.
בדוגמה הבאה אפשר לבדוק אם למשתמש המאומת הנוכחי יש קבוצה של הרשאות IAM לסוג ישות.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- LOCATION_ID: האזור שבו נמצא מאגר התכונות, למשל
us-central1. - PROJECT_ID: מזהה הפרויקט.
- FEATURESTORE_ID: מזהה של מאגר התכונות.
- ENTITY_TYPE_ID: מזהה סוג הישות.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:testIamPermissions -d
גוף בקשת JSON:
{
"permissions": [
"aiplatform.googleapis.com/entityTypes.get",
"aiplatform.googleapis.com/entityTypes.readFeatureValues",
"aiplatform.googleapis.com/entityTypes.writeFeatureValues"
]
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:testIamPermissions -d"
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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:testIamPermissions -d" | Select-Object -Expand Content
{
"permissions": [
"aiplatform.googleapis.com/entityTypes.get",
"aiplatform.googleapis.com/entityTypes.readFeatureValues",
"aiplatform.googleapis.com/entityTypes.writeFeatureValues"
]
}