دورات هندسية

 

 

الامان فى MS SQL Server

النتائج 1 إلى 4 من 4
  1. [1]
    أغربي عدنان
    أغربي عدنان غير متواجد حالياً

    جديد

    تاريخ التسجيل: Nov 2006
    المشاركات: 7
    Thumbs Up
    Received: 0
    Given: 0

    الامان فى MS SQL Server

    السلام عليكم
    قررت كتابة هذا الموضوع بعد ان تكرر السؤال عن وجود مشاكل فى التعامل مع ال MS SQL Server من جانب المطورين و خصوصاً فى خطوة الاتصال بقاعدة البيانات و السبب هو جهل المطورين بالامن فى ال MS SQL Server
    دعونا اولاً نحدد ان التعامل مع ال MS SQL Server ليس كالتعامل مع MS Access حيث انك فى تطبيقات الاكسس تقوم بارفاق قاعدة بياناتك إلى العميل و تحتاج لوجود محرك JET عنده لكى يعمل تطبيقك
    اى انك تتعامل مع Single Tier Application حيث ان طبقة البيانات مع طبقة العرض مع طبقة ال BL فى اناء واحد و مما لا شك فيه ان لهذه الطريقة مساوئ و عيوب
    اما التطبيقات التى تتعامل مع MS SQL Server هى تطبيقات من نوع Two Tier Application او n-Tier Applications فى هذا النوع من التطبيقات يتم فصل ال Data Layer عن ال Presentation Layer و ال Buisness Logic Layer

    ماذا قصدت من وراء هذه المقدمة ؟
    ما قصدته ان ابين ان التعامل مع تطبيقات ال MS SQL Server يتم استخدام سيرفر لقواعد البيانات و من ثم لزم على المطور ان يجعل برنامجه يتصل بقاعدة البيانات الموجوده على السيرفر (Data Layer)

    سأتطرق فى حديثى لنقطتين الاولى هى انواع ال Authentication فى ال MS SQL Server و النقطة الثانية هى انشاء مستخدم جديد و اعطاؤة الصلاحيات

    سأذكر هنا بعض المصطلحات التى نحتاج لان نعرفها اولاً
    Authentication هى العمليه التى يتم فيها التاكد من صحة اسم المستخدم وكلمة المرور
    اما ال Authorization فالمقصود بها الصلاحيات الممنوحه إليك
    و بصوره ابسط افترض اننى عامل لديك فى المصنع فمن حقى ان ادخل المصنع و لكن لى صلاحيات لا يمكن تجاوزها
    ال Roles مثل مجموعات المستخدمين بداخل اى دومين على ويندوز 2000 و هى تسمح لك بجمع مجموعة مستخدمين فى مجموعه واحده ثم يمكنك ان تطبق عليهم صلاحيات محدده على كل المجموعه
    ال Rules هى كائن بقاعدة البيانات مرتبط باعمده او انواع بيانات جديده (قام بصنعها المطور ) يحدد قيم البيانات التى يمكن استقبالها فى العمود

    الامن فى ال MS SQL Server

    يوفر ال MS SQL Server نوعين من ال Authentication بداخله لكى ترتبط التطبيقات التى تعمل على الانظمة به
    1 - النوع الاول يعمل مع انظمة مايكروسوفت NT Family مثل Windows NT ,2K,XP And Later و هو يسمى Windows Authentication
    2 - النوع الثانى يعمل مع انظمة 9X مثل Windows 98 And Windows ME و هو يسمى SQL Server Authentication او Mixed Mode Authentication

    النوع الاول Windows Authentication

    هذا النوع كما ذكرنا يستخدم عندما يتصل مستخدموا التطبيق بقاعدة البيانات على السيرفر و يعمل هؤلاء المستخدمين بانظمة NT Family
    اى الان انت كمطور قمت ببناء تطبيق يستخدم MS SQL Server و قمت باسترجاع نسخة احتياطية من قاعدة البيانات على السيرفر او قمت بعمل Attach لملفى ال MDF و ال LDF المهم الان فى تطبيقك الموجود لدى العملاء يجب ان تتأكد انك تستخدم Windows Authentication تم تحديده فى ال Connection String لديك
    يتم استخدام هذا النوع من الامان فى تطبيقات المؤسسات الداخلية التى تعمل من خلال الشبكة الداخلية لها Intranet

    النوع الثانى Mixed Mode Authentication
    هذا النوع من الامن يستخدم مع تطبيقات الويب و مع مستخدموا الانظمة التى تعمل باستخدام Windows 9X لكى يستطيعوا استخدام تطبيقك و الاتصال سيرفر قاعدة البيانات

    أى انواع الامن افضل ؟

    هذا يعتمد على طبيعة العمل الذى تقوم به فمثلاً فى تطبيقات المؤسسات الداخلية انا افضل استخدام النوع الاول Windows Authentication الذى يستخدم بروتوكول الشتفير Kerberos و هنا يتم تشفير الاكونت بين العميل و بين السيرفر بالاضافة ايضاً لامكانية متابعة المستخدمين فى هذا النوع من الامن

    فى تطبيقات الويب و هى الاكثرية نستخدم Mixed Mode (الذى يستخدم مزيجاً من Windows Authentication and SQL Server Authentication). و هنا تنتقل حسابات الدخول فى صيغة غير مشفرة Plain Text يمكن التقاطها بال Sniffers
    و لكن هذه الطريقة هى الامثل فى بيئة تعدد المستخدمين بانظمة هجينة غير انظمة مايكروسوفت و يكون بالامكان استخدام بروتوكول SSL مع هذا النوع من التطبيقات عند العمل كتطبيقات ويب

    إنشاء مستخدم جديد للتعامل مع قاعدة البيانات
    هذا الجزء ساناقش فيه مفهوم ال Roles و انشاء المستخدمين فى ال MS SQL Seerver و بعد ذلك كيفية اعطاء الصلاحيات على قاعدة البيانات

    ما هى ال Roles ؟

    هى مجموعات المستخدمين بداخل سيرفر قاعدة البيانات و هى تسمح لك بجمع مجموعة مستخدمين فى مجموعه واحده ثم يمكنك ان تطبق عليهم صلاحيات محدده على كل المجموعه

    تنقسم ال Roles فى ال MS SQL Server لنوعين من ال Roles
    الاول يسمى Server Roles و من الواضح انها تحتوى على مجموعات خاصة للتعامل مع السيرفر و اجراء اى عملية على السيرفر و تضمن المجموعات التالية
    sysadmin : يمكن لاعضاء هذه المجمعة التعامل مع اى شئ خاص بالسيرفر
    serveradmin : الموجودين بهذه المجموعة لهم الحق فى تغيير إعدادات السيرفر او اغلاقه
    setupadmin : اعضاء هذه المجمعة لهم الحق فى التعامل مع اعدادات ال Replications و تنزيل او استخدام ال Extended SP
    securityadmin : اعضاء هذه المجموعة لهم الحق فى تغيير و انشاء ال Logins و التعامل مع الصلاحيات
    dbcreator : لهم صلاحية انشاء و تعديل قواعد البيانات على السيرفر
    diskadmin :إمكانية التعامل مع الملفات على السيرفر
    bulkadmin : يسمح لاعضاء هذه المجموعة باستخدام ال Bulk Insert

    الثانى يسمى DataBase Role و تحتوى على المجموعات التى يمكن ان تتعامل مع قواعد البيانات على السيرفر

    إنشاء Login جديد

    سنقوم الان و اولاً بتعديل نمط السيكيورتى فى ال MS SQL Server كما ذكرنا فى انماط ال Authentication على حسب طبيعة عملك



    الان سنبدأ فى التعامل مع انشاء مستخدم من خيارات ال Security فى شجرة السيرفر اضغط بالزر الايمن و اختر New Login تظهر لك شاشة شبيهة بالشاشة التالية غير فيها ما يلزمك


    الان هل تعتقد يا صديقى المبرمج انك انتهيت من برنامجك كلا يا استاذى انت بالفعل اوجدت مستخدم جديد و لكنك لم تعطه الصلاحيات لكى يتعامل مع قاعدة البيانات المستخدمة فى تطبيقك

    للتوضيح فقط هنا كل هذا من اختصاص ال DBA او ال MS SQL Server Developer الذى غالباً ما يكون له دراية لا بأس بها بال Administration
    و عن حقيقة انا لم اقابل اى مبرمج يفهم فى التعامل مع ال MS SQL Server و بالرغم من ذلك تجده مصراً على انه يفهم بدون ان يترك العمل للمتخصصين و هذا شئ طبيعى فى الاعمال الفرديه او الصغيرة و لا يحدث اطلاقاً فى الاعمال المتوسطه او الكبيرة او داخل الشركات

    دعونا نرجع لموضوعنا اه كنت اتحدث عن الصلاحيات هل تتذكرون ال Roles انا لم اتعرض لل DataBase Roles و الان ها هو موضعها
    ال DataBase Roles يمكننا ان نقسمها ل
    Predefined database roles او ما تسمى Fixed Roles - و هناك User Defined Role
    دعونا مع النوع الاول
    و هو يحتوى على المجمعات التالية
    db_owner : انا اطلق على هذه المجموعة The Little Admin Role فهى تعتبر بمثابة مدير صغير لقاعدة البيانات
    الاعضاء بهذه المجموعة لهم صلاحية التعامل من انشاء و تغيير اى كائن موجود بقاعدة البيانات و حتى تعديل صلاحيات و اعطاء صلاحيات جديدة لمستخدمين قاعدة البيانات

    db_accessadmin : اعضاء هذه المجموعة بامكانهم التحكم فى إضافة او ازالة اى مستخدم لقاعدة بيانات سواء يستخدم Windows Authentication او Mixed Mode Authentcation

    db_datareader : اعضاء هذه المجموعة لهم الحق فى استخدام جملة ال Select فقط من دون ال Insert,Update,Delete

    db_datawriter : اعضاء هذه المجموعة لهم حق استخدام فى استخدام Insert,Update,Delete ما عدا ال Select

    db_ddladmin : اعضاء هذه المجموعة لهم الحق فى إنشاء و تعديل و حذف اى كائن بقاعدة البيانات

    db_securityadmin : اعضاء هذه المجموعة لهم الحق فى التعامل مع الصلاحيات و ال Roles داخل قاعدة البيانات

    db_backupoperator : اعضاء هذه المجموعة لهم الحق فى اجراء عملية النسخ الاحتياطى لقاعدة البيانات

    db_denydatareader : اعضاء هذه المجموعة ليس لهم الحق فى استخدام عبارة ال Select و لا يحق لهم انشاء او حذف اى جدول موجود بقاعدة البيانات و لكن يمكنهم تعديل ال Table Schema

    db_denydatawriter : اعضاء هذه المجموعة لا يحق لهم استخدام عبارات ال Insert او ال Update او ال Delete

    public : هذه المجمعة ستجدها فى كل قاعدة بيانات و منها يمكن تطبيق سياسة واحدة على كل المشتركين فى هذه المجموعة

    بعد ان تعرضت للمجموعات بسرعة اعذرونى عليها يمكنك تحديد فى اى مجموعة ستضم المستخدم كما هو موضح



    الان هذا ال Login ستستخدمه فى الاتصال بقاعدة البيانات و اجراء العمليات عليها دعونا ننهى عملنا باعطاء الصلاحيات Permissions
    من ال Users الموجوده داخل قاعدة البيانات سيظهر لك اسم ال Login الذى قمت بانشائه اضغط بالزر الايمن ستظهر لك شاشة توضح ال Roles الموجود بها هذا المستخدم الان اضغط على زر ال Permissions كما هو موضح يمكنك ان تعطى الصلاحية المناسبة لهذا المستخدم على قاعدة البيانات ككل او لكائنات معينة و اعتقد ان الصورة تشرح نفسها



    الان انت انتهيت من انشاء مستخدم و اعطائه صلاحيات تتعامل بها من داخل الكود

    تنبيه اخير

    فى حال استخدمت ال Trusted Connection بداخل ال Code فانت تستخدم ال Windows Authentocation و تاكد ان ال MS SQL Server يعمل بها
    فى حال استخدمت اسم مستخدم و كلمة مرور فانت تستخدم Mixed Mode Authentication و تأكد ان ال MS SQL Server يعمل فى هذا ال Mode و إلا ستظهر رسالة Access Denied او SQL Server Does Not Exist
    ايضاً تأكد من انك قمت بانشاء مستخدم كما هو موضح

    الحمد لله انتهيت من المقالة الاولى فى مجموعة مقالات تهم المطورين الذين يستخدمون MS SQL

    القائمة الرئيسية
    خدمات الموقع
    البحث

  2. [2]
    أشرف صبري
    أشرف صبري غير متواجد حالياً
    عضو


    تاريخ التسجيل: Jul 2005
    المشاركات: 28
    Thumbs Up
    Received: 0
    Given: 0

    Thumbs up السلام عليكم ورحمة الله وبركاته

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

    0 Not allowed!


    سبحانك اللهم وبحمدك، أشهد ألا إله إلا أنت، أستغفرك وأتوب إليك.

  3. [3]
    أغربي عدنان
    أغربي عدنان غير متواجد حالياً
    جديد


    تاريخ التسجيل: Nov 2006
    المشاركات: 7
    Thumbs Up
    Received: 0
    Given: 0
    جزاك الله خيرا أبشركم بمقالات مفيدة جدا في Net. و SQL SERVER مع تطبيقات عملية لبرامج خاصة بالمحترفين إن شاء الله

    0 Not allowed!



  4. [4]
    اياد محمد مبارك
    اياد محمد مبارك غير متواجد حالياً
    جديد


    تاريخ التسجيل: Sep 2010
    المشاركات: 1
    Thumbs Up
    Received: 0
    Given: 0
    مقال مفيد وجهد مشكور وانا احتاج البرنامج

    0 Not allowed!



  
الكلمات الدلالية لهذا الموضوع

عرض سحابة الكلمة الدلالية

RSS RSS 2.0 XML MAP HTML