Policy Based
Management

Policy-Based Management:- ويترجم العنوان بالمفهوم التالي نظام اعتماد السياسات على نظام ال SQL Server
المقدمة:-
Policy-Based Management هو عبارة عن عناصر يقيد ال SQL Server الخاص بنا ويجبرة عل التصرف بما نريد او بما نحدد من امور ومتطلبات اساسية يحددها مدراء قواعد البيانات بشكل اتوماتيكي وبسيطرة واحدة بشكل اساسي ويمنع العبث بشكل تلقائي
ان افكار تطبيقة السيايات او ال Policy جائت من حاجة ومتطلبات انضمة التشغيل التي تعمل عمل شبكي لتقيد المستخدمين وصلاحياتهم اما الان فال SQL Server 2008 يمتلك هيكلة مستقلة للسماح بتقيد وتهيئة محتوياته ومستخدمية بصورة مركزية وبشكل تلقائية من قبل ال Administrator مما يساعد على استخدام اسلوب السيطرة المركزية والتلقائية
لنعلم ماسوف نخرج بة في نهاية الدرس
سوف نتعلم تعريف Policy -Based Management ((PBM)) وما يحتوية من مكونات في الاصدار سكوال 2008 ثم سوف ندخل في صميم انشاء Policy من البداية حتى النهاية وبعد ان انشاء هذه السيايات سوف نتعلم كيفية تتم السيطرة والادارة مع العديد من الامثلة المتناولة
في النهاية سنخوض في التفاصيل المطلوب اتباعها دائماً او التي يفضل اتباعها لعمل هذة ال POlicy او ما يسمى السياسات
على بركة الله لنبدأ
البداية مع ال Policy-Based Management (PBM)
Policy -Based management :- كذالك يعرف سابقاً في الاصدار 2005 بأسم ال Declarative management Framework (DMF (لو نحاول ترجمة العنوان التالي سوف يكون بمعنى الاعلان عن منصة الادارة او بيئة الادارة
لنتعرف على فوائد استخدام ال PBM
1- Automatic Evaluation التقيم التلقائي يمكننا جدوله للتاكد من اذعان للpolices والتأكد من حذف الاخطاء البشرية التي من الممكن ان تحدث بدون قصد (( سوف نتعلمها لاحقاً من هذا الدرس))
2- Polices Reuse اذا كنت لاتستخدم خاصية السيرفر الرئيسي والذي يتحكم بالسيرفرات الاخرى فتتيح لك هذة الخاصية تصدير ملف ال Policies الى ال سيرفات الاخرى حيث يكون الملف عبارة عن XML والذي سوف يمثل ال Policy الذي يتحكم بال SQL Server الاخر
3- Automatic Enforcement العديد من السياسات قد تمنع تقائياً من انشاء حدث معين وبالتالي الحفاظ على السيطرة المركزيه
4- Surface Area Configuration قد يكون هذا المصطلح ليس غريباً على مسامعكم انة الواجهات الخاصة بالتحكم بال service في الاصدار SQL 2005 وقد يتسائل مديري قواعد البيانات لماذا مايكروسوفت قد حذفت هذة الواجهات في الا صداء 2008 والجواب يكمن في ان PBM يعتمد في اعتمدها.حيث يمكن استخدام ال SP_Configure مباشرةً او استخدام ال PBM
5- Centralized Policy Management بصورة مختصرة لنتخيل هذة النقطة يمكن تنفيذ السياسات على السكوال واحد او على مجموعه SQl Server وسنتعرف لاحقاً على كيفية تكووين هذه الحالة. في الجزء الثاني من هذا الدرس بأذن الله تعالى
كما ترى العديد من الفوائد التي تقدمها ال PBM حيث يقدم العروض الكثيرة لمدراء ال SQL .
الشيء الذي يجب ان نتخيلة عدم صعوبة تعلم ال PBM حيث يجب ان نففهم النقاط التي تكون هيكلية ال PBM والنتيجة ستكون مرضية مع اتباع الامثلة.
اما عن النقاط الواجب فهمها في الموضوع فهي كالتالي:-
1- PBM Components مكونات السياسات
2- Creating Condition خلق الشروط الواجبة على السياسات اتباعها
3- Creating Policies خلق السياسات
4-Evaluating policies تقيم الية عمل السيايات
ناتي الان الى شرح كل خاصية على حدة حتى تجتمع الافكار لدينا
1- PBM Components
تشمل ال PBM العديد من المكونات منها ال Facets , conditions , Policies ,Categories , Target
لاحظ المخطط التالي كما في الصورة التالية:-

كما نرى ال Condition جزة منة اي من مكونات ال facets وال Condition جزة منة اي من مكونات ال polices وفي النهاية توضع ال policies تحت تصنيف اي Category
لتسهيل العمل كما سوف نرى
ناتي الان الى شرح كل مكون:-
1- Facets الاوجه عناصر التكوين
هو عبارة عناصر تكوين الخصائص وهي عناصر تم تخزينها في ال SQL Server تحتوي على امكانيات تغير الخصائص او تكوين خصائص يريد منها المدير تقيد ال Server الخاص فية بها وذالك منع للتلاعب. ان ال SQL Server 2008 يحتوي على 74 facets وان هذا العدد في زيادة في الاصدار 2008 R2 وهي غير قابلة للحذف او التعديل
ويمكن سحبها والتعامل معها من خلال تقيدها بشروط او كما يطلق علية في مصطلحنا Condition ال Facets ممكن ان تكون read / Write وهي من لتغير خصائص الممكن ان نستخدمها في ال PBM او من الممكن ان تكون read Only وهي تستخدم لاتمام عملية المراقبة الاداء. ولمشاهدة الfacets الموجودة على السيرفر خاصتك تابع الخطوات التالية
بعد تشغيل ال SSMS نذهب ال object explorer ومن ثم Policy Management management ومن ثم ال facets فنلاحظها كما في الصورة التالية

2- conditions الشروط وهي تحدد ماسوف نستخدمة
المعاير التي تستخدمها ال Policy لاداء السياية معينة وتتم برمجة ال Condition بواسطة ال facet المتوفرة لدينا ان هذة الظروف او مايسمى بمنهجنا العلمي Condition لها 4 خواص يجب ان نفهمها
1- Name :- وهو ما تريد ان تطلقة على ال condition من اسم لتستخدمة فيما بعد ويفضل ان تبدا بالتسمة بأستخدام الرمز Cond(( على سبيل التفضيل لا اكثر ))
2- Facet :- خصائص ال facet الموجودة والتي عرفناها فيما مضى
3- Expression :- تقيم للخصائص الحالة التي يجب من خلالها عمل الشرووط او بمعنى اخر الجمل الشرطية التي تعتمد على ال Facet والتي تبين اساليب عمل ال ؛خمهؤغ
4- Description:- ان العنوان واضح وهو وضع نص تفصيلي عن الحالة التي اعتمدناها على انشاء ال Condition
لاحظ كيفية انشاء condition جديد شغل ال SSMS ومن ثم ال management ومن ثم ال Policy Management من ثم كلك يمين New Condition كما في الصورة التالية
اكيد في النهاية سوف نقوم بتطبيق كل الافكار في تمرين واحد

نأتي الان الى شرح هذة الواجهه وخصوصاً الخاصية Expression
1- الخاصية AndOR من الممكن ان يكون اكثر من Fact في نفس ال Condition كما اننا نعرف ما الفرق بين الجملتين فح حالة ان المصطلح or لنتخيل المثال التالي عندي اصدقاء واريد ان اطلب منهم طلباً معين لنتخيل الجملة التالية اذهب ياعمر او يا علي الى السوق يعني في حال ذهب احدها الى السوق فانني سوف ارضى او يكون طلبي مستجاب اما ان قلت اذهب ياعمر مع علي فيجب على الاثنان الذهاب في حال ذهب احدهما فانا لن ارضى وهنا الحالة تعني ال and نفس الموضوع يتكرر هنا اما ان ينفذ الخصائص التي تم تعينها جميعها او بعظها
2- الخاصية Field وتعني ضبط الخصائص لل Facets المختارة
3- الخاصية Operator وفيها العديد من الاختيارات اي ان تنفيذ العمليات يتم في حالة
4- اما الخاصية Value فهي ما تحدد مايجب عملة مع هذا الشرط ال Condition وتأخذ اما قيم رقمية او Object معينة كما نرى في الصورة اعلاة او تأخذ قيم ال True& False او تأخذ نص لكن في حال استخدمنا النص يجب وضع ال ((( ' النص ')) وسنأخذ مثال على الحالة
3- Policies السياسات وهي تحدد الالية التي يجب ان تتبع في التحقق
يقوم ال police باختبار ال Condition هو هو صحيح ام خطأ وفقاً للشروط ال CONDITION التي وضعناها مسبقاُ
سنتعرف في البداية على اهمل الخصائص المتعلقة بال policies

1- Name :- اسم يعطيى لل Policy ويفضل ان يكون واضح وكمقترح نبدأ التسمية بال رمز POL ثم نتبعه بأسم ال Condition (( على سبيل التفضيل لا اكثر ))
2- Enabled :- تفعيل والغاء تفيل السياسات او المقصود ال Policies
3- Check Condition :- يقوم بربط ال condition مع ال policy وذالك لتقم الاداء عمل السياسة
4- Evaluation :- وتعني هذة الحالة او الخاصية السبب الذي سوف ينفذ تنفذ فيها السيايات المنشاة
وتاخذ اربع حالات سنشرحها بأيجاز
A – On Demand: – وتعني ان يتم التحقق وقت الطلب ولو نلاحظ ان خاصية ال Enable تكون غير مفعلة لانها تكون خاضعه لارادة المستخدم او المدير الخاص بالسيرفر وتستخدم بشكل نادر لاغراض الاختبارات اي ان مدير قواعد البيانات يجب في البداية ان يستخدمها كما قلنا لاغراض الاختبارات
B – On Schedule: – تستخدم هذة الحالة في حال انشاء اوقات وجدولة معين يتم من خلالها توقيت عمل ال Policy والاستخدام الشائع لها اثناء اختيار ال facets من نوع read-only لأغراض المراقبة كما قلنا مسباقاً ((الاستخدام الشائع وليس الواجب))
C: – On Change: Log Only: – وتستخدم لتسجيل الاحداث التي لم تصغي الى policy يتم اظهار خطأ في ال سجل الاخطاء
D: – On Change: Prevent: – كما في السابق لكن المنع هنا يحدث مباشرةً بعد عدم الاذعان الى السياسة (polices) المحددة
الشيء المهم الذي يجب ان نفكر فية هو ماهو ال Evaluation المناسب الذي يجب ان نسخدمة لاعطائنا النتائج المناسبة .
طيب الان سوف افصل لك المجاميع التي تعمل مع ال Evaluation المناسب لها في حالة كان الخيارين On Change: Log Only و On Change: Prevent نستخدم معهما ال facet التالية طبعاً اكيد تعمل مع الاخرين
- Application Role
- Asymmetric Key
- Database Role
- Endpoint
- Login Options
- Multipart Name
- Resource Pool
- Schema
- Stored Procedure
- Table Options
- User Defined Function
- User Options
- View Options
- Workload Group
- Database Option
- Server Configuration
- Surface Area
اما ماتبقى من ال facets فهي مخصصة فقط لل On Demand و On Schedule
1- نعود الان الى الخاصية الخامسة من خصائص ال Policy وهي ال Server Restriction
يجب ان نعلم انة من الممكن ان تنفذ Condition قادم من Server اخر
Description Page Policies كما في الواجهه التالية

اولاً:- category وهي عبارة عن Groping لل policy وسوف نشرحها بالتفصيل لاحقاً
ثانياً :- Description وضع وصف لل Policy وما عملها وهي مفيدة جداً
ثالثاً:- الخيار text To Display ومعناه وضع نص رسالة خطا تضهر في حال كان المستخدم لايذعن للسياسة الموضوعة او ال Policy
رابعاً :- الخيار Address وضع عنوان لرابط تشعبي يضهر في حال ضهرت رسالة الخطأ او ان المستخدم لايذعن لشرط معين
اخيرأ عند الضغط على زر ال OK سوف ينشئ لدينا اول Policy
1- كما تكلمنا سابقاً عمل Grouping لل Policy الخيار الافتراضي هو default لكن لاينصح به تعرف ال category على انها وحدات تنضيم لل Policy اما اذا كنت تريد استخدام ال category فلديك الخيارات التالية
اولاً:- استيراد مجموعه من التصنيفات من خلال استيراد ال Microsoft sample Polices كما سنفعل في التمرين التالي
ثانياً :- خلق التصنيف الذي تريده انت
لنلاحظ التمرين التالي على استيراد Category من خلال استيراد ال Policy
1- نفنح ال SSMS
2- نقوم بال نزول على management
3- ثم فنح عقدة ال Policies management
4- ومن ثم Right Click على ال Policies ثم اختيار ال Import Policy
5- ومن ثم الذهاب الى ال path التالي C:\Program Files\Microsoft SQL Server\100\Tools\Policies\ DatabaseEngine\1033 folder
ملاحظة هنالك Facet خاصة بال Analysis Services , Reporting Services لكل منها استخداماتها
حدد كل ال موجود ولاحظ الشكل التالي

الخيارت الموجودة في خانة option معروفة اختر منها التالي Preserve Policy State on import وتعني المحافظة على حالة ال Plicy ولاتقلق سوف تكون كل ال Policy في حالة ال Don't Enable اما الخياران الباقيان فهما واضحان
1- بعد الضغط على مفتاح ال OK سوف تلاحظ ظهور قائمة من ال Policy ملاحظة في بيئة انتاجية لاتقوم بأستيراد كل الPolicy الموجودة حتى لايحدث لديك اي تشوش او فوضى في العمل تذكر انك مدير قواعد بيانات
2- الان Right-click ثم اختيار Policy Management node وثم اختيار Manage Categories
فنلاحظ النتيجة التالية

ما ويمكنك التالي تابع الصورة التالية

مافائدة هذة الصورة نستنتج انه يمكننا انشاء ال Policy الخاص بنا وتصديرة واستيرادة علىServer اخر تخيل هذة الفائدة حيث لايجب ان تعيد العمل في كل مرة
استفدنا من هذا التمرين التالي استيراد Policy وبالتالي استيراد Category ومن ثم عرفنا اننا من الممكن ان نقوم بتصدير Policy وما له من فوائد
اما عن الطريقة الثانية في انشاء new Category تابع الصورة التالية من خلال الضغط على زر New

الصورة التالية تبين كيفية انشاء category جديد مع استعراض ال Category المستورد اثناء استيراد ال Policy
يتبع ....
الان نأتي الى تطبيق كل ما تكلما عنة وتنفيذة في مشروع صغير لنختم به درسنا على امل المعادوة في الجزء الثاني من الموضوع
تعلمنا معاً النقاط التالية ان ال facet تكون في الاصل موجودة ومحملة على SQL Server الخاص فينا لذالك كاول خطوة نقوم فيها انشاء Condition
سأخذ امثلة بسيطة لتطبيقها :
ال Facet الاولى تفيد في تهيئة ومراقبة اداء المستخدمين في حال كانلهم نفس ال Default database
ال facet الثانية ستقوم بأجراء سياسية التحقق من ان قاعدة البيانات خاصية ال recovery لها تكون Full و ان ال owner نحددة نحن
ناتي الى طريقة انشاء Condition جديد كما تعلمنا مسبقاً ولنسميها مثلاً كالتالي ConUserDefaultDatabase تابع الخطوات التي في الصورة

بنفس الطريقة نقوم بانشاء Condition جديدة ولتكن اسمها CondDatabaseRecovery وخاصية ال factلها تكون Database option
اما Expression فتكون كالتالي

ثم OK
الان سوف نقوم بانشاء ال Policy الخاص بكل Condition
كما تعلمنا مسبقاً سوف نقوم بانشاء Policy
للCondition كما في الصورة التالية

ثم نضغط OK لانشاء ال Policy ب ثم نقوم بعملية ال Evaloution (( تشغيل ال Policy ))شكل يدوي كما في الشكل التالي

طبعاً هذة الحالة مفيدة او طريقة التشغيل في حال كان ال Evolution mode On demand اي عند الطلب اختبرها بنفسك
سوف اقوم بأختبار ال Policy عن طريق انشاء مستخدم جديد بأستخدام الكود التالي
use master
GO
create Login UserIraqDB WithPASSWORD='123456@r'
,DEFAULT_DATABASE= IraqDotNetDB
ثم الضغط على زر ال F5 للتنفيذ فنلاحظ الرسالة او الخطا التالي

لنفرض الفرضية التالية لو كان لدينا مستخدم انشئ مسبقاً غير مطابق لل Policy التي عملناها الان عند انشاء ال Policy فأن ال SQL Server لن يعترض الا في حال عملنا بشكل يدوي على تشغيل ال Policy كما في الصورة اعلاة
الان لنلاحظ كيفية تتبع الخطا في حال كانت ال Evolution mode On Change only:-
بعد ان ننشأ السياسية الثانية نقوم

اضغط OK لانشاء ال السياسة التالية ولنشاهد النتائج بعد تغير بعض ال Option لقاعدة البيانات خاصتك حيث قم بتغير ال recovery Modil او ال owner او خاصية ال Aotu Close طبعاً ان ال التغيرات سوف تحدث لكن سوف يتم ابلاغ مدير ال SQL Server بالتغيرات التي جرت وهي تفيد في حال مراقبتة التغيرت التي تطرأ على قاعدة البيانات خاصتك تابع الصور التالية

تأمل بالتقرير الذي يظهر كما في الشكل التالي او كما ضهر لديك

ناتي الان الى مثال اخير
سوف ان شاء Condtion هو التالي مثالة لا اريد Stord Procedure يبدا بالاسم SP
نخلق Condtion بأسم CondCheckProSdure ثم نضع الFacet له StordProcdure
اما عن الExprition فيكون كالتالي

الان اخلق ال Policy الازم

بعد الضغط على زر ال OK لننفذ الكود التالي
Use IraqDotNetDB
Go
Create Proc SP_omar
as
Print 'NO Way...... man'
عند تنفيذ الكود اعلاة ستلاحظ ضهور خطأ وهو عدم القبول بال ستورد بروسيجر لاحتوائة على الاسم SP_
اردت في هذا المثال ان اوجه التفكير في خاصية Agnest Target
اي على ماذا تريد ان ان يعمل ال Conditionلديك ان ال SQL يمتلك من الذكاء ليعلم ان ال خاصية ال @name لل Storprocdure يعمل على Database لكن في الكالات والشروط التابعه او بالاحرى التي حددتها انت لها كما في الشكل التالية

اذن الان لنقوم بتحديد عمل هذا ال Policy عن طريق انشاء Condition جديد لل facet المسمى Database
لكي يعمل هذا ال Policy على نوع معين
تابع معي انشاء Condtion جديد بأسم Conddatabasename والFacet لها Database اما الاكسبرشن فهو كالتالي

فتصبح واجهة ال Policy او ال Agnest target كما في الشكل التالي

الان لو حاولنا ان ننشأ StordProcdure على اي قاعدة بيانات سوف يقبل بالتأكيد اما ل حاول ان تنشا StordProcdure على قاعدة بيانات والتي اسمها AdventureWorks2008
لن يقبل واترك لك الكود وانت جرب بكل التوفيق
Use AdventureWorks2008
Go
Create Proc SP_test
as
Print 'ألفريق العربي للبرمجة'
تم بعون الله الانتهاء من الجزء الاول وان شاء الله في الجزء الثاني سنتعلم كيفية عمل ال Centralized
Policy Management
الرجاء دعواتكم اخواننا الكرام في حال استفتدم من هذا المثال
المصادر
1- كتاب ال SQL Server® 2008 Administration Real World Skills for MCITP Certification and Beyond
2- كتاب Pro SQL Server 2008 Policy-Based Management
الرجاء ذكر المصدر في حال نقل المقال

