يمكن للمشرفين إنشاء أدوار مشرف مخصّصة في "وحدة تحكّم المشرف" للسماح لبعض الأفراد أو المجموعات الذين لديهم ترخيص Education Plus بإجراء ما يلي:
عرض إحصاءات Classroom لفهم البيانات مثل اكتمال المهام الدراسية ومؤشرات الدرجات واستخدام Classroom.
الوصول مؤقتًا إلى الصفوف في Classroom لدعم المعلّمين ونشر الإشعارات وغير ذلك، بدون تعيينهم كمعلّم مساعد دائم.
يشرح هذا الدليل كيفية إعداد هذه الميزات في نطاقك باستخدام واجهات برمجة التطبيقات في Google.
برمجة عملية منح الأدوار المخصَّصة
لبرمجة عملية إسناد الأدوار المخصَّصة:
- أنشئ مجموعات أمان لتنظيم المستخدمين الذين يمكنهم الوصول إلى هذه الميزات.
- أضِف أعضاءً إلى المجموعات.
- أنشئ دور مشرف مخصصًا من خلال اختيار الامتياز الصحيح.
- استرداد أرقام تعريف الوحدات التنظيمية.
- تطبيق الدور المخصَّص للمشرف على المجموعات التي تم إنشاؤها حديثًا
المتطلبات الأساسية
- اقرأ أدلة البدء السريع لفهم كيفية إعداد تطبيق وتشغيله باستخدام Google APIs بلغات مثل JavaScript وPython وJava.
- يُرجى الاطِّلاع على نظرة عامة على Groups API.
- قبل استخدام أي من واجهات برمجة تطبيقات Cloud Identity الموضَّحة في هذا الدليل، عليك إعداد Cloud Identity. تُستخدم واجهات برمجة التطبيقات هذه لإنشاء مجموعات لمنح امتيازات المشرف.
- إعداد Groups API
إنشاء مجموعات أمان
أنشِئ مجموعة أمان باستخدام الطريقة groups.create
. يمكن ضبط مجموعة كمجموعة أمان عند تضمين تصنيف الأمان في الحقل labels
من الطلب. للاطّلاع على مزيد من المعلومات
والقيود المتعلقة بإنشاء مجموعات الأمان، يُرجى الرجوع إلى دليل
إنشاء مجموعات الأمان.
POST https://cloudidentity.googleapis.com/v1/groups
يمكنك اختياريًا تضمين معلمة طلب البحث InitialGroupConfig
لإعداد مالك المجموعة:
POST https://cloudidentity.googleapis.com/v1/groups&initialGroupConfig={initialGroupConfig}
يتطلب الحساب الذي يجري هذا الطلب أحد النطاقات التالية:
https://www.googleapis.com/auth/cloud-identity.groups
https://www.googleapis.com/auth/cloud-identity
https://www.googleapis.com/auth/cloud-platform
نص الطلب
يحتوي نص الطلب على تفاصيل المجموعة التي سيتم إنشاؤها. يجب أن يبدأ
customerId
بالحرفين "C" (على سبيل المثال، C046psxkn
).
البحث عن الرقم التعريفي للعميل.
{
parent: "customers/<customer-id>",
description: "This is the leadership group of school A.",
displayName: "Leadership School A",
groupKey: {
id: "leadership_school_a@example.com"
},
labels: {
"cloudidentity.googleapis.com/groups.security": "",
"cloudidentity.googleapis.com/groups.discussion_forum": ""
}
}
الإجابة
يحتوي الرد على مثيل جديد من
المورد Operation
.
{
done: true,
response: {
@type: "type.googleapis.com/google.apps.cloudidentity.groups.v1.Group",
name: "groups/<group-id>", // unique group ID
groupKey: {
id: "leadership_school_a@example.com" // group email address
},
parent: "customers/<customer-id>",
displayName: "Leadership School A",
description: "This is the leadership group of school A.",
createTime: "<created time>",
updateTime: "<updated time>",
labels: {
"cloudidentity.googleapis.com/groups.security": "",
"cloudidentity.googleapis.com/groups.discussion_forum": ""
}
}
}
إضافة أعضاء مجموعة
بعد إنشاء المجموعة، تكون الخطوة التالية هي إضافة الأعضاء. يمكن أن يكون عضو المجموعة مستخدمًا أو مجموعة أمان أخرى. وفي حال إضافة مجموعة كعضو في مجموعة أخرى، قد يتأخر نشر العضوية لمدة تصل إلى 10 دقائق. بالإضافة إلى ذلك، تعرض واجهة برمجة التطبيقات خطأً للدورات في اشتراكات المجموعة. على سبيل المثال، إذا كان group1
عضوًا في group2
، لا يمكن لـ group2
أن يكون عضوًا في group1
.
لإضافة عضو إلى مجموعة، استخدم طلب POST التالي.
واجهة برمجة التطبيقات للدليل members.insert
:
POST https://admin.googleapis.com/admin/directory/v1/groups/{groupKey}/members
معلمة المسار groupKey
هي عنوان البريد الإلكتروني لمجموعة العضو الجديد أو المعرّف الفريد للمجموعة.
يتطلب الحساب الذي يقدم طلب POST أحد النطاقات التالية:
https://apps-apis.google.com/a/feeds/groups/
https://www.googleapis.com/auth/admin.directory.group
https://www.googleapis.com/auth/admin.directory.group.member
نص الطلب
يحتوي نص الطلب على تفاصيل member
التي سيتم إنشاؤها.
{
email: "person_one@example.com",
role: "MEMBER", // can be `MEMBER`, `OWNER`, `MANAGER`
}
الإجابة
يحتوي الرد على المثيل الجديد للعضو.
{
kind: "admin#directory#member",
etag: "<etag-value>", // role's unique ETag
id: "4567", // group member's unique ID
email: "person_one@example.com",
role: "MEMBER",
type: "GROUP",
status: "ACTIVE"
}
يجب تقديم هذا الطلب لكل مستخدم ترغب في إضافته كعضو. يمكنك تجميع هذه الطلبات لتقليل عدد اتصالات HTTP التي يجب على العميل إجراؤها.
إنشاء دور مشرف مخصَّص بامتيازات خاصة
تتيح لك Directory API استخدام التحكّم في الوصول المستند إلى الدور (RBAC) لإدارة الوصول إلى الميزات في نطاق Google Workspace. يمكنك إنشاء أدوار مخصَّصة ذات امتيازات لتقييد وصول المشرف بشكلٍ أكثر تحديدًا من الأدوار المحدَّدة مسبقًا المقدَّمة في Google Workspace. يمكنك تعيين الأدوار للمستخدمين أو مجموعات الأمان. للحصول على معلومات أكثر تفصيلاً عن قيود إنشاء الأدوار، يمكنك الرجوع إلى قيود إنشاء الأدوار المخصصة.
لإنشاء دور جديد، استخدِم طلب POST التالي.
واجهة برمجة التطبيقات للدليل roles.insert
:
POST https://admin.googleapis.com/admin/directory/v1/customer/{customer}/roles
تتطابق السمة customerId
مع القيمة الواردة في
الخطوة 1 من هذا الدليل.
يتطلّب الحساب الذي يقدّم طلب POST النطاق التالي:
https://www.googleapis.com/auth/admin.directory.rolemanagement
نص الطلب
يحتوي نص الطلب على تفاصيل role
التي سيتم إنشاؤها. أضِف privilegeName
وserviceId
لكل امتياز يجب منحه لهذا الدور.
إحصاءات Classroom
يجب الحصول على الامتياز EDU_ANALYTICS_DATA_ACCESS
لإنشاء دور مخصَّص يمكنه الوصول إلى بيانات الإحصاءات، بالإضافة إلى ضبط serviceId
على 019c6y1840fzfkt
.
{
roleName: "Education Admin", // customize as needed
roleDescription: "Access to view analytics data", // customize as needed
rolePrivileges: [
{
privilegeName: "EDU_ANALYTICS_DATA_ACCESS",
serviceId: "019c6y1840fzfkt"
}
]
}
إمكانية الوصول المؤقت إلى الصف
ويجب الحصول على الامتياز ADMIN_OVERSIGHT_MANAGE_CLASSES
لإنشاء دور مخصَّص يمكنه الوصول إلى الصفوف مؤقتًا، بالإضافة إلى ضبط serviceId
على 019c6y1840fzfkt
.
{
roleName: "Education Admin", // customize as needed
roleDescription: "Access to manage classes privilege", // customize as needed
rolePrivileges: [
{
privilegeName: "ADMIN_OVERSIGHT_MANAGE_CLASSES",
serviceId: "019c6y1840fzfkt"
}
]
}
استدعِ الطريقة privileges.list
لاسترداد
قائمة privilegeIds
وserviceIds
.
الإجابة
يحتوي الرد على المثيل الجديد للدور.
إحصاءات Classroom
{
kind: "admin#directory#role",
etag: "<etag-value>", // role's unique ETag
roleId: "<role-id>", // role's unique ID
roleName: "Education Admin",
roleDescription: "Access to view analytics data",
rolePrivileges: [
{
privilegeName: "EDU_ANALYTICS_DATA_ACCESS",
serviceId: "019c6y1840fzfkt"
}
],
isSystemRole: false,
isSuperAdminRole: false
}
إمكانية الوصول المؤقت إلى الصف
{
kind: "admin#directory#role",
etag: "<etag-value>", // role's unique ETag
roleId: "<role-id>", // role's unique ID
roleName: "Education Admin",
roleDescription: "Access to manage classes privilege",
rolePrivileges: [
{
privilegeName: "ADMIN_OVERSIGHT_MANAGE_CLASSES",
serviceId: "019c6y1840fzfkt"
}
],
isSystemRole: false,
isSuperAdminRole: false
}
استرداد أرقام تعريف الوحدة التنظيمية
يمكنك قصر وصول دور المشرف المخصّص على وحدة تنظيمية واحدة أو أكثر باستخدام رقم تعريف الوحدة التنظيمية. استخدِم
OrgUnit API لاسترداد orgUnitId
.
إحصاءات Classroom
ننصحك باختيار وحدة تنظيمية للطلاب ووحدة تنظيمية للمعلّمين عند تعيين دور المشرف المخصّص إلى مستخدم أو مجموعة محدّدة. يتيح ذلك للمستخدمين الحاصلين على امتياز المشرف المخصّص الوصول إلى بيانات الطلاب والصف في الوحدات التنظيمية. إذا تم حذف الوحدة التنظيمية للطلاب، لن يتمكن المستخدمون المعينون من الوصول إلى بيانات الطلاب. إذا تم حذف الوحدة التنظيمية للمعلّمين، لن يتمكّن المستخدمون المحدّدون من الوصول إلى البيانات على مستوى الصف الدراسي.
إمكانية الوصول المؤقت إلى الصف
يمكنك فرض قيود على امتيازات الوصول المؤقت إلى الصفوف من خلال السماح للمستخدمين الحاصلين على دور المشرف المخصّص بالوصول إلى الصفوف في وحدات تنظيمية معيّنة. في حال حظر الوصول إلى وحدة تنظيمية، سيكون بإمكان المجموعة التي تم تعيين دور المشرف المخصّص لها الوصول فقط إلى الصفوف التي يكون فيها المعلّم الأساسي للصف في تلك الوحدة التنظيمية.
منح الدور المخصَّص للمشرف
لتعيين دور المشرف المخصص إلى مجموعة، استخدم طلب POST التالي. يُرجى الاطِّلاع على إرشادات القيود المخصّصة للأدوار وإسناد الأدوار بالنسبة إلى حدود تعيين الأدوار.
واجهة برمجة التطبيقات للدليل roleAssignments.insert
:
POST https://admin.googleapis.com/admin/directory/v1/customer/{customer}/roleassignments
تعيين إلى مجموعة أو مستخدم فردي
في حال منح الامتياز إلى مجموعة، يجب تضمين groupId
في الحقل
assignedTo
ضمن نص الطلب. تم الحصول على groupId
في خطوة
إنشاء مجموعات الأمان. في حال تخصيص
الميزة لمستخدم فردي، يجب تضمين رقم تعريف المستخدم في الحقل assignedTo
في نص الطلب. يمكن استرداد رقم تعريف المستخدم من خلال استدعاء
users.get
وتحديد عنوان البريد الإلكتروني
للمستخدم على أنه المعلَمة userKey
أو من خلال طلب
users.list
.
يتطلّب الحساب الذي يقدّم طلب POST النطاق التالي:
https://www.googleapis.com/auth/admin.directory.rolemanagement
نص الطلب
يحتوي نص الطلب على تفاصيل RoleAssignment
المطلوب إنشاؤها. يجب تقديم طلب واحد لكل وحدة تنظيمية تريد ربطها بهذه المجموعة.
{
roleId: "<role-id>", // role's unique ID obtained from Step 3
assignedTo: "<id>", // group ID or user ID
scopeType: "ORG_UNIT", // can be `ORG_UNIT` or `CUSTOMER`
orgUnitId: "<org-unit-id>" // organizational unit ID referenced in Step 4
}
الإجابة
يحتوي الرد على المثيل الجديد من RoleAssignment
.
{
kind: "admin#directory#roleAssignment",
etag: "<etag-value>",
roleAssignmentId: "<role-assignment-id>",
roleId: "<role-id>",
assignedTo: "<group-id or user-id>",
assigneeType: "GROUP",
scopeType: "ORG_UNIT",
orgUnitId: "<org-unit-id>"
}
المراجِع
يمكنك العثور على معلومات إضافية على الرابط التالي:
- نظرة عامة على Directory API
- المصادقة والتفويض الخاص بـ Directory API
- مستندات REST لواجهة برمجة تطبيقات الدليل
- دعم مطوّر برامج SDK للمشرف