تتيح لك واجهة برمجة التطبيقات للدليل استخدام التحكّم في الوصول المستند إلى الدور (RBAC) لإدارة الوصول إلى الميزات في نطاق Google Workspace. يمكنك إنشاء أدوار مخصصة مع امتيازات لتقييد وصول المشرف على نحو أكثر تحديدًا من الأدوار سابقة التحديد التي يوفرها Google Workspace. يمكنك تعيين أدوار للمستخدمين أو مجموعات الأمان يشرح هذا الدليل كيفية إجراء بعض المهام الأساسية المتعلقة بالأدوار.
في ما يلي قائمة بالمصطلحات الشائعة التي تستخدمها واجهة برمجة التطبيقات للدليل مع في ما يتعلّق بـ RBAC في Google Workspace:
- الامتياز
- الإذن اللازم لتنفيذ مهمة أو عملية في
نطاق Google Workspace. يمثلها
Privilege
. هناك ليست بيانات دائمة مرتبطة بهذا المورد. - Role
- مجموعة من الامتيازات التي تمنح الكيانات التي تملك هذا الدور
القدرة على أداء مهام أو عمليات معينة. يمثلها
Role
المرجع .
- إسناد الدور
- سجلّ دور معيّن يتم منحه للمستخدم أو المجموعة. ممثّل بـ
RoleAssignment
المرجع - مجموعة الأمان
- نوع من مجموعة Cloud Identity يُستخدم للتحكم في الوصول إلى المؤسسات الموارد. ويمكن أن تحتوي مجموعات الأمان على مستخدمين فرديين ومجموعات على حد سواء.
حدود إسناد الأدوار والأدوار
يمكنك إنشاء عدد محدود فقط من الأدوار المخصَّصة أو عمليات إسناد الأدوار، لذلك إذا تقترب من الحدّ المسموح به، يمكنك دمجه أو إزالته للبقاء ضمن الحد. تنطبق الحدود التالية على الأدوار وعمليات إسناد الأدوار:
- يمكنك إنشاء ما يصل إلى 750 دورًا مخصَّصًا لمؤسستك بأكملها.
- يمكنك إنشاء ما يصل إلى 1,000 عملية تعيين أدوار لكل الوحدة التنظيمية (OU)، حيث تعتبر المؤسسة الجذر وحدة. مثلاً، يمكنك تعيين 600 دور في المؤسسة الجذر و700 دور. داخل وحدة تنظيمية أخرى حددتها، مثل قسم في شركة. يتم ضبط جميع أدوار المشرف المنشأة مسبقًا في Google Workspace على على مستوى المؤسسة. مزيد من المعلومات حول القيود المفروضة على الامتيازات التي يمكن تعيينها على مستوى الوحدة التنظيمية.
تنطبق الحدود القصوى المسموح بها على الأدوار وعملية إسناد الأدوار للمجموعات على النحو التالي:
- يمكنك تعيين أي دور باستثناء المشرف المتميز.
- يمكنك الحصول على ما يصل إلى 250 عملية تعيين أدوار للمجموعات بشكل إجمالي في الوحدة التنظيمية الإجمالية. وداخل كل وحدة تنظيمية.
- يجب أن تكون المجموعة مجموعة أمان في مؤسستك.
- ننصح بحصر عضوية المجموعة على المستخدمين في مؤسستك. إِنْتَ يمكنهم إضافة مستخدمين من خارج مؤسستك، ولكنهم قد لا يحصل على امتيازات الدور. للحصول على التفاصيل، يمكنك مراجعة حظر العضوية في مجموعة ### إسناد الأدوار إلى المجموعات
إذا كنت بحاجة إلى تعيين أكثر من 1000 دور في وحدة تنظيمية، يمكنك إضافة عدة أدوار مجموعة أمان وإسناد دور إليها. دور المجموعة للمهام بعض القيود الإضافية - راجع مركز مساعدة المشرفين للحصول على معلومات محددة.
ربط الامتياز في "وحدة تحكّم المشرف في Google"
لتعيين الأدوار للمستخدمين الذين يمكنهم الوصول إلى امتيازاتهم من خلال
وحدة تحكم المشرف، قد يلزم تعيين بعض الامتيازات الإضافية
ممنوح. فعلى سبيل المثال، لمنح أحد المستخدمين إمكانية إنشاء حسابات مستخدمين آخرين من خلال
وحدة تحكم المشرف، فهو ليس فقط امتياز USERS_CREATE
مطلوبة ولكن أيضًا USERS_UPDATE
وORGANIZATION_UNITS_RETRIEVE
الامتيازات. يربط الجدول التالي "وحدة تحكّم المشرف"
الوظائف إلى الأذونات المميزة المطلوبة لإدارة المستخدمين
الوحدات التنظيمية.
وظيفة "وحدة تحكّم المشرف" | الامتيازات المطلوبة |
---|---|
الوحدات التنظيمية - القراءة | 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()
. قد تعرض واجهة برمجة التطبيقات نتائج فارغة مع رمز مميّز للصفحة عند استخدام 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()
.
قد تعرض واجهة برمجة التطبيقات نتائج فارغة مع رمز مميّز للصفحة. يجب المتابعة إلى أن يتم عرض رمز مميّز للصفحة
إذا كنت مشرفًا تحصل على عمليات تعيين الأدوار في نطاقك الخاص، يمكنك استخدام
my_customer
كالرقم التعريفي للعميل.إذا كنت مورّدًا تحصل على عمليات تعيين أدوار لأحد عملائك، استخدام الرقم التعريفي للعميل الذي يعرضه الحقل استرداد المستخدم.
استبدِل
USER_KEY
بقيمة تحدد المستخدم في طلب واجهة برمجة التطبيقات. لمزيد من المعلومات، يُرجى مراجعة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
لكل امتياز يجب أن يكون
ممنوح لهذا الدور. لمعرفة خصائص الطلبات والاستجابة، يمكنك الاطّلاع على واجهة برمجة التطبيقات
المرجع:
الطلب
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
. تشير رسالة الأشكال البيانية
يجب استخدام سلسلتي شرط حرفيًا كما هو موضح أدناه،
لا تعمل إلا مع "محرِّر المجموعات" و"قارئ المجموعات"
أدوار سابقة التحديد للمشرفين.
تتبع هذه الشروط
بنية شرط 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'"
}