تحديد أدوار المشرف المخصَّصة لميزات Classroom

يمكن للمشرفين إنشاء أدوار مشرف مخصّصة في "وحدة تحكّم المشرف" للسماح لبعض الأفراد أو المجموعات الذين لديهم ترخيص Education Plus بإجراء ما يلي:

يشرح هذا الدليل كيفية إعداد هذه الميزات في نطاقك باستخدام واجهات برمجة التطبيقات في Google.

برمجة عملية منح الأدوار المخصَّصة

لبرمجة عملية إسناد الأدوار المخصَّصة:

  1. أنشئ مجموعات أمان لتنظيم المستخدمين الذين يمكنهم الوصول إلى هذه الميزات.
  2. أضِف أعضاءً إلى المجموعات.
  3. أنشئ دور مشرف مخصصًا من خلال اختيار الامتياز الصحيح.
  4. استرداد أرقام تعريف الوحدات التنظيمية.
  5. تطبيق الدور المخصَّص للمشرف على المجموعات التي تم إنشاؤها حديثًا

المتطلبات الأساسية

  1. اقرأ أدلة البدء السريع لفهم كيفية إعداد تطبيق وتشغيله باستخدام Google APIs بلغات مثل JavaScript وPython وJava.
  2. يُرجى الاطِّلاع على نظرة عامة على Groups API.
  3. قبل استخدام أي من واجهات برمجة تطبيقات Cloud Identity الموضَّحة في هذا الدليل، عليك إعداد Cloud Identity. تُستخدم واجهات برمجة التطبيقات هذه لإنشاء مجموعات لمنح امتيازات المشرف.
  4. إعداد 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>"
}

المراجِع

يمكنك العثور على معلومات إضافية على الرابط التالي: