للتأكد من أن المستخدمين الذين لديهم حق الوصول إلى عنصر هم فقط من يمكنهم رؤية هذا العنصر داخل نتيجة البحث، عليك فهرسة العناصر باستخدام قوائم التحكم بالوصول (ACLs) التابعة لها. من مستودع المؤسسة. يجب عليك وضع نموذج لقوائم التحكم في الوصول (ACL) للمستودع الخاص بك تضمين قوائم التحكم بالوصول هذه عند فهرسة العناصر في المستودع. أداة ربط المحتوى توفر حزمة SDK مجموعة غنية من طرق قائمة التحكم بالوصول الفعالة بما يكفي لنمذجة قوائم التحكم بالوصول لمعظم المستودعات.
إنشاء ACL
يمكن إنشاء قائمة التحكم بالوصول (ACL) من خلال عملية من خطوتين:
- إنشاء
Principal
باستخدام الطرق الثابتة في ACL الصف. - يمكنك استخدام
Acl.Builder
. لإنشاء قائمة التحكم بالوصول باستخدام الفصل.
يتناول باقي هذا المستند بعض المفاهيم التي تحتاج إلى معرفتها لتصميم نموذج وإنشاء قوائم التحكم بالوصول، مثل التوريث والاحتواء.
إنشاء حساب إداري باستخدام معرّف خارجي
يتطلب Google Cloud Search من المستخدمين والمجموعات الرد على عنوان بريد Google الإلكتروني
الخاص بك. عند فهرسة عناصر المستودع، قد لا تتضمن موصلات المحتوى تلك
. ومع ذلك، تسمح لك حزمة تطوير البرامج (SDK) لـ Content Connector باستخدام
المعرّف الخارجي (المعرّف الذي يمنح مستخدمًا أو مجموعة إمكانية الوصول إلى عناصر المستودع)، بدلاً من ذلك
لعنوان البريد الإلكتروني لفهرسة أحد العناصر. يمكنك استخدام
getUserPrincipal()
الطريقة أو
getGroupPrincpal()
لإنشاء عناصر رئيسية تحتوي على معرّفات خارجية. هناك العديد من الطرق الأخرى
الطرق الثابتة في
ACL
فئة تستخدم لإنشاء
Principal
عناصر
اكتساب قوائم التحكم بالوصول (ACL)
يشير توريث قائمة التحكم بالوصول (ACL) إلى التفويض لعنصر معين وعنصر للمستخدم، بناءً على نتيجة الجمع بين قوائم التحكم بالوصول (ACLs) للعنصر قوائم التحكم بالوصول (ACLs) لسلسلة الاكتساب. القواعد المستخدمة لاتخاذ قرار بشأن التفويض تعتمد على المستودع وعلى خصائص العنصر.
ضبط الاكتساب
يمكن أن يكون لكل عنصر المبادئ الرئيسية المسموح بها مباشرةً والمبادئ الرئيسية المرفوضة مباشرةً،
المحددة باستخدام
setReaders()
أو
setDeniedReaders()
. إذن مباشر
مستخدم رئيسي هو مستخدم يتم تحديده في قائمة التحكم بالوصول (ACL) ويتيح له الوصول المباشر إلى
عنصر معين. المستخدم الرئيسي الذي يتم رفضه بشكل مباشر هو مستخدم محدد في قائمة التحكم بالوصول (ACL) على أنه ليس
إمكانية الوصول إلى عنصر معين.
قد يكتسب العنصر أيضًا الإعدادات الرئيسية غير المباشرة المسموح بها
المبادئ الرئيسية المرفوضة بشكل غير مباشر باستخدام
setInheritFrom()
. المستخدم الرئيسي غير المباشر المسموح به هو المستخدم الذي، من خلال توريث قائمة التحكم بالوصول،
لديه إمكانية وصول غير مباشر إلى عنصر معين. الشخص الرئيسي المرفوض غير المباشر هو مستخدم
يتم رفض وصوله إلى عنصر معين من خلال توريث قائمة التحكم بالوصول (ACL).
يوضح الشكل 1 كيف
تُستخدم طريقة setInheritFrom()
لاكتساب العناصر الرئيسية غير المباشرة المسموح بها وغير المباشرة المرفوضة.
يتم تمثيل عناصر التحكم في الوصول هذه في الشكل 1:
- المستخدم 1 هو مدير رئيسي مسموح به بشكل مباشر للعنصر "أ".
- المستخدم 2 هو مدير رئيسي مسموح به بشكل مباشر للبند ب.
- يكتسِب العنصر "ب" قائمة التحكم بالوصول (ACL) للعنصر "أ".
استنادًا إلى عناصر التحكّم في الوصول، تكون قواعد الوصول هي:
- لا يلزم تحديد المستخدم 1 بشكل صريح كعنصر أساسي للعنصر ب أصل مسموح به غير مباشر للبند ب؛ إذن الوصول مكتسَب. لأنّ المستخدم 1 مدرج على أنه مدير رئيسي مسموح به بشكل مباشر للبند "أ" والبند "ب" يكتسب قائمة التحكم بالوصول (ACL) من العنصر أ.
- المستخدم 2 ليس مستخدمًا أساسيًا غير مباشر مسموح به للبند أ.
ضبط نوع الاكتساب
إذا قمت بتعيين الاكتساب باستخدام
setInheritFrom()
يجب تعيين نوع الاكتساب باستخدام
setInheritanceType()
. يحدد نوع الوراثة كيفية حساب
يمكن دمج قائمة التحكم بالوصول (ACL) مع قائمة التحكم بالوصول (ACL) الأساسية. Acl.InheritanceType
ينفذ ثلاثة أنواع وراثة:
BOTH_PERMIT
- ضبط نوع الاكتساب علىBOTH_PERMIT
لمنح مستخدم إذن الوصول إلى العنصر فقط عندما يتم اكتساب كل من قائمة التحكم بالوصول (ACL) للعنصر الفرعي وقائمة التحكم بالوصول (ACL) للعنصر الرئيسي السماح لهذا المستخدم بالوصول إلى هذا العنصر.CHILD_OVERRIDE
- ضبط نوع الاكتساب علىCHILD_OVERRIDE
لفرض المؤسسة الفرعية أن يكون لقائمة التحكم بالوصول (ACL) للعنصر الأسبقية على قائمة التحكم بالوصول (ACL) للعنصر الرئيسي المكتسَب عند نزاع. لذلك، إذا كانت قائمة التحكم بالوصول (ACL) للعنصر الرئيسي تمنع وصول المستخدم كقارئ مرفوض، سيظل بإمكان المستخدم الوصول إذا كان بإمكانه الوصول إلى الطفل العنصر كقارئ. بالعكس، حتى إذا كانت قائمة التحكم بالوصول (ACL) للعنصر الأصلي تمنح إمكانية الوصول إلى المستخدم، فلن يتمكن المستخدم من الوصول إذا كان قارئًا له مرفوض.PARENT_OVERRIDE
- ضبط نوع الاكتساب علىPARENT_OVERRIDE
لفرض أن يكون لقائمة التحكم في الوصول للعنصر الرئيسي الأولوية على قائمة التحكم بالوصول عندما نزاع. ولذلك، إذا رفضت قائمة التحكم بالوصول (ACL) للعنصر الفرعي وصول المستخدم على أنه مرفوض فإن المستخدم لا يزال بإمكانه الوصول إذا كان بإمكانه الوصول إلى العنصر الرئيسي قارئ البطاقات. بالمقابل، حتى إذا كانت قائمة التحكم بالوصول (ACL) للعنصر الفرعي تمنح إمكانية الوصول للمستخدم، سيتم لا يملك المستخدم إذن الوصول إذا كان قارئًا مرفوضًا للعنصر الأصلي.
عند تقييم سلسلة توريث قائمة التحكم بالوصول، يمكن أن يتغير ترتيب التقييم نتيجة قرار التفويض. توفر Cloud Search بيانات ترتيب تقييم سلاسل توريث قائمة التحكم بالوصول (ACL). وعلى وجه التحديد، سيشمل قرار قائمة التحكم بالوصول (ACL) للسلسلة بتقييم الطفل مع والديه، ويمكن أن يتقدم وصولاً إلى الأصل الجذري.
على سبيل المثال، إذا كان لدى الطفل نوع الاكتساب CHILD_OVERRIDE
وكان المستخدم
إذن الوصول إلى حساب الطفل، وبالتالي لا يحتاج Drive إلى تقييم العنصر الرئيسي.
أما إذا كان الطفل يملك PARENT_OVERRIDE أو BOTH_PERMIT، تتم متابعة Drive.
تقييم الوراثة إلى أعلى السلسلة.
حذف الاحتواء والسلع
عند فهرسة عنصر، يمكنك تصنيف عنصر كحاوية باستخدام
setContainer()
IndexingItemBuilder
الصف. تنشئ علاقة الحاوية/المُحتوى البيانات المادية
التسلسل الهرمي للعناصر وتضمن حذف العناصر بشكل صحيح.
عند حذف حاوية، يتم حذف العناصر المتضمّنة أيضًا.
علاقات الاحتواء مستقلة تمامًا عن قواعد اكتساب قوائم التحكم بالوصول (ACL). على سبيل المثال، يمكن احتواء ملف في نظام ملفات في مجلد الغرض من الحذف، ولكن يجب اكتساب قائمة التحكم بالوصول (ACL) من مجلد مختلف. جارٍ حذف لا يحذف المجلد العناصر التي تكتسب قائمة التحكم بالوصول، ما لم يتم حذف هذه العناصر أيضًا في التسلسل الهرمي لاحتواء المجلد.
يتم تمثيل عناصر التحكم في الوصول هذه في الشكل 2:
- المستخدم 1 هو مدير رئيسي مسموح به بشكل مباشر للعنصر "أ".
- المستخدم 2 هو مدير رئيسي مسموح به بشكل مباشر للبند ب.
- المستخدم 3 هو مدير رئيسي مسموح به بشكل مباشر للبند ج.
- يكتسِب العنصر "ج" قائمة التحكّم بالوصول (ACL) للعنصر "أ".
- يسمي العنصر "ب" العنصر "أ" كحاوية له.
- يسمي العنصر "ج" العنصر "ب" كحاويته.
استنادًا إلى عناصر التحكّم في الوصول، تكون قواعد الوصول هي:
- يأتي الوصول غير المباشر من
setInheritFrom()
. وبالتالي، يمكن للمستخدم رقم 1 الوصول إلى العنصر "ج" لأن العنصر "ج" يرث قائمة التحكم بالوصول البند أ. - لا تأتي إمكانية الوصول غير المباشر من العنصر C الذي يتضمنه العنصر "ب". لذلك، لا يمكن للمستخدم 2 الوصول إلى العنصر "ج".
يتيح لك فصل توريث قائمة التحكم بالوصول عن التسلسل الهرمي للاحتواء إنشاء نموذج والعديد من الهياكل الموجودة المختلفة.
عند حذف عنصر بنجاح:
- يصبح أي عنصر يحتوي على عنصر محذوف غير قابل للبحث تحديد موعد للحذف من مصدر بيانات Google.
- أي عنصر يحدد العنصر المحذوف باستخدام
طريقة واحدة (
setInheritFrom()
) تصبح غير قابلة للبحث.
إذا كان المورد يحتوي على عنصر محذوف باستخدام
setInheritFrom()
الطريقة، لكن لا يحتوي على مجموعة حاوية باستخدام
setContainer()
، أو لا يحتوي التسلسل الهرمي للاحتواء على أي عناصر محذوفة أو هذا العنصر وبياناته
في مصدر بيانات Google. أنت مسؤول عن حذف العنصر.
يوضّح الشكل 3 مثالاً على آلية عمل الحذف في تدرّج هرمي للسلع.
يتم تمثيل عناصر التحكم في الوصول هذه في الشكل 3:
- المستخدم 1 هو مدير رئيسي مسموح به بشكل مباشر للعنصر "أ".
- المستخدم 2 هو مدير رئيسي مسموح به بشكل مباشر للبند د.
- يرث كل من العنصر "د" والعنصر "هـ" قائمة التحكم بالوصول (ACL) للعنصر "أ".
- يسمي العنصر "د" العنصر "أ" كحاوية له.
- العنصران A وE هما عناصر على مستوى الجذر؛ نظرًا لأنهما لا يحتويان على الحاوية.
لحذف سلسلة من خلال مراجع الحاوية. عند حذف العنصر "أ":
- كل توابع
setInheritFrom()
يفقد المرجع إمكانية الوصول لجميع المستخدمين. - لا يمكن لأي مستخدم الوصول إلى العنصر "أ".
- تم حذف العنصر "د" ضمنيًا. لا يمكن لأي مستخدم الوصول إلى العنصر د.
- لا يتم حذف العنصر هـ، حيث يتداخل الحذف فقط عبر الحاوية المراجع.
- يصبح العنصر هـ غير قابل للوصول ولا يتمكن أي مستخدم من البحث عن العنصر هـ.