مصادقة قاعدة البيانات لتطبيقات الإنترانت

StackOverflow https://stackoverflow.com/questions/78984

  •  09-06-2019
  •  | 
  •  

سؤال

أنا أبحث عن أفضل الممارسات للمصادقة الشاملة لتطبيقات الويب الداخلية على طبقة قاعدة البيانات.

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

السيناريو الآخر الذي رأيته هو استخدام مصادقة Windows الكاملة من النهاية إلى النهاية.لذلك تتم إضافة المستخدمين أنفسهم إلى المجموعات التي لديها جميع الأذونات المحددة حتى يتمكن المستخدم من التحديث والتغيير خارج معلمات التطبيق.يتضمن هذا عادةً تأمين الأشخاص وصولاً إلى الإجراءات المخزنة المناسبة حتى لا يقوموا بتحديث الجداول مباشرةً.

يبدو من السهل نسبيًا الحفاظ على السيناريو الأول ولكنه يثير مخاوف إذا كان هناك ثغرة أمنية في التطبيق، فسيتم اختراق قاعدة البيانات بأكملها.

يبدو السيناريو الثاني أكثر أمانًا ولكن لديه مشكلة معاكسة تتمثل في الاضطرار إلى استخدام قدر كبير من منطق الأعمال في الإجراءات المخزنة في قاعدة البيانات.ويبدو أن هذا يحد من استخدام بعض التقنيات الرائعة حقًا مثل Nhibernate وLINQ.ولكن في هذا اليوم وهذا العصر حيث يمكن للأشخاص استخدام البيانات بعدة طرق مختلفة لا نتوقعها، على سبيل المثال.عمليات المزج وما إلى ذلك هي الطريقة الأفضل.

هل كانت مفيدة؟

المحلول

ديل - هذا كل شيء بالضبط.إذا كنت تريد توفير الوصول إلى مخزن البيانات الأساسي لهؤلاء المستخدمين، فقم بذلك عبر الخدمات.ومن خلال تجربتي، فإن مستخدمي الكمبيوتر ذوي الخبرة الذين تخرجوا من Uni/College هم الذين يلحقون الضرر بالأشياء أكثر من غيرهم.وكما يقول المثل، فإنهم يعرفون ما يكفي ليكونوا خطرين.

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

نقطتي الأساسية هي أن قاعدة البيانات هي الكأس المقدسة للتطبيق.تريد أقل عدد ممكن من الأصابع في تلك الفطيرة المعينة.

باعتباري مستشارًا، عندما أسمع أن شخصًا ما سمح للمستخدمين العاديين بالدخول إلى قاعدة البيانات، تشتعل عيناي لأنني أعلم أنه سينتهي بي الأمر بالحصول على راتب كبير بالنسبة لي عندما يتم الاتصال بي لإصلاحها.

نصائح أخرى

أنا شخصياً لا أريد المستخدمين النهائيين العاديين في قاعدة البيانات.بالنسبة لتطبيق إنترانت (خاصة التطبيق الموجود على المجال) سأوفر حسابًا واحدًا لوصول التطبيق إلى قاعدة البيانات والذي يتمتع فقط بتلك الحقوق اللازمة لكي يعمل التطبيق.

سيتم بعد ذلك التحكم في الوصول إلى التطبيق عبر حساب المجال الخاص بالمستخدم (قم بإيقاف تشغيل الوصول المجهول في IIS، وما إلى ذلك).

لو يحتاج المستخدم، ويمكنه تبرير، الوصول المباشر إلى قاعدة البيانات، ثم الوصول إليها حساب المجال سيتم منحهم حق الوصول إلى قاعدة البيانات، ويمكنهم تسجيل الدخول إلى نظام إدارة قواعد البيانات (DBMS) باستخدام الأدوات المناسبة.

لقد كنت مسؤولاً عن تطوير العديد من تطبيقات الويب الداخلية خلال العام الماضي.

كان الحل الذي نقدمه هو استخدام مصادقة Windows (Active Directory أو LDAP).

كان هدفنا مجرد السماح بتسجيل الدخول البسيط باستخدام معرف/كلمة مرور الشركة الحالية.أردنا أيضًا التأكد من أن القسم الحالي سيظل مسؤولاً عن التحقق من أذونات الوصول وإدارتها.

على الرغم من أنني لا أستطيع الإجابة على الحجة المتعلقة بـ Nhibernate أو LINQ، إلا إذا كان لديك ميزة قاتلة محددة يمكن لهذه الأشياء تنفيذها، فإن Active Directory أو LDAP بسيطان بما يكفي للتنفيذ والمحافظة على أن الأمر يستحق المحاولة.

وأنا أتفق مع ستيفن رايتون.أمان المجال هو الطريق الصحيح.إذا كنت ترغب في استخدام عمليات المزج وما لا ترغب فيه، فيمكنك الكشف عن أجزاء من قاعدة البيانات عبر واجهة RESTful القابلة للقراءة آليًا. دون سرعة الصوت لديه واحد بنيت في.

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

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

ثم من خلال التفويض يمكنك السماح للإدارات بالتحكم في الوصول إلى حساباتها الخاصة عبر المجموعات وفقًا لمنشور جوناثان.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top