שליטה בגישה למשאבים של Vertex AI Feature Store (גרסה קודמת)

אתם יכולים לשלוט בגישה למשאבים של 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.

ממשק משתמש באינטרנט

  1. בקטע Vertex AI במסוף Google Cloud , עוברים לדף Features.

    כניסה לדף Features

  2. בוחרים אזור מהרשימה הנפתחת אזור.
  3. בטבלת התכונות, בוחרים מאגר פיצ'רים או סוג ישות מהעמודה מאגר פיצ'רים או סוג ישות.
  4. לוחצים על הרשאות.
  5. כדי להציג הרשאות ברמת המשאב, משביתים את האפשרות הצגת הרשאות שעברו בירושה.

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

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

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 במאגר תכונות או בסוג ישות.

ממשק משתמש באינטרנט

  1. בקטע Vertex AI במסוף Google Cloud , עוברים לדף Features.

    כניסה לדף Features

  2. בוחרים אזור מהרשימה הנפתחת אזור.
  3. בטבלת התכונות, בוחרים מאגר פיצ'רים או סוג ישות מהעמודה מאגר פיצ'רים או סוג ישות.
  4. לוחצים על הרשאות.
  5. לוחצים על Add principal.
  6. מציינים חשבון משתמש ותפקיד אחד או יותר לשיוך לחשבון המשתמש.
  7. לוחצים על 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
אתם אמורים לקבל תגובת JSON שדומה לזו: התגובה כוללת רק את ההרשאות מגוף ה-JSON של הבקשה שזמינות למשתמש שאומת כרגע.
{
  "permissions": [
    "aiplatform.googleapis.com/entityTypes.get",
    "aiplatform.googleapis.com/entityTypes.readFeatureValues",
    "aiplatform.googleapis.com/entityTypes.writeFeatureValues"
  ]
}