يوفر كل من SQL Server وInternet Information Server ومحرك ASP.NET نماذج أمان قوية تعمل معًا بشكل جيد. للحفاظ على أمان بيانات المستخدم وتطبيقاته، تقوم Microsoft أيضًا بتعيين الإعدادات الافتراضية لكل خدمة على قيم منخفضة إلى حد ما.
التحدي الذي يواجهه معظم المطورين هو كيفية استخدام SQL Server وIIS وASP.NET لتعيين مستوى الثقة المناسب بين التطبيقات والبيانات دون ترك ثغرات أمنية يمكن للآخرين اختراقها بسهولة. ونظرًا لوجود ثلاثة أنواع من الخدمات المعنية (SQL Server وIIS وASP.NET)، فهناك ثلاث خطوات أساسية يجب اتخاذها لضمان أمان الحل. يناقش هذا القسم إحدى الطرق الأكثر شيوعًا (والموثوقة) لتعيين الأذونات المناسبة ومستويات الثقة لتطبيقات الويب.
تحديد حساب مستخدم IIS المخصص لـ DotNetKB
الطريقة الأكثر أمانًا لتأمين تطبيق الويب الخاص بك هي تحديد مستخدم مخصص بأذونات محدودة، ثم تكوين IIS ليعمل كمستخدم مخصص عند تنفيذ تطبيق الويب الخاص بك. يعد هذا أمرًا سهل التنفيذ إلى حد ما ويضمن أن كل زائر لتطبيق الويب الخاص بك لديه فقط الأذونات التي تريدها أن يحصل عليها.
الخطوة الأولى هي إنشاء مستخدم Windows جديد (يسمى DotNetKB في هذا المثال)، وتعيين كلمة مرور قوية له، ثم إضافته إلى Windows Guest Group (Guest Windows Group). تأكد أيضًا من تحديد خانات الاختيار الخاصة بكلمة المرور التي لا تنتهي صلاحيتها مطلقًا ولا يمكن للمستخدم تغيير كلمة المرور. سيؤدي هذا إلى إنشاء مستخدم ذي امتيازات محدودة يمكنك استخدامه كهوية عند تشغيل تطبيق الويب الخاص بك في IIS (انظر الشكل 1).
ثم اتصل بمسؤول خادم معلومات الإنترنت وحدد تطبيق الويب الذي يستضيف هذه الصفحات. في هذا المثال، يمكنك تحديد تطبيق الويب (DotNetKB_WebSite) الذي يستضيف صفحة الاختبار التي تم إنشاؤها مسبقًا. انقر بزر الماوس الأيمن فوق تطبيق الويب في العرض الشجري وحدد خصائص... من القائمة الحساسة للسياق. ثم حدد "أمان الدليل" وانقر فوق الزر "تحرير" في قسم التحكم بالوصول المجهول والمصادقة في مربع الحوار. أخيرًا، أدخل اسم مستخدم مخصص (DotNetKB)، وقم بإلغاء تحديد خانة الاختيار السماح لـ IIS بالتحكم في كلمة المرور، وأدخل كلمة مرور لحساب المستخدم المخصص. بعد الانتهاء من كل هذا العمل، انقر فوق الزر "موافق" لحفظ هذه التغييرات في قاعدة بيانات تكوين IIS (انظر الشكل 2).
[قص الصفحة]
عند هذه النقطة، سيتم تشغيل IIS ضمن حساب مخصص بأذونات محدودة. سيتم تشغيل أي زائر يزور صفحات الويب الخاصة بتطبيقك كمستخدم مخصص ولن يكون لديه سوى أذونات المصادقة لهذا المستخدم المخصص.
قم بتخويل حساب مستخدم DotNetKB للوصول إلى SQL Server
تحتاج بعد ذلك إلى منح المستخدم المخصص الأذونات المناسبة للوصول إلى قاعدة البيانات (DotNetKB). للقيام بذلك، يمكنك استخدام Microsoft SQL Server Enterprise Manager أو كتابة برنامج نصي مخصص لإنشاء مثل هذا المستخدم ومنحه حق الوصول إلى كائنات محددة. توضح هذه المقالة كيفية القيام بذلك باستخدام SQL Server Enterprise Manager.
ملاحظة: على الرغم من أن Visual Studio .NET 2003 يحتوي على العديد من الميزات المتكاملة القوية المتوافقة مع SQL Server، إلا أنه لا يسمح بالإدارة السهلة للمستخدمين وأذونات المستخدم من داخل Visual Studio .NET 2003. في المؤسسات والفرق الكبيرة، عادةً ما يتم تنفيذ هذه المهام المتقدمة بواسطة مسؤولي قواعد البيانات. ولذلك، بعد بدء تشغيل SQL Server Enterprise Manager، يمكنك اتباع الخطوات الموضحة أدناه لإضافة مستخدم مخصص (DotNetKB) إلى قاعدة البيانات.
· في العرض الشجري الموجود على اليسار، قم بتوسيع العقدة لعرض قاعدة بيانات DotNetKB. على جهاز الكمبيوتر الخاص بي، يتم تنظيم العرض الشجري على النحو التالي: قاعدة بيانات مجموعة خوادم SQL الجذرية لوحدة التحكم (المحلية) (Windows NT) DotNetKB.
· ثم، انقر بزر الماوس الأيمن على عقدة المستخدمين ضمن قاعدة البيانات وحدد مستخدم قاعدة بيانات جديد... (مستخدم قاعدة بيانات جديد...). عندما يظهر مربع الحوار خصائص مستخدم قاعدة البيانات - مستخدم جديد، حدد (<جديد>) من المربع المنسدل اسم تسجيل الدخول.
· عند ظهور مربع الحوار خصائص تسجيل الدخول إلى SQL Server - تسجيل دخول جديد، حدد علامة التبويب عام وأدخل DotNetKB في مربع إدخال الاسم. تأكد من تحديد زر الاختيار مصادقة Windows وحدد اسم الكمبيوتر الذي يوجد به حساب المستخدم المخصص من المربع المنسدل المجال. ثم حدد DotNetKB من المربع المنسدل قاعدة البيانات.
· الآن، حدد علامة التبويب قواعد البيانات، وابحث عن قاعدة بيانات DotNetKB في القائمة الموجودة أعلى مربع الحوار وحدده. ثم تأكد من تحديد الدور العام في القائمة الموجودة أسفل مربع الحوار. وأخيرًا، انقر فوق الزر "موافق" الموجود أسفل مربع الحوار لحفظ التغييرات.
بعد ذلك، تحتاج إلى إضافة أذونات التنفيذ لجميع الإجراءات المخزنة والوظائف المخصصة في قاعدة بيانات DotNetKB. للقيام بذلك، ما عليك سوى منح الأذونات للدور العام. يمكنك منح أذونات لمستخدمي DotNetKB، مما سيسهل على عمليات تسجيل الدخول المستقبلية (عندما يتمكن هؤلاء المستخدمون من الوصول إلى DotNetKB) تنفيذ الإجراءات المخزنة دون الحاجة إلى إضافة أذونات جديدة لكل مستخدم.
فيما يلي خطوات منح أذونات التنفيذ للإجراءات والوظائف المخزنة في قاعدة بيانات DotNetKB:
· قم بتمييز عقدة المستخدمين ضمن قاعدة بيانات DotNetKB في العرض الشجري لعرض قائمة المستخدمين لقاعدة البيانات هذه. حدد موقع مستخدم DotNetKB وانقر عليه نقرًا مزدوجًا لفتح مربع الحوار خصائص مستخدمي قاعدة البيانات.
· مع تمييز الدور العام (محدد)، انقر فوق الزر خصائص... لفتح مربع الحوار خصائص دور قاعدة البيانات. ثم انقر فوق الزر "أذونات..." لعرض قائمة بكائنات قاعدة البيانات وإعدادات الأذونات.
مع تحديد الدور العام في القائمة المنسدلة دور قاعدة البيانات في الجزء العلوي من مربع الحوار، ابحث عن كافة الإجراءات المخزنة والوظائف المخصصة المحددة لقاعدة البيانات هذه (قد تحتاج إلى توسيع مربع الحوار لرؤية الأسماء الكاملة) وتأكد من حدد خانة الاختيار تنفيذ بجوار كل عنصر. قد تجد أن بعض كائنات النظام قد تم تحديد بعض مربعات الاختيار الأخرى فيها، يرجى عدم تغيير هذه الخيارات.
·أخيرًا، بعد تعيين جميع أذونات التنفيذ، انقر فوق الزر "موافق" لحفظ التغييرات وإغلاق مربع الحوار. انقر فوق الزر "موافق" واحدًا تلو الآخر حتى يتم إغلاق كافة مربعات الحوار.
عند هذه النقطة، قمت بإنشاء مستخدم مخصص لـ IIS وقمت بتعيين الأذونات المقابلة للمستخدم في SQL Server. الآن، تحتاج إلى إجراء تغيير في التكوين في مشروع ASP.NET Web للتأكد من أن ASP.NET يستخدم نفس حساب المستخدم لجميع الاستدعاءات إلى SQL Server.
قم بإعداد تطبيق ASP.NET الخاص بك لتمثيل مستخدمي DotNetKB
الخطوة الأخيرة في إنشاء تكوين قوي وموثوق لتطبيق ويب ASP.NET الذي يعمل ضمن IIS هي تكوين تطبيق ويب ASP.NET بحيث يمكنه قبول معرف مستخدم Windows من IIS ويمكن استخدامه للوصول إلى موارد نظام التشغيل الأخرى . للقيام بذلك، ما عليك سوى إدخال سطر من التعليمات البرمجية في ملف web.config الجذر.
يبدو ملف web.config المعدل كما يلي:
<التكوين>
<system.web>
..عناصر أخرى...
<identity impersonate="true"/> <!-- بافتراض معرف مستخدم IIS-->
..عناصر أخرى...
</system.web>
</التكوين>
لاحظ أنك قمت فقط بإضافة العنصر وتعيين السمة الوهمية على true. ليس عليك إدخال حساب مستخدم أو كلمة مرور حيث سيتم توفير هذه المعلومات بواسطة IIS. أي أنه حتى إذا كان الآخرون قادرين على قراءة ملف التكوين الخاص بك، فلن يتمكنوا من تحديد بيانات اعتماد الهوية المستخدمة لتنفيذ تطبيق الويب الخاص بك.
في هذه المرحلة، قمت بإنشاء مستخدم مخصص وقمت بتعيين الأذونات المناسبة له للوصول إلى SQL Server وIIS.
عند هذه النقطة، سيتم تشغيل IIS ضمن حساب مخصص بأذونات محدودة. سيتم تشغيل أي زائر يزور صفحات الويب الخاصة بتطبيقك كمستخدم مخصص ولن يكون لديه سوى أذونات المصادقة لهذا المستخدم المخصص.
قم بتخويل حساب مستخدم DotNetKB للوصول إلى SQL Server
تحتاج بعد ذلك إلى منح المستخدم المخصص الأذونات المناسبة للوصول إلى قاعدة البيانات (DotNetKB). للقيام بذلك، يمكنك استخدام Microsoft SQL Server Enterprise Manager أو كتابة برنامج نصي مخصص لإنشاء مثل هذا المستخدم ومنحه حق الوصول إلى كائنات محددة. توضح هذه المقالة كيفية القيام بذلك باستخدام SQL Server Enterprise Manager.
ملاحظة: على الرغم من أن Visual Studio .NET 2003 يحتوي على العديد من الميزات المتكاملة القوية المتوافقة مع SQL Server، إلا أنه لا يسمح بالإدارة السهلة للمستخدمين وأذونات المستخدم من داخل Visual Studio .NET 2003. في المؤسسات والفرق الكبيرة، عادةً ما يتم تنفيذ هذه المهام المتقدمة بواسطة مسؤولي قواعد البيانات. ولذلك، بعد بدء تشغيل SQL Server Enterprise Manager، يمكنك اتباع الخطوات الموضحة أدناه لإضافة مستخدم مخصص (DotNetKB) إلى قاعدة البيانات.
· في العرض الشجري الموجود على اليسار، قم بتوسيع العقدة لعرض قاعدة بيانات DotNetKB. على جهاز الكمبيوتر الخاص بي، يتم تنظيم العرض الشجري على النحو التالي: قاعدة بيانات مجموعة خوادم SQL الجذرية لوحدة التحكم (المحلية) (Windows NT) DotNetKB.
· ثم، انقر بزر الماوس الأيمن على عقدة المستخدمين ضمن قاعدة البيانات وحدد مستخدم قاعدة بيانات جديد... (مستخدم قاعدة بيانات جديد...). عندما يظهر مربع الحوار خصائص مستخدم قاعدة البيانات - مستخدم جديد، حدد (<جديد>) من المربع المنسدل اسم تسجيل الدخول.
· عند ظهور مربع الحوار خصائص تسجيل الدخول إلى SQL Server - تسجيل دخول جديد، حدد علامة التبويب عام وأدخل DotNetKB في مربع إدخال الاسم. تأكد من تحديد زر الاختيار مصادقة Windows وحدد اسم الكمبيوتر الذي يوجد به حساب المستخدم المخصص من المربع المنسدل المجال. ثم حدد DotNetKB من المربع المنسدل قاعدة البيانات.
· الآن، حدد علامة التبويب قواعد البيانات، وابحث عن قاعدة بيانات DotNetKB في القائمة الموجودة أعلى مربع الحوار وحدده. ثم تأكد من تحديد الدور العام في القائمة الموجودة أسفل مربع الحوار. وأخيرًا، انقر فوق الزر "موافق" الموجود أسفل مربع الحوار لحفظ التغييرات.
بعد ذلك، تحتاج إلى إضافة أذونات التنفيذ لجميع الإجراءات المخزنة والوظائف المخصصة في قاعدة بيانات DotNetKB. للقيام بذلك، ما عليك سوى منح الأذونات للدور العام. يمكنك منح أذونات لمستخدمي DotNetKB، مما سيسهل على عمليات تسجيل الدخول المستقبلية (عندما يتمكن هؤلاء المستخدمون من الوصول إلى DotNetKB) تنفيذ الإجراءات المخزنة دون الحاجة إلى إضافة أذونات جديدة لكل مستخدم.
فيما يلي خطوات منح أذونات التنفيذ للإجراءات والوظائف المخزنة في قاعدة بيانات DotNetKB:
· قم بتمييز عقدة المستخدمين ضمن قاعدة بيانات DotNetKB في العرض الشجري لعرض قائمة المستخدمين لقاعدة البيانات هذه. حدد موقع مستخدم DotNetKB وانقر عليه نقرًا مزدوجًا لفتح مربع الحوار خصائص مستخدمي قاعدة البيانات.
· مع تمييز الدور العام (محدد)، انقر فوق الزر خصائص... لفتح مربع الحوار خصائص دور قاعدة البيانات. ثم انقر فوق الزر "أذونات..." لعرض قائمة بكائنات قاعدة البيانات وإعدادات الأذونات.
مع تحديد الدور العام في القائمة المنسدلة دور قاعدة البيانات في الجزء العلوي من مربع الحوار، ابحث عن كافة الإجراءات المخزنة والوظائف المخصصة المحددة لقاعدة البيانات هذه (قد تحتاج إلى توسيع مربع الحوار لرؤية الأسماء الكاملة) وتأكد من حدد خانة الاختيار تنفيذ بجوار كل عنصر. قد تجد أن بعض كائنات النظام قد تم تحديد بعض مربعات الاختيار الأخرى فيها، يرجى عدم تغيير هذه الخيارات.
·أخيرًا، بعد تعيين جميع أذونات التنفيذ، انقر فوق الزر "موافق" لحفظ التغييرات وإغلاق مربع الحوار. انقر فوق الزر "موافق" واحدًا تلو الآخر حتى يتم إغلاق كافة مربعات الحوار.
عند هذه النقطة، قمت بإنشاء مستخدم مخصص لـ IIS وقمت بتعيين الأذونات المقابلة للمستخدم في SQL Server. الآن، تحتاج إلى إجراء تغيير في التكوين في مشروع ASP.NET Web للتأكد من أن ASP.NET يستخدم نفس حساب المستخدم لجميع الاستدعاءات إلى SQL Server.
قم بإعداد تطبيق ASP.NET الخاص بك لتمثيل مستخدمي DotNetKB
الخطوة الأخيرة في إنشاء تكوين قوي وموثوق لتطبيق ويب ASP.NET الذي يعمل ضمن IIS هي تكوين تطبيق ويب ASP.NET بحيث يمكنه قبول معرف مستخدم Windows من IIS ويمكن استخدامه للوصول إلى موارد نظام التشغيل الأخرى . للقيام بذلك، ما عليك سوى إدخال سطر من التعليمات البرمجية في ملف web.config الجذر.
يبدو ملف web.config المعدل كما يلي:
<التكوين>
<system.web>
..عناصر أخرى...
<identity impersonate="true"/> <!-- بافتراض معرف مستخدم IIS-->
..عناصر أخرى...
</system.web>
</التكوين>
لاحظ أنك قمت فقط بإضافة العنصر وتعيين السمة الوهمية على true. ليس عليك إدخال حساب مستخدم أو كلمة مرور حيث سيتم توفير هذه المعلومات بواسطة IIS. أي أنه حتى إذا كان الآخرون قادرين على قراءة ملف التكوين الخاص بك، فلن يتمكنوا من تحديد بيانات اعتماد الهوية المستخدمة لتنفيذ تطبيق الويب الخاص بك.
في هذه المرحلة، قمت بإنشاء مستخدم مخصص وقمت بتعيين الأذونات المناسبة له للوصول إلى SQL Server وIIS.