عضوية مجموعة المراقبة في أكتيف ديركتوري بشكل أكثر كفاءة(C#.NET)



active-directory (3)

لدي أداة مزامنة أكتيف ديركتوري (.NET 2.0 / C #) مكتوبة كخدمة ويندوز التي كنت أعمل عليها لفترة من الوقت، وقد تم تكليفها مؤخرا بإضافة القدرة على قيادة الأحداث استنادا إلى التغييرات في عضوية المجموعة. السيناريو الأساسي هو أن المستخدمين تتم مزامنتهم مع قاعدة بيانات الأمان، وعندما تتغير عضوية المجموعة، يحتاج المستخدمون إلى تغيير حقوق الوصول الخاصة بهم (أي إذا كنت الآن عضوا في "موظفي تكنولوجيا المعلومات" ثم يجب أن يحصل تلقائيا الوصول إلى غرفة الخادم، إذا أنا إزالة من تلك المجموعة ثم يجب أن يفقد تلقائيا الوصول إلى غرفة الخادم).

والمشكلة هي أنه عند القيام ديركتوريسينكرونيزاتيون ضد المجموعات التي تتلقى مرة أخرى المجموعة التي قد أضاف عضو / إزالتها، ومن هناك عند الاستيلاء على قائمة الأعضاء يمكنك الحصول على قائمة جميع الأعضاء في تلك المجموعة حاليا ليس فقط الأعضاء التي تمت إضافتها أو إزالتها. وهذا يقودني إلى مشكلة في الكفاءة تماما - أن يجري ذلك من أجل معرفة ما إذا كان المستخدم قد تمت إضافتها أو إزالتها سوف تضطر إلى الاحتفاظ محليا قائمة كل مجموعة وجميع الأعضاء ومقارنة ذلك ضد القائمة الحالية لمعرفة من الذي كان (وليس في القائمة المحلية)، والذي تم حذفه (في القائمة المحلية، وليس في قائمة الأعضاء الحاليين).

أنا مناقشة مجرد تخزين تفاصيل عضوية المجموعة في داتاسيت في الذاكرة والكتابة إلى القرص في كل مرة لقد قمت بمعالجة تغييرات عضوية جديدة. وبهذه الطريقة إذا توقفت الخدمة / تعطل أو إعادة تشغيل الجهاز لا يزال بإمكاني الحصول على الحالة الحالية من "أكتيف ديركتوري" ضمن قاعدة بيانات الأمان من خلال مقارنة آخر المعلومات على القرص إلى ذلك من قائمة عضوية المجموعة الحالية. ومع ذلك، هذا يبدو فظيعا غير فعالة - من خلال كل عضو في المجموعة لمقارنة ضد ما هو في مجموعة البيانات ومن ثم كتابة التغييرات على القرص في كل مرة هناك تغييرات على القائمة.

هل تعامل أي شخص مع هذا السيناريو من قبل؟ هل هناك بعض الطرق التي لم أكن قد وجدت لاسترداد دلتا فقط من أعضاء المجموعة؟ ماذا ستفعل في هذه الحالة لضمان أنك لن تفوت أي تغييرات في حين أخذ أصغر أداء ضرب ممكن؟

تعديل: قد يحتوي الإعلان على 500 مستخدم، وقد يحتوي على 200000 مستخدم - يعتمد ذلك على العميل، وعلى رأس ذلك عدد المجموعات التي يكون المستخدم العادي عضوا فيها


يمكنك إعداد تدقيق لنجاح تعديلات الحساب في محرر نهج المجموعة

يمكنك بعد ذلك مراقبة سجل الأمان لإدخالات والتعامل مع إدخالات السجل على تعديلات الحساب.

على سبيل المثال

        EventLog myLog = new EventLog("Security");

        // set event handler
        myLog.EntryWritten += new EntryWrittenEventHandler(OnEntryWritten);
        myLog.EnableRaisingEvents = true;

تأكد من امتلاكك امتيازات للتوصل إلى سجل أحداث الأمان http://support.microsoft.com/kb/323076


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


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

ليس كل من تقديم الدعم / توفير، لكنها تدعم التغييرات تتبع وتوزيعها: انها ليست صفقة كبيرة خلق حلول الحدث على رأس تلك القدرات.

لدى ميكروسوفت خادم تكامل الهوية (ميس) الذي يتم إعادة تجميعه كجزء من إدارة دورة حياة الهوية . وقد بنيت أصلا على المنتج الفوقي / إدارة البيانات الرئيسية أكثر عمومية، ولكن هو عملي. عب لديها تكامل دليل تيفولي (ولكن تحتاج إلى مواكبة التغييرات اسم بيارلي!). تمتلك أوراكل مدير هوية أوراكل ، و سون a إيدنتيتي ماناجر . معظم هذه المنتجات الرائدة التي يشتريها اللاعبون الرئيسيون لسد الفجوة في محافظهم.

وبطبيعة الحال، وهذه هي المنتجات على مستوى المؤسسات، وهذا يعني كبيرة ومكلفة، ولكن عموما جميلة في المستقبل آمنة قابلة للتوسيع. إذا كنت لا تحتاج إلى كامل قوتها (بعد!)، سوف تحتاج إلى النظر في تخزين نسخة لنفسك. في هذه الحالة، هل تفكر في تخزين النسخة المتماثلة من آخر شجرة أد معروفة باستخدام أد لدز (أد / آم سابقا)؟ انها ليست في الشكل الأمثل لمقارنة الاختلافات، ولكن قاعدة بيانات الدليل على نطاق معقول بشكل معقول، حتى نوع خفيف الوزن.





active-directory