إدارة الأدوار

تتيح لك واجهة برمجة التطبيقات للدليل استخدام التحكّم في الوصول المستند إلى الدور (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 التالية وتضمين التفويض. موصوفة في تفويض الطلبات

الطلب

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'"
}