Policy

מדיניות של ניהול זהויות והרשאות גישה (IAM), שמציינת את אמצעי בקרת הגישה למשאבים ב-Google Cloud.

Policy הוא אוסף של bindings. binding מקשרת members אחד או יותר, או חשבונות משתמשים, לrole יחיד. חשבונות ראשיים יכולים להיות חשבונות משתמשים, חשבונות שירות, קבוצות Google ודומיינים (כמו G Suite). role היא רשימה של הרשאות עם שם. כל role יכול להיות תפקיד מוגדר מראש ב-IAM או תפקיד בהתאמה אישית שנוצר על ידי משתמש.

בסוגים מסוימים של משאבים ב-Google Cloud, אפשר גם לציין condition ב-binding. condition הוא ביטוי לוגי שמאפשר גישה למשאב רק אם ערך הביטוי הוא true. תנאי יכול להוסיף מגבלות על סמך מאפיינים של הבקשה, של המשאב או של שניהם. במאמרי העזרה של IAM מוסבר אילו משאבים תומכים בתנאים במדיניות ה-IAM שלהם.

דוגמה ל-JSON:

    {
      "bindings": [
        {
          "role": "roles/resourcemanager.organizationAdmin",
          "members": [
            "user:mike@example.com",
            "group:admins@example.com",
            "domain:google.com",
            "serviceAccount:my-project-id@appspot.gserviceaccount.com"
          ]
        },
        {
          "role": "roles/resourcemanager.organizationViewer",
          "members": [
            "user:eve@example.com"
          ],
          "condition": {
            "title": "expirable access",
            "description": "Does not grant access after Sep 2020",
            "expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')",
          }
        }
      ],
      "etag": "BwWWja0YfJA=",
      "version": 3
    }

דוגמה ל-YAML:

    bindings:
    - members:
      - user:mike@example.com
      - group:admins@example.com
      - domain:google.com
      - serviceAccount:my-project-id@appspot.gserviceaccount.com
      role: roles/resourcemanager.organizationAdmin
    - members:
      - user:eve@example.com
      role: roles/resourcemanager.organizationViewer
      condition:
        title: expirable access
        description: Does not grant access after Sep 2020
        expression: request.time < timestamp('2020-10-01T00:00:00.000Z')
    etag: BwWWja0YfJA=
    version: 3

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

ייצוג ב-JSON
{
  "version": integer,
  "bindings": [
    {
      object (Binding)
    }
  ],
  "etag": string
}
שדות
version

integer

מציין את הפורמט של המדיניות.

הערכים התקפים הם 0,‏ 1 ו-3. בקשות שמציינות ערך לא תקין נדחות.

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

  • קבלת מדיניות שכוללת קישור תפקיד מותנה
  • הוספה של קישור תפקיד מותנה למדיניות
  • שינוי של קישור תפקיד מותנה במדיניות
  • הסרה של קישור תפקיד, עם או בלי תנאי, ממדיניות שכוללת תנאים

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

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

במאמרי העזרה של IAM מוסבר אילו משאבים תומכים בתנאים במדיניות ה-IAM שלהם.

bindings[]

object (Binding)

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

ב-bindings ב-Policy אפשר להפנות עד 1,500 חשבונות משתמשים, ומתוכם עד 250 יכולים להיות קבוצות Google. כל מופע של חשבון משתמש נספר במסגרת המגבלות האלה. לדוגמה, אם ההרשאה bindings מעניקה 50 תפקידים שונים לחשבון המשתמש user:alice@example.com, ולא לחשבון משתמש אחר, תוכלו להוסיף עוד 1,450 חשבונות משתמשים להרשאה bindings במדיניות Policy.

etag

string (bytes format)

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

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

מחרוזת בקידוד Base64.