السلام عليكم و رحمة الله تعالى و بركاته,,,
نظرا لأسئلة الأعضاء الكرام المتعددة حول طرق تسيير مستخدمي برامج الحاسوب, فكرت في عمل بحث في الموضوع. هذا البحث سيكون مقسما على جزأين, الجزء الأول سيتطرق لحماية برنامج من خلال تحديد المستخدمين عبر الحماية المدمجة مع نظام ويندوزWindows Authentification أما الجزء الثاني فسيكون مخصصا لطرق حماية و تسيير المستخدمين عبر الحماية المدمجة مع نظام SQL Server فقط. أعرف أن أغلبية الأعضاء في المنتدى يستخدمون النسخة الإنجليزية من البرنامج SQL Server Management Studio, لذا أعتذر عن الصور التي أخذتها من نسختي الفرنسية و أطلب من الأعضاء لو أمكن أخد صور مماثلة لهذه المعروضة في هذا الموضوع و إرسالها لي لنشرها بدل النسخة الفرنسية.
الجزء الأول : تسيير المستخدمين عبر نظام الحماية Windows Authentification.
هذه الطريقة سهلة و بسيطة لأنها لا تتطلب منا أن نقوم بتغييرات في البرنامج, كل الإعدادات نقوم بها على نظام تسيير قواعد البيانات SQL Server. لنفترض أن البرنامج الذي نحن بصدد تطويره يقوم بالعمل الذي صمم له من خلال الوصول إلى قاعدة البيانات و الجداول التي تحتوي عليها و أننا نريد أن نخصص تسجيلا لكل مستخدم في جدول مخصص لهذا الغرض. يجب في هذه الحالة إعطاء الصلاحيات الخاصة لكل مستخدم حسب تخصص كل واحد. حيث سيكون هناك المدير الذي ستكون له كل الصلاحيات و هو الذي يحدد صلاحيات المستخدمين هؤلاء ستكون لهم صلاحيات محددة تكون في أغلب الأحيان مابين الربط بقاعدة البيانات و زيادة الأسطر لتسجيل بيانات جديدة. فتكون صلاحيات المستخدم العادي زيادة سطر, تغيير محتوى تسجيل, والأهم هو عدم وصول هذا المستخدم للجداول الحساسة كجدول المستخدمين و كلمات مرورهم. تحديد الصلاحيات الخاصة خارج عن نطاق الموضوع, ما يهمنا هو صلاحيات مستخدم كما يراه نظام تسيير قواعد البيانات SQL Server عبر تقنية Windows Authentification.
نظام الحماية لـ SQL Server المستعمل لـ Windows Authentification يمكننا من تحديد صلاحيات مستخدمي نظام SQL Server من خلال حساب مستخدمي نظام تشغيل ويندوز. في هذه الحالة لن نحتاج لزيادة كود تسيير المستخدمين في برامجنا و إنما كود صغير حسب صغر المشروع يقوم بزيادة الصلاحيات لمستخدم ما إلى قاعدة البيانات و عناصرها. حيث سيتم تثبيت البرنامج و يكون كل المستخدمين لنظام التشغيل لهم صلاحية تشغيله لكن عند التشغيل فقط المستخدمين (SQL Server) الذين أعطيت لهم صلاحية الربط بقاعدة البيانات و عناصرها سيكونون قادرين على تشغيل البرنامج و الوصول إلى البيانات أما المستخدمين الآخرين الذين ليس لهم صلاحيات لن يستطيعوا تشغيل البرنامج لأن SQL Server سيرفض طلب الربط بقاعدة البيانات و سيغلق البرنامج.
لنبدأ في شرح كيفية تحديد الصلاحيات لمستخدمي قاعدة بيانات و جداولها من خلال البرنامج Microsoft SQL Server Management Studio عن طريق استعمال واجهة المستخدم أولا و بعدها سنناقش كيفية تحديد الصلاحيات بطريقة برمجية باستعمال VB.NET إضافة إلى جمل SQL.
1.1 : تحديد صلاحيات المستخدم في الربط بـ SQL Server :
كي يستطيع مستخدم آخر غير الذي قام بتثبيت SQL Server بالوصول إلى قاعدة البيانات يجب أن نسجله ضمن مستخدمي نظام تسيير قواعد البيانات أولا. فكما هو مبين على الصورة و بعد الربط بـ SQL Server نقوم بالنقر على المجلد Security لتظهر لنا عدد من المجلدات و ما يهمنا منها هو المجلد Connections الذي سيظهر لنا لائحة بأسماء مستخدمي SQL Server الحاليين. لزيادة مستخدم جديد, ننقر على المجلد Connections ثم نختار New connection… من القائمة التي ستظهر.
على النمودج الذي سيظهر ننقر على الزر Find… لنختار اسم مستخدم ويندوز الذي سنمنحه صلاحية الإتصال بـ SQL Server. بعدها سنختار Server roles من الائحة التي على يسار النمودج...
بعد الاختيار ستظهر لنا لائحة نوع حساب المستخدم الذي نريد إنشاءه. بالنسبة لمستخدم عادي يقوم بعملية تسجيل البيانات نختار public كما هو مبين على الصورة أدناه. للمزيد من المعلومات المرجو النقر هنا. بعدها نقوم باختيار User mapping من على الائحة الموجودة على يسار النموذج...
هنا سنحدد قواعد البيانات التي للمستخدم صلاحية الربط بها و كذلك دور المستخدم عند الربط بها.
بعد النقر على الزر OK و تأكيد نجاح العملية من طرف SQL Server سيكون للمستخدم صلاحية الربط بقاعدة البيانات و لكن فقط الربط بقاعدة البيانات لا غيرها و لا حتى عناصرها. إذا ما جربتم الآن تغيير المستخدم الحالي لنظام ويندوز و دخلتم بحساب المستخدم الذي زدنا له صلاحية الربط للتو ثم شغلتم SQL Server Management Studio و استعرضتم لائحة قواعد البيانات سوف لن تستطيعوا الوصول إلا إلى قاعدة البيانات التي أعطيتم الصلاحيات للمستخدم بالحساب ويندوز الحالي و لكن و كما قلت قاعدة البيانات فقط ولا تستطيعون الوصول إلى عناصرها من جداول و غيرها. هذا لأن لكل عنصر يجب تحديد صلاحية كل مستخدم للوصول إليه و هذا يتيح لنا إمكانية إنشاء جدول لمعلومات المستخدمين من اسم و كلمة مرور و غيرها مع عدم إعطاء صلاحية من أي نوع لأي مستخدم آخر غير المدير الذي له كل الصلاحيات و خاصة صلاحية زيادة مستخدم جديد بالطبع.
1.2 : تحديد صلاحية مستخدم للوصول إلى جدول في قاعدة البيانات.
الآن نبدأ باستعراض قواعد البيانات الموجودة و ذلك بالنقر على المجلد Databases على اللائحة التي بيسار البرنامج SQL Server Management Studio و في اللائحة التي ستظهر نقوم باختيار قاعدة البيانات التي نريد أن نحدد صلاحيات مستخدم لها. نقوم بالنقر على علامة زائد المجاورة للمجلد Tables لاستعراض الجداول التي تحتويها قاعدة البيانات ثم نقوم بالنقر على الجدول الذي يخصنا بالزر الأيمن للفأرة و أخيرا نقوم باختيار Properties من القائمة التي ستظهر.
نبدأ باختيار Permissions من الائحة على يسار النمودج Properties كما في الصورة أدناه. بعدها, ننقر على الزر Add… لزيادة المستخدم إلى لائحة المستخدمين الذين لهم صلاحية الوصول إلى الجدول. بعدها, نختار العمليات التي يمكن للمستخدم الجديد أن يقوم بها على الجدول. كما هو مبين في الصورة نعطي للمستخدم صلاحية الحدف Delete, الزيادة Insert, تشغيل جمل Select و تغيير محتوى التسجيلات Update. بمعني آخر, المستخدم لا يستطيع حذف الجدول, تغيير بنيته بزيادة حقل أو حذفه مثلا و غيرها من الصلاحيات المخصصة للمدير و مسيري النظام.
بعد النقر على الزر OK و الانتقال إلى حساب المستخدم الجديد على الويندوز سيمكننا الربط بقاعدة البيانات و قراءة و حذف البيانات و تغييرها و لكن لن يمكننا حذف قاعدة البيانات أو الجدول لأن المستخدم بحساب الويندوز الذي زدناه للتو إلى قائمة مستخدمي SQL Server ليست لديه الصلاحيات اللازمة للقيام بذلك.
في هذا الجزء الأول تعلمنا كيفية تسيير مستخدمي SQL Server من خلال تقنية الحماية Windows Authentification التي تعطي لكل مستخدم نظام ويندوز صلاحيات للوصول و الربط بقواعد البيانات و عناصرها. إتباع هذه الطريقة سيضع عبئا كبيرا عن كاهلنا ألا و هو زيادة كود و نماذج لتسيير مستخدمي برنامج ما لأنه في حالة استعمال هذه التقنية سنرمي بثقل المسؤولية على نظام التشغيل و SQL Server و سنستعمل تقنية تمت تجربتها و التصديق على كفاءتها عالميا و ننتج برامج فعالة لها مصداقيتها و قوة حمايتها للبيانات التي قد تكون حساسة.
في الجزء الثاني سنقوم بشرح كيفية إعطاء صلاحيات الربط بـ SQL Server و قواعد البيانات و عناصرها و لكن بطريقة برمجية باستخدام VB.NET و جمل SQL. و حتى ذلك الحين, أتمنى أن يكون البحث مفيدا لكم بقدر ما وجدت إعداده مفيدا لي.
تحياتي...

