ניהול תפקידים

Directory API מאפשר להשתמש בקרת גישה מבוססת-תפקיד (RBAC) כדי לנהל את הגישה לתכונות בדומיין שלכם ב-Google Workspace. אפשר ליצור תפקידים בהתאמה אישית עם הרשאות, כדי להגביל גישת אדמין באופן ספציפי יותר את התפקידים המוכנים מראש שסופקו עם Google Workspace. אפשר להקצות תפקידים למשתמשים או לקבוצות אבטחה. במדריך הזה מוסבר איך לבצע חלק ומשימות בסיסיות שקשורות לתפקיד.

זוהי רשימה של המונחים הנפוצים ב-Directory API יחד עם בנוגע ל-RBAC ב-Google Workspace:

הרשאה
ההרשאה הנדרשת לביצוע משימה או פעולה במסגרת דומיין של Google Workspace. מיוצג על ידי מקור מידע Privilege. יש אין נתונים קבועים שמשויכים למשאב הזה.
תפקיד
אוסף הרשאות שמעניק לישויות שקיבלו את התפקיד הזה היכולת לבצע משימות או פעולות מסוימות. מיוצג על ידי מקור מידע על Role.
הקצאת תפקידים
הרשומה של תפקיד מסוים שניתן למשתמש או לקבוצה. מיוצג על ידי RoleAssignment מקור מידע.
קבוצת אבטחה
סוג של קבוצה ב-Cloud Identity שמשמש לשליטה בגישה לארגון במשאבי אנוש. קבוצות אבטחה יכולות להכיל גם משתמשים בודדים וגם קבוצות.

מגבלות על הקצאות תפקידים ותפקידים

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

  • אפשר ליצור עד 750 תפקידים בהתאמה אישית לכל הארגון.
  • אפשר ליצור עד 1,000 הקצאות תפקידים לכל יחידה ארגונית (OU), שבה הארגון הבסיסי (root) נחשב ליחידה. לדוגמה, אפשר להקצות 600 תפקידים בארגון הבסיסי ו-700 תפקידים בתוך יחידה ארגונית אחרת שהגדרתם, כמו מחלקה של חברה. כברירת מחדל, כל תפקידי האדמין המוכנים מראש ב-Google Workspace היקף ברמת הארגון. מידע נוסף על מגבלות על ההרשאות שאפשר להקצות ברמת היחידה הארגונית.

המגבלות הבאות על קבוצות חלות על תפקידים ועל הקצאת תפקידים:

  • אפשר להקצות כל תפקיד מלבד סופר-אדמין.
  • אפשר להקצות עד 250 תפקידים לקבוצות בסך הכול ביחידה הארגונית הכוללת ובכל יחידה ארגונית.
  • הקבוצה חייבת להיות קבוצת אבטחה בארגון שלך.
  • מומלץ להגביל את החברות בקבוצה למשתמשים בארגון שלך. שלך יכולים להוסיף משתמשים מחוץ לארגון, אבל ייתכן שלא יקבלו את הרשאות התפקיד. פרטים נוספים זמינים במאמר הגבלת החברות בקבוצה. ### הקצאת תפקידים לקבוצות

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

מיפוי של תפקידים להרשאות במסוף Google Admin

כדי להקצות תפקידים למשתמשים שמקבלים גישה להרשאות שלהם דרך במסוף Admin, ייתכן שהרשאות מסוימות נוספות יצטרכו הוענקה. לדוגמה, כדי להעניק למשתמש את היכולת ליצור משתמשים אחרים באמצעות במסוף Admin, לא רק ההרשאה USERS_CREATE חובה, אבל גם USERS_UPDATE ו-ORGANIZATION_UNITS_RETRIEVE הרשאות. הטבלה הבאה ממפה את מסוף Admin פונקציונליות למתן ההרשאות הנדרשות לניהול משתמשים יחידות ארגוניות.

הפונקציונליות של מסוף Admin נדרשות הרשאות
יחידות ארגוניות – קריאה ORGANIZATION_UNITS_RETRIEVE
יחידות ארגוניות – יצירה ORGANIZATION_UNITS_RETRIEVE + ORGANIZATION_UNITS_CREATE
יחידות ארגוניות – עדכון ORGANIZATION_UNITS_RETRIEVE + ORGANIZATION_UNITS_UPDATE
יחידות ארגוניות – מחיקה ORGANIZATION_UNITS_RETRIEVE + ORGANIZATION_UNITS_DELETE
יחידות ארגוניות ORGANIZATION_UNITS_ALL
משתמשים - קריאה USERS_RETRIEVE + ORGANIZATION_UNITS_RETRIEVE
משתמשים - יצירה USERS_CREATE‏ +‏ USERS_UPDATE‏ +‏ ORGANIZATION_UNITS_RETRIEVE
משתמשים - עדכון USERS_UPDATE + ORGANIZATION_UNITS_RETRIEVE
משתמשים - העברת משתמשים USERS_MOVE‏ +‏ USERS_RETRIEVE‏ +‏ ORGANIZATION_UNITS_RETRIEVE
משתמשים - שינוי שמות המשתמשים USERS_ALIAS‏ +‏ USERS_RETRIEVE‏ +‏ ORGANIZATION_UNITS_RETRIEVE
משתמשים - איפוס סיסמה USERS_RESET_PASSWORD‏ +‏ USERS_RETRIEVE‏ +‏ ORGANIZATION_UNITS_RETRIEVE
משתמשים - אילוץ שינוי סיסמה USERS_FORCE_PASSWORD_CHANGE‏ +‏ USERS_RETRIEVE‏ +‏ ORGANIZATION_UNITS_RETRIEVE
משתמשים - הוספה/הסרה של כינויים USERS_ADD_NICKNAME‏ +‏ USERS_RETRIEVE‏ +‏ ORGANIZATION_UNITS_RETRIEVE
משתמשים - השעיית משתמשים USERS_SUSPEND‏ +‏ USERS_RETRIEVE‏ +‏ ORGANIZATION_UNITS_RETRIEVE
קבוצות GROUPS_ALL
אבטחה - ניהול אבטחת משתמשים USER_SECURITY_ALL‏ +‏ USERS_RETRIEVE‏ +‏ ORGANIZATION_UNITS_RETRIEVE

דוגמאות לתרחישים לדוגמה

לפני שמתחילים

משלימים את אימות והרשאה ב-Google Workspace.

קבלת רשימה של הרשאות דומיין

כדי לקבל רשימה מחולקת לדפים של הרשאות נתמכות בדומיין, אפשר להשתמש privileges.list() .

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

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

בקשה

GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roles/ALL/privileges

תשובה

תגובה מוצלחת תחזיר סטטוס HTTP 200 . יחד עם קוד הסטטוס, התגובה תחזיר את ההרשאות שנתמכות בדומיין:

{
  "kind": "admin\#directory\#privileges",
  "etag": ...,
  "items": [
    {
      "kind": "admin\#directory\#privilege",
      "etag": ...,
      "serviceId": "02afmg282jiquyg",
      "privilegeName": "APP_ADMIN",
      "isOuScopable": false
    },
    {
      "kind": "admin\#directory\#privilege",
      "etag": ...,
      "serviceId": "04f1mdlm0ki64aw",
      "privilegeName": "MANAGE_USER_SETTINGS",
      "isOuScopable": true,
      "childPrivileges": [
        {
          "kind": "admin\#directory\#privilege",
          "etag": ...,
          "serviceId": "04f1mdlm0ki64aw",
          "privilegeName": "MANAGE_APPLICATION_SETTINGS",
          "isOuScopable": true
        }
      ]
    },
    ...
  ]
}

אחזור של תפקידים קיימים

כדי לקבל רשימה של התפקידים הקיימים, צריך להשתמש בבקשת GET הבאה ולכלול את ההרשאה המתוארת בהרשאה בקשות.

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

  • אם המפיץ מקבל תפקידים עבור לקוח, יש להשתמש במספר הלקוח השתמשתי באחזור משתמש.

בקשה

GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roles

תשובה

תגובה מוצלחת מחזירה סטטוס HTTP 200 . יחד עם קוד הסטטוס, התגובה תחזיר את התפקידים שקיימים בדומיין:

{
  "kind": "admin\#directory\#roles",
  "etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/DywA6_jaJCYw-f0lFs2-g17UWe8\"",
  "items": [
    {
      "kind": "admin\#directory\#role",
      "etag": ... ,
      "roleId": "3894208461012993",
      "roleName": "_SEED_ADMIN_ROLE",
      "roleDescription": "Google Workspace Administrator Seed Role",
      "rolePrivileges": [
        {
          "privilegeName": "SUPER_ADMIN",
          "serviceId": "01ci93xb3tmzyin"
        },
        {
          "privilegeName": "ROOT_APP_ADMIN",
          "serviceId": "00haapch16h1ysv"
        },
        {
          "privilegeName": "ADMIN_APIS_ALL",
          "serviceId": "00haapch16h1ysv"
        },
        ...
      ],
      "isSystemRole": true,
      "isSuperAdminRole": true
    },
    {
      "kind": "admin\#directory\#role",
      "etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/bTXiZXfuK1NGr_f4paosCWXuHmw\"",
      "roleId": "3894208461012994",
      "roleName": "_GROUPS_ADMIN_ROLE",
      "roleDescription": "Groups Administrator",
      "rolePrivileges": [
        {
          "privilegeName": "CHANGE_USER_GROUP_MEMBERSHIP",
          "serviceId": "01ci93xb3tmzyin"
        },
        {
          "privilegeName": "USERS_RETRIEVE",
          "serviceId": "00haapch16h1ysv"
        },
        {
          "privilegeName": "GROUPS_ALL",
          "serviceId": "00haapch16h1ysv"
        },
        {
          "privilegeName": "ADMIN_DASHBOARD",
          "serviceId": "01ci93xb3tmzyin"
        },
        {
          "privilegeName": "ORGANIZATION_UNITS_RETRIEVE",
          "serviceId": "00haapch16h1ysv"
        }
      ],
      "isSystemRole": true
    },
    ...
  ]
}

הצגת רשימה של כל הקצאות התפקידים

כדי לקבל רשימה בחלוקה לדפים של כל ההקצאות הישירות של תפקידים, משתמשים roleAssignments.list() . ה-API עשוי להחזיר תוצאות ריקות עם אסימון דף כאשר userKey הפרמטר הוגדר. צריך להמשיך את החלוקה לדפים עד שלא יהיה אסימון דף הוחזרו.

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

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

בקשה

GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roleassignments

תשובה

תגובה מוצלחת מחזירה סטטוס HTTP 200 . יחד עם קוד הסטטוס, התגובה תחזיר את כל התפקידים שהוקצו בדומיין:

{
  "kind": "admin\#directory\#roleAssignment",
  "etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/VdrrUEz7GyXqlr9I9JL0wGZn8yE\"",
  "roleAssignmentId:"3894208461013211",
  "assignedTo:"100662996240850794412",
  "assigneeType:"user",
  "scopeType:"CUSTOMER",
}

הצגה של רשימת כל הקצאות התפקידים העקיפות

כדי לקבל רשימה בחלוקה לדפים של כל הקצאות התפקידים, כולל הקצאות עקיפות. שהוקצו למשתמש בגלל הקבוצות שהוא שייך אליהן, משתמשים ברכיב roleAssignments.list() .

ה-API עשוי להחזיר תוצאות ריקות עם אסימון דף. עליך להמשיך החלוקה לדפים עד שלא מוחזר אסימון דף.

  • אם אתם אדמינים שמקבלים הקצאות תפקידים בדומיין שלכם, השתמשו ב- my_customer כמספר הלקוח.

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

  • מחליפים את USER_KEY בערך שמזהה את המשתמש בבקשת ה-API. מידע נוסף זמין במאמר הבא: users.get

בקשה

GET https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roleassignments?userKey=USER_KEY&includeIndirectRoleAssignments=true

תשובה

תגובה מוצלחת מחזירה סטטוס HTTP 200 . יחד עם קוד הסטטוס, התגובה תחזיר את כל התפקידים שהוקצו בדומיין assigneeType הוא user או group:

{
  "kind": "admin\#directory\#roleAssignment",
  "etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/VdrrUEz7GyXqlr9I9JL0wGZn8yE\"",
  "roleAssignmentId:"3894208461013211",
  "assignedTo:"100662996240850794412",
  "assigneeType:"group",
  "scopeType:"CUSTOMER",
}

יצירת תפקיד חדש

כדי ליצור תפקיד חדש, צריך להשתמש בבקשת POST הבאה ולכלול את ההרשאה המתוארת בהרשאה בקשות. מוסיפים privilegeName ו-serviceId לכל הרשאה שאמורה להיות שקיבלו את התפקיד הזה. למאפיינים של הבקשה והתגובה יש לעיין ב-API הפניה.

בקשה

POST https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roles

{
  "roleName": "My New Role",
  "rolePrivileges": [
    {
      "privilegeName": "USERS_ALL",
      "serviceId": "00haapch16h1ysv"
    },
    {
      "privilegeName": "GROUPS_ALL",
      "serviceId": "00haapch16h1ysv"
    }
  ]
}

תשובה

תגובה מוצלחת מחזירה סטטוס HTTP 200 . יחד עם , התגובה תחזיר את המאפיינים של התפקיד החדש:

{
  "kind": "admin\#directory\#role",
  "etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/uX9tXw0qyijC9nUKgCs08wo8aEM\"",
  "roleId": "3894208461013031",
  "roleName": "My New Role",
  "rolePrivileges": [
    {
      "privilegeName": "GROUPS_ALL",
      "serviceId": "00haapch16h1ysv"
    },
    {
      "privilegeName": "USERS_ALL",
      "serviceId": "00haapch16h1ysv"
    }
  ]
}

יצירה של הקצאת תפקיד

כדי להקצות תפקיד, צריך להשתמש בשיטה הבאה של POST ולכלול את ההרשאה מתואר ב: אישור בקשות.

בקשה

POST https://admin.googleapis.com/admin/directory/v1/customer/customer_id/roleassignments

{
  "roleId": "3894208461012995",
  "assignedTo": "100662996240850794412",
  "scopeType": "CUSTOMER"
}

תשובה

תגובה מוצלחת מחזירה סטטוס HTTP 200 . יחד עם , התגובה תחזיר את המאפיינים עבור הקצאת התפקיד החדשה:

{
  "kind": "admin\#directory\#roleAssignment",
  "etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/VdrrUEz7GyXqlr9I9JL0wGZn8yE\"",
  "roleAssignmentId": "3894208461013211",
  "roleId": "3894208461012995",
  "assignedTo": "100662996240850794412",
  "scopeType": "CUSTOMER"
}

יצירת הקצאת תפקיד עם תנאים

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

  • רלוונטי רק לקבוצות אבטחה
  • לא רלוונטי לקבוצות אבטחה

אם השדה condition יוגדר, הוא ייכנס לתוקף רק כשהמשאב שהגישה אליהם עומדת בתנאי. אם השדה condition ריק, התפקיד (roleId) הוא הוחלו על הגורם (assignedTo) בהיקף (scopeType) ללא תנאי.

כדי להקצות תפקיד למשתמש, צריך להשתמש בשיטת ה-POST הבאה ולכלול את הרשאה המתוארת ב מתן הרשאה בקשות.

מוסיפים גוף JSON עם התג user_id של המשתמש, שאפשר לקבל ממנו users.get(), ה-roleId בתור כפי שמתואר בקטע קבלת תפקידים קיימים וב-condition. צריך להשתמש בשתי מחרוזות תנאים מילה במילה כמו שמתואר בהמשך, פועלים רק עם עורך קבוצות Google ו-Google Groups תפקידי אדמין מוגדרים מראש. התנאים האלה חלים תחביר של תנאי Cloud IAM.

בקשה

רלוונטי רק לקבוצות אבטחה
POST https://admin.googleapis.com/admin/directory/v1.1beta1/customer/customer_id/roleassignments

{
  "roleId": "3894208461012995",
  "assignedTo": "100662996240850794412",
  "scopeType": "CUSTOMER",
  "condition": "api.getAttribute('cloudidentity.googleapis.com/groups.labels',
    []).hasAny(['groups.security']) && resource.type ==
    'cloudidentity.googleapis.com/Group'"
}
לא רלוונטי לקבוצות אבטחה
POST https://admin.googleapis.com/admin/directory/v1.1beta1/customer/customer_id/roleassignments

{
  "roleId": "3894208461012995",
  "assignedTo": "100662996240850794412",
  "scopeType": "CUSTOMER",
  "condition": "!api.getAttribute('cloudidentity.googleapis.com/groups.labels',
    []).hasAny(['groups.security']) && resource.type ==
    'cloudidentity.googleapis.com/Group'"
}

תשובה

תגובה מוצלחת מחזירה סטטוס HTTP 200 . יחד עם , התגובה תחזיר את המאפיינים עבור הקצאת התפקיד החדשה:

{
  "kind": "admin\#directory\#roleAssignment",
  "etag": "\"sxH3n22L0-77khHtQ7tiK6I21Yo/VdrrUEz7GyXqlr9I9JL0wGZn8yE\"",
  "roleAssignmentId": "3894208461013211",
  "roleId": "3894208461012995",
  "assignedTo": "100662996240850794412",
  "scopeType": "CUSTOMER",
  "condition": "!api.getAttribute('cloudidentity.googleapis.com/groups.labels',
    []).hasAny(['groups.security']) && resource.type ==
    'cloudidentity.googleapis.com/Group'"
}