هل من الممكن استخدام Azman للحصول على إذن أساسي على الأجسام التي يتم إنشاؤها في وقت التشغيل؟

StackOverflow https://stackoverflow.com/questions/1322320

سؤال

هل من الممكن استخدام Azman للحصول على إذن أساسي على الأجسام التي يتم إنشاؤها في وقت التشغيل؟ إذا كانت الإجابة بنعم كيف يمكن القيام بذلك؟

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

إذا تم إنشاء كائن من الفئة "Customalert" في وقت التشغيل، أحاول معرفة ما إذا كان بإمكاني إجراء قواعد مختلفة للأشياء المختلفة للفئة "Customalert". إذا تم إنشاء كائن باستخدام هوية مستخدم محددة، فستكون أذونات أخرى متاحة لهذا المستخدم، فاعتبره أن يكون منشئ / مالك الكائن. فقط الخالق / المالك يمكن تعديل الكائن.

هل كانت مفيدة؟

المحلول

يدعم أزمان الأمن القائم على الأدوار لكنه يعتمد على أدوار فقط - وليس على ACLS. إذا تم تسجيل مستخدم معين، فسيكون لديهم أذونات محددة بناء على من هم، لكن هذه الأذونات هي مجرد قيم ثابتة - يمكن تقديمها للتقدم إلى جميع الكائنات من نوع معين، ولكن لا تختلف وفقا لسمات محددة خاصة مثيلات هذا النوع.

نصائح أخرى

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

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

الطريقة التي قمت بها في السابق هي استخدام معرف الكائن كاسم النطاق. من الناحية المثالية للبساطة، يجب أن يكون هذا GUID (على الرغم من أنه يقوم بتطبيق تطبيق MMC فوضوي للغاية)، ولكن بنفس القدر يمكنك استخدام تنسيق "نوع معرف" أي "CustomerAlert-1" (الكثير من الودادات الودية في تطبيق MMC). عند إجراء AccessCheck في Azman، يمكنك تمرير اسم النطاق إلى AccessCheck (في الوقت الحالي يستغرق سوى نطاق واحد، على الرغم من أن تعريف AccessCheck يسمح بمصفيف).

سأركض من خلال مثال على كيفية القيام بذلك (لأي شخص آخر يكافح) ...

  1. إنشاء عمليات مثل CustomerAlertView، CustomeralerTedit، customeralertdelete على مستوى التطبيق.
  2. قم بإنشاء تعريف دور يسمى CustomerAlertowner على مستوى التطبيق.
  3. إضافة جميع العمليات إلى دور العملاءر.
  4. في التطبيق الخاص بك، قم بإنشاء نطاق يسمى "Customerarert-1".
  5. قم بإنشاء إحالة دور يسمى "المالك" على النطاق.
  6. أضف تعريف الدور CustomerAlerTowner إلى "المالك".
  7. لدور هذا المالك، أضف العميل / المستخدم "ديف".
  8. الآن عند إجراء فحص الوصول في Say Deletecustomeralert ()، يمكنك ببساطة تمرير معرف التشغيل CustomeralertDelete والنوع / معرف الكائن الذي تريد حذفه كجهاز IE "Customerarer-1"

لشيكات الوصول المستندة إلى عن عقار الكائنات (أي قفل القراءة / الكتابة من بعض الخصائص)، هناك اقتراحين يمكنني التفكير فيها .. أولا هو تعيين العمليات في نطاق الكائنات لكل خاصية ونوع الوصول IE الخاصية، propertynameset، propertyAddressAdd وبعد يمكنك تبسيط ذلك عن طريق إنشاء العمليات على مستوى التطبيق واستخدام المهام / الدور إلى مجموعة مجموعات إذن الاستخدام بشكل شائع. الطريقة الأخرى هي استخدام نطاق كل خاصية (Customerarert-1-name)، ولكن هذا سيكون فوضوي وليس فعالا، حيث ستحتاج إلى تحميل نطاقات متعددة بشكل منفصل عند الوصول إلى كائن معين.

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

إذا كنت بحاجة إلى مساعدة أخرى مع أزمان، فلا تتردد في السؤال .. لقد غطيت معظم السيناريوهات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top