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
ולכלול את ההרשאה
מתואר ב:
אישור בקשות.
כדי להקצות את התפקיד למשתמש, צריך להוסיף גוף JSON עם
user_id
של המשתמש, שבה אפשר מקבלים מ-users.get()
,roleId
(כפי שמתואר ב קבלת תפקידים קיימים) וגםscope_type
.כדי להקצות את התפקיד לחשבון שירות, צריך להוסיף גוף JSON עם
unique_id
של חשבון השירות (כפי שמוגדר ב ניהול זהויות והרשאות גישה (IAM)),roleId
(כפי שמתואר קבלת תפקידים קיימים) וגםscope_type
.כדי להקצות את התפקיד לקבוצה, צריך להוסיף גוף JSON עם
group_id
של של הקבוצה, שאפשר לקבלgroups.get()
,roleId
(כפי שמתואר קבלת תפקידים קיימים), וגםscope_type
.
בקשה
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'"
}