التأمين في سيكويل سيرفر: التوثيق 3 – إنشاء مستخدمين جدد

This article is available in English too, check it out here.

اقرأ المزيد عن تأمين سيكويل سيرفر هنا.

هذه السلسلة

من هذه السلسلة:

المحتويات

محتويات هذا الموضوع:

  • هذه السلسلة
  • المحتويات
  • نظرة خاطفة
  • مقدمة
  • إنشاء مستخدم جديد
    • استخدام لوحة التحكم
    • استخدام جمل T-SQL
      • إنشاء مستخدم ويندوز
      • إنشاء مستخدم سيكويل سيرفر
    • استخدام إجراءات مسجلة
    • استخدام الكود
  • تجربة المستخدم الجديد
  • خاتمة
  • ماذا بعد

نظرة خاطفة

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

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

مقدمة

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

إنشاء مستخدم جديد

تستطيع التعامل مع بيانات الدخول في سيكويل سيرفر (الإنشاء، التعديل، الحذف، تحديد الصلاحيات، إلخ) باستخدام طرق ثلاثة (تخير منها ما يناسبك):

  1. باستخدام لوحة التحكم SQL Server Management Studio.
  2. باستخدام أوامر T-SQL.
  3. باستخدام إجراءات مسجلة Stored Procedure.

للأسف لا تستطيع استخدام الفيجوال ستوديو لاستكمال أي من هذه العمليات ولكن يمكنك استخدام كود الدوت نت لتنفيذ أوامر الـ T-SQL أو الإجراءات المسجلة وهذا ما سنتعرض له اليوم.

استخدام لوحة التحكم

لتسجيل مستخدم جديد باستخدام لوحة التحكم في سيكويل سيرفر قم أولا بفتح لوحة التحكم والدخول إلى السيرفر بأي بيانات صحيحة. بعد ذلك ومن خلال شاشة Object Explorer على اليسار قم بالدخول إلى السيرفر ومن ثم Security ثم Logins لتظهر لك على اليمين قائمة بالمستخدمين المسموح لهم بالتعامل مع سيكويل سيرفر.

الآن لإنشاء مستخدم جديد قم بالضغط بزر الفأرة الأيمن على Logins ثم اختر New Login (شكل 1) لتظهر لك شاشة إنشاء مستخدم جديد Create New Login (شكل 2.)

شكل 1 - لوحة إدارة سيكويل سيرفر - إضافة مستخدم جديد

شكل 1 - لوحة إدارة سيكويل سيرفر - إضافة مستخدم جديد

في شاشة إنشاء مستخدم جديد يمكنك أولا اختيار نوع توثيق هذا المستخدم:

  • توثيق الويندوز Windows Authentication:
    وهذا إذا كنت تريد إنشاء مستخدم قائم على مستخدم موجود في الويندوز، أي تريد استخدام بيانات الدخول للويندوز الخاصة بمستخدم للدخول إلى السيكويل سيرفر. تقوم بتحديد هذا المستخدم من خلال الحقل Login Name أعلى الشاشة.
  • توثيق سيكويل سيرفر SQL Server Authentication:
    أي أنك تريد إنشاء مستخدم خاص بسيكويل سيرفر. تقوم بتحديد اسم المستخدم من خلال الحقل Login Name ثم تحديد كلمة المرور وتأكيدها من خلال حقلي Password و Confirm Password.
شكل 2 - لوحة إدارة سيكويل سيرفر - إضافة مستخدم

شكل 2 - لوحة إدارة سيكويل سيرفر - إضافة مستخدم

يمكنك أيضا من خلال هذه الشاشة تحديد قاعدة البيانات الرئيسية Default Database لهذا المستخدم والتي تريد أن يتصل بها المستخدم تلقائيا عند دخولك إلى السيرفر سواء من خلال الكود أو من خلال الفيجوال ستوديو وهذا إذا لم يكن نص الاتصال Connection String يحوي قاعدة أخرى معينة كما لو كنت مثلا قمت بتحديد Initial Catalog=;.

هناك أيضا ثلاثة خيارات لكلمة المرور خاصة بتوثيق السيكويل سيرفر وهي:

  • Enforce Password Policy:
    فرض سياسة كلمات المرور. وهذا يفرض قيود على كلمة المرور وتعقيدها فيمنعك من عدم استخدام كلمة مرور فارغة وكذلك من استخدام كلمات مرور قصيرة أو بسيطة.
  • Enforce Password Expiration:
    فرض تاريخ لانتهاء كلمة المرور. وهذا يضع صلاحية وتاريخ انتهاء لكلمات المرور فيفرض على المستخدمين تغيير كلمات المرور من وقت إلى آخر عند دخولهم إلى السيرفر.
  • User must change password at next login:
    المستخدم يجب أن يقوم بتغيير كلمة مروره المرة المقبلة عند دخوله إلى السيرفر.

في درسنا اليوم نقوم بإنشاء مستخدم خاص بالسيكويل سيرفر له اسم المستخدم My Username وكلمة مرور buzzword حتى نقوم باستكمال أمثلتنا.

استخدام جمل T-SQL

يمكنك أيضا إنشاء مستخدم جديد عن طريق استخدام جملة T-SQL وهي CREATE LOGIN والتي لها الصيغة التالية:

CREATE LOGIN login_name
    { WITH  | FROM  }
 ::=
    WINDOWS [ WITH  [ ,... ] ]
    | CERTIFICATE certname
    | ASYMMETRIC KEY asym_key_name
 ::=
    PASSWORD = 'password' [ HASHED ] [ MUST_CHANGE ]
    [ ,  [ ,... ] ]
 ::=
    SID = sid
    | DEFAULT_DATABASE = database
    | DEFAULT_LANGUAGE = language
    | CHECK_EXPIRATION = { ON | OFF}
    | CHECK_POLICY = { ON | OFF}
    [ CREDENTIAL = credential_name ]
 ::=
    DEFAULT_DATABASE = database
    | DEFAULT_LANGUAGE = language

هذه الجملة معقدة بالشكل الكافي لذلك سوف نقوم بتبسيطها جدا في الأسطر المقبلة.

إنشاء مستخدم ويندوز

لإنشاء مستخدم قائم على توثيق الويندوز يمكنك استخدام جملة CREATE LOGIN بالصيغة التالية (لاحظ أنك تحتاج تغيير المدخلات لتناسب مستخدم موجود على جهازك):

CREATE LOGIN [ELSHEIMY-PC\Mohammad Elsheimy] FROM WINDOWS;

قمنا بتحديد أننا نريد إنشاء مستخدم ويندوز باستخدام الخيار FROM. وقمنا قبله بتحديد المستخدم الذي نريد إضافته إلى سيكويل سيرفر وهو المستخدم الخاص بي Mohammad Elsheimy الموجود على جهازي ELSHEIMY-PC. لاحظ أنه يمكن فشل العملية في حالة أن هذا المستخدم مسجل بالفعل في سيكويل سيرفر (يمكنك التأكد من ذلك من خلال لوحة التحكم، ارجع للقسم السابق.)

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

إنشاء مستخدم سيكويل سيرفر

النوع الآخر من المستخدمين وهو القائم على توثيق سيكويل سيرفر يمكن إنشاؤه أيضا من خلال جملة CREATE LOGIN وتكون وقتها بالصيغة التالية:

CREATE LOGIN [My Username] WITH PASSWORD=N'buzzword'
    MUST_CHANGE, CHECK_EXPIRATION=ON, CHECK_POLICY=ON;

لاحظ أننا لدينا 3 خيارات إضافية تماما كما في لوحة التحكم وهي:

  • MUST_CHANGE:
    أي أن المستخدم يجب أن يقوم بتغيير كلمة مروره المرة المقبلة من دخوله، وهذا يمنعك من استخدامه حتى تقوم بتحديد كلمة مرور جديدة له.
  • CHECK_EXPIRATION (ON|OFF):
    وهي صلاحية كلمة المرور، هل يتوجب عليه تغييرها كل فترة أم لا.
  • CHECK_POLICY (ON|OFF):
    وهي سياسة كلمات المرور من التعقيد ونحو ذلك.

استخدام إجراءات مسجلة

يمكنك أيضا استخدام إجراءات مسجلة Stored Procedure خاصة بالسيكويل سيرفر لإنشاء مستخدمين جدد، والإجراء المتوفر لنا الآن هو sp_addlogin():

sp_addlogin [ @loginame = ] 'login'
    [ , [ @passwd = ] 'password' ]
    [ , [ @defdb = ] 'database' ]
    [ , [ @deflanguage = ] 'language' ]
    [ , [ @sid = ] sid ]
    [ , [ @encryptopt= ] 'encryption_option' ]

ببساطة لن نحتاج من هذه المدخلات سوى الأول والثاني منها وهي اسم المستخدم loginname وكلمة المرور passwd. الكود التالي يقوم بإنشاء مستخدم جديد:

EXEC sys.sp_addlogin  N'My Username', N'buzzword';

تقوم هذه الدالة بإرجاع القيمة 1 في حالة نجاحها أو 0 في حالة الفشل. لاحظ أنه إذا كان هذا المستخدم مسجل بالفعل فإن هذا الإجراء سوف يفشل بالتأكيد.

استخدام الكود

ليس هناك أي خدعة في كود الدوت نت الخاص بنا، الكود يقوم بإدارة المستخدين في سيكويل سيرفر عن طريق تنفيذ جمل الـ T-SQL والإجراءات المسجلة، لاحظ هذا الكود:

// Connecting to SQL Server default instance
// to the default database using current
// Windows user's identity.
// The default database is usually MASTER.
SqlConnection conn = new SqlConnection
    ("Data Source=;Initial Catalog=;Integrated Security=True");
// Creating a login specific to SQL Server.
SqlCommand cmd = new SqlCommand
    ("CREATE LOGIN [My Username] WITH PASSWORD=N'buzzword' " +
    "MUST_CHANGE, CHECK_EXPIRATION=ON, CHECK_POLICY=ON;",
    conn);
// In addition, you can use this command:
// EXEC sys.sp_addlogin  N'My Username', N'buzzword'
// Moreover, you can set the command type to stored procedure,
// set the command to sys.sp_addlogin,
// and add parameters to the command to specify the arguments.
try
{
    conn.Open();
    cmd.ExecuteNonQuery();
}
catch (SqlException ex)
{
    if (ex.Number == 15025)
        Console.WriteLine("Login already exists.");
    else
        Console.WriteLine("{0}: {1}", ex.Number, ex.Message);
}
finally
{
    cmd.Dispose();
    conn.Close();
}

لاحظ أنه يمكنك تغيير جملة الـ T-SQL إلى أمر تنفيذ الإجراء التنفيذي إذا أحببت. لاحظ أيضا الأخطاء التي يمكن حدوثها في الكود السابق.

تجربة المستخدم الجديد

الآن قم بتجربة المستخدم الجديد عن طريق محاولة الدخول إلى سيكويل سيرفر سواء باستخدام لوحة التحكم أو الفيجوال ستوديو أو حتى من خلال الكود. لمزيد من المعلومات، قم بقراءة القسم الثاني من الدرس الأول – المقدمة.

خاتمة

تعلمنا كيفية إنشاء مستخدمين جدد وتسجيلهم في سيكويل سيرفر. وتعلمنا أن المستخدم إما أن يكون: 1) مستخدم ويندوز: بنفس بيانات الدخول التي تستخدم في الويندوز، أو 2) مستخدم سيكويل سيرفر: ببيانات دخول تقوم بتحديدها والتعامل معها من خلال السيكويل سيرفر.

تعلمنا أيضا سياسة كلمات المرور التي يمكن فرضها في سيكويل سيرفر وهي ثلاثة: 1) التعقيد: وتهتم بالطول ومدى صعوبة كلمة المرور. 2) الصلاحية: وتعطي صلاحية لكلمة المرور يتوقف المستخدم عن التعامل مع السيكويل عند انتهائها حتى يقوم بتغييرها. 3) الاستخدام الأول: وتفرض على المستخدم تغيير كلمة مروره أول مرة يقوم فيها بالتعامل مع السيكويل سيرفر، فالمستخدم موقوف حتى يقوم بتغيير كلمة مروره.

ماذا بعد

من هذه السلسلة:

مواضيع مشابهة:

اخترنا لك:

أحدث المواضيع:

هل أعجبتك؟ شارك بها...