من الواضح أن الكرمة الخاصة بي هي: تنفيذ المهام القياسية بكل أنواع الطرق غير التافهة. إذا كان لدى شخص ما رؤية مختلفة للمشكلة - أطلب المناقشة ، لحل المشكلة.
في صباح أحد الأيام ، ظهرت مهمة مهمة: لتوزيع الحقوق على مجموعات المستخدمين على كرات مختلفة تحتوي على مجلدات فرعية للمشروع مع مجلدات المستندات. كل شيء على ما يرام وتم تعيين برنامج نصي تعيين حقوق إلى المجلدات. ثم اتضح أن المجموعات يجب أن تحتوي على مستخدمين من مجالات مختلفة ، من غابات مختلفة (
بالنسبة لأولئك الذين نسوا ما هو عليه ). افترض أن الكرة نفسها مستضافة على وسائط Synology المسجلة في مجال FB من غابة PSI. الهدف: السماح لمستخدمي المجالات في غابة أخرى بالوصول إلى محتويات هذه الكرة ، وبشكل انتقائي للغاية.
المعارف التقليدية بعد فترة تلوح في الأفق في النموذج التالي:
- 2 غابات: PSI Forest ، TG Forest.

- كل غابة لديها 3 مجالات: PSI (ZG ، PSI ، FB) ؛ TG (TG ، HU ، KC).
- هناك علاقة ثقة بين الغابات ، Synology يرى جميع مجموعات الأمان في جميع الغابات.
- يجب أن تحتوي البالونات والمجلدات / المجلدات الفرعية على حسابات مدراء مجال FB لها حقوق FullControl
- يجب تنظيم أسماء مجلدات البالون. كانت الإدارة تتفاوض على معرفات المشروع ، وقررت تعيين اسم مجموعات الأمان لمعرفات المشروع.
- يجب أن تحتوي مجلدات المشروع الموجودة في كرات النظام على هيكل معد مسبقًا في ملف .xlsx ، مع امتيازات الوصول المناسبة (R / RW / NA ، حيث NA - لا يمكن الوصول)

- يجب أن يكون من الممكن تقييد حقوق المستخدمين / أعضاء المجموعة في مشروع واحد على أدلة معينة فقط من هذا المشروع. قد لا يتمكن المستخدم من الوصول إلى أدلة / مشاريع أخرى ، وفقًا لعضوية المجموعة.
- عند إنشاء مجلد مشروع ، يجب إنشاء مجموعات في المجالات المقابلة بأسماء معرفات المشروع المقابلة بشكل تلقائي قدر الإمكان.
ويلاحظ في ToR
- علاقات بناء الثقة ليست جزءًا من المعارف التقليدية
- يحتوي معرف المشروع على أرقام وأحرف لاتينية
- أدوار مستخدم المشروع لجميع المجالات لها أسماء عامة
- يتم إعداد ملف .xlsx مع المجلدات والأذونات (مصفوفة الوصول) قبل بدء المشروع بأكمله
- عند تنفيذ المشروعات ، من الممكن إنشاء مجموعات مستخدمين في المجالات المقابلة
- يتم تحقيق الأتمتة باستخدام أدوات إدارة MS Windows القياسية
تنفيذ المعارف التقليدية
بعد إضفاء الطابع الرسمي على هذه المتطلبات ، تم إيقاف مؤقت تكتيكي لاختبار طرق إنشاء الدلائل وتعيين حقوق لهم. كان من المفترض استخدام PowerShell فقط ، حتى لا يعقد المشروع. كما كتبت سابقًا ، تبدو خوارزمية النص بسيطة جدًا:
- تسجيل المجموعات بالاسم المشتق من معرف المشروع (على سبيل المثال ، KC40587) والأدوار المقابلة المحددة في مصفوفة الوصول: KC40587-EN- للمهندس ؛ KC40587-PM - لمدير المنتج ، إلخ.
- الحصول على معرفات الأمان للمجموعات التي تم إنشاؤها
- تسجيل مجلد المشروع ومجموعة الدلائل المقابلة (تعتمد قائمة المجلدات الفرعية على الكرات التي تم إنشاؤها وتعريفها في مصفوفة الوصول)
- تعيين حقوق للمجموعات وفقًا لمصفوفة الوصول إلى أدلة فرعية جديدة للمشروع.
الصعوبات التي صودفت في المرحلة 1:
- عدم فهم طريقة تعيين مصفوفة الوصول في البرنامج النصي (يتم الآن تطبيق مصفوفة متعددة الأبعاد ، ولكن يتم البحث عن طريقة لملئها بناءً على محتويات مصفوفة / الوصول إلى ملف .xlsx)

- استحالة تحديد حقوق الوصول في كرات SMB على محركات الأقراص synology باستخدام PoSH (https://social.technet.microsoft.com/Forums/en-US/3f1a949f-0919-46f1-9e10-89256cf07e65/error-using-setacl-on-nas -share؟ forum = winserverpowershell) ، بسبب ضياع الكثير من الوقت واضطررت إلى تكييف كل شيء مع البرامج النصية باستخدام أداة تحرير أذونات icacls ، والتي تطلبت إنشاء مخزن وسيط من الملفات النصية وملفات cmd.
في الوضع الحالي ، يتم التحكم في تنفيذ ملفات cmd يدويًا ، بناءً على الحاجة إلى تسجيل مجلد للمشروع.

اتضح أيضًا أنه يجب تنفيذ البرنامج النصي ، بما في ذلك تسجيل المجموعات في غابات أخرى (باستخدام مصطلح المجالات المشتركة) ، ويمكن أن لا تكون النسبة من 1 إلى واحد فقط ، ولكن أيضًا من واحد إلى كثير.

هذا يعني أن مجموعات من المجالات المشتركة الأخرى ، بما في ذلك مجموعة التفرعات المجاورة ، يمكنها الآن المطالبة بالوصول إلى موارد المجال. لتحقيق التوحيد ، تقرر إنشاء هيكل متماثل في OU لجميع المجالات التي تخدمها جميع الغابات (بيضاوية رأسية سوداء). كما يقولون ، يجب أن يكون كل شيء قبيحًا في الجيش ، لكنه موحد:

وبالتالي ، عند تسجيل مشروع 80XXX في مجال TG ، ينفذ البرنامج النصي:
1. إنشاء OU المطابق (أشكال بيضاوية أفقية حمراء) في هذا المجال والمجالات المتقاطعة ، أي تلك المجالات التي يجب على موظفيها الوصول إلى هذا المورد.
2. ملء OU بمجموعات بأسماء النموذج <SRC_ domain> <DST_domain> <ID_project> - ، حيث:
- SRC_ domain - مجال مشترك يمكن لموظفيه الوصول إلى موارد المجال DST
- DST_domain - مجال ، يجب أن يُمنح حق الوصول إلى موارده ، أي من أجل كل شيء بدأ من أجله
- <ID_project> - رقم المشروع
- الأدوار - أسماء الأدوار المدرجة في مصفوفة الوصول.
3. قراءة مجموعة SID لجميع مجموعات جميع المجالات المعنية وحفظها لنقل البيانات اللاحقة إلى ملف يحدد حقوق مجلد فرعي مشروع معين
4. إنشاء ملفات المصدر (المعلمة / الاستعادة) مع مجموعة من الأذونات لاستخدام الأداة المساعدة icacKC في وضع الملف القابل للتنفيذ "icacKC" \\ as-nasNN \ KC \ Projects "/ استعادة C: \ Temp \ KC \ KC40XX \ KC40XX.txt"
5. إنشاء ملف CMD الذي يجمع بين جميع icacls أطلقت لجميع مجلدات المشروع

كما تمت كتابته مسبقًا ، يتم تشغيل الملف القابل للتنفيذ يدويًا كما يتم إجراء تقييم لنتائج التنفيذ يدويًا.
الصعوبات التي واجهتها في النهاية:
- إذا كان مجلد المشروع ممتلئًا بالفعل بعدد كبير من الملفات ، فيمكن أن يستغرق تشغيل أمر icacls على وحدات التخزين المتوفرة وقتًا كبيرًا ، وفي بعض الحالات يؤدي إلى الفشل (على سبيل المثال ، إذا كانت هناك مسارات طويلة للملفات) ؛
- بالإضافة إلى خيار / استعادة ، اضطررت إلى إضافة خطوط مع خيار / reset في حالة عدم إنشاء مجلدات ، ولكن تم نقلها من مجلدات موجودة مسبقًا ، مع إيقاف حقوق الميراث من الجذر ؛
- يجب تنفيذ جزء من البرنامج النصي لإنشاء مجموعات على وحدة تحكم تعسفي لكل مجموعة تفرعات ، المشكلة تتعلق بالحسابات الإدارية لكل شجرة.
استنتاج عام: من الغريب أنه لا توجد أدوات مساعدة مع وظائف مماثلة في السوق حتى الآن. يبدو من الممكن تنفيذ هذه الوظيفة على أساس مدخل Sharepoint.
كما يوفر حقيقة غير مفهومة أنه من غير الممكن استخدام الأدوات المساعدة PoSH لتعيين أذونات المجلد على الأجهزة sinology.
حسب الرغبة ، أنا مستعد لمشاركة البرنامج النصي عن طريق إنشاء نوع من المشروع على جيثب ، إذا كان هذا مثيرًا للاهتمام لأي شخص.