PDA

View Full Version : integrated security



pooyansystem
دوشنبه 31 فروردین 1388, 11:13 صبح
سلام
در شركت ما از طريق ترمينال سرويس همه به يك سيستم وصل ميشيم هر كس با User و pass مربوط به خودش . من يك برنامه نوشتم و در ابتداي اجرا، برنامه سعي ميكنه به ديتابيس در Sqlserver وصل بشه ولي يه مشكل داريم كاربران ما دو دسته اند يك admin داريم كه اجازه هر كاري رو داره و يك سري كاربر limited كه دسترسي آنها محدوده مثلا اجازه دسترسي به db يا ساخت اون رو نداره و يك سري از كاربرها از جمله من امكان كار در sql و ايجاد و تغييرات در db رو داريم حالا وقتي من يه setup از برنامه ميسازم و روي سيستم مركزي(سرور) نصب ميكنم ابتداي شناسايي سرورsql كاربران Limitedنمي توانند برنامه رو اجرا كنند و خطا ميده مثلا User5 يك كاربر limited هست
login failed for User5. the user is not associated with a trusted sql server connection
من نمي خوام به همه كاربران اجازه دسترسي به db رو بدم بلكه مي خوام با استفاده از همان loginهاي تعريف شده در sql كه اجازه دسترسي به db رو دارن به ساير كاربران هم اجازه كار با برنامه رو بدم من integrated security مختلف رو امتحان كردم ولي مشكلم حل نشد حالا بايد چيكار كنم

araelectronic@ymail.com
دوشنبه 31 فروردین 1388, 11:23 صبح
با سلام
دوست عزيز اونطوري كه من متوجه شدم شما وقتي با كاربر limited وارد ميشيد زمانيكه ديتابيس وجود نداره پيغام خطا ميده در غير اينصورت بايد وارد بشه .
راه ديگه كه ميشه استفاده كرد تهريف دسترسي براي كاربرها برحسب نوع كاربر در خود برنامه هست.

pooyansystem
دوشنبه 31 فروردین 1388, 11:38 صبح
وقتي با كاربر limited وارد ميشيد زمانيكه ديتابيس وجود نداره پيغام خطا ميده در غير اينصورت بايد وارد بشه .

خير دوست عزيز من اصلا امكان كار در sql رو ندارم حتي اگه db وجود هم داشته باشه بازم پيغام عدم دسترسي رو ميده


راه ديگه كه ميشه استفاده كرد تهريف دسترسي براي كاربرها برحسب نوع كاربر در خود برنامه هست
دوست عزيز همونطور كه قبلا هم گفتم من نمي خوام كاربران جديد در sql تعريف كنم بلكه مي خوام با كاربراي موجود اين كار رو انجام بدم
در ضمن اگه sqlبه طور كامل نصب نباشه و فقط sqlexpress براي اجراي برنامه نصب باشه اونوقت چي؟

يه چيز ديگم بگم كاربراني كه در sql تعريف شدن همون User و pass رو دارن كه براي اتصال بهwindows تعريف شده مثلا من كه User6هستم و با pass خودم وارد سيستم ميشم با همين user هم تو sql كار ميكنم

حامد مصافی
دوشنبه 31 فروردین 1388, 12:32 عصر
شما از تعیین هویت مبتنی بر ویندوز استفاده می کنید، لذا اگر Sql Server به کاربری از یک کامپیوتر محلی اعتماد نداشته باشد آن کاربر را نخواهد پذیرفت و پیغام پست شماره یک را برگشت خواهد داد.

اگر Integrated Security مقداری برابر True داشته باشد SS از هویت کاربر در شبکه استفاده خواهد کرد.
برای این امکان شما چند راه پیش رو دارید.

1- تمام کاربران شبکه محلی را به SS معرفی کنید و آنها را به Role های مربوط حدود اختیارات به خودشان ست کنید.
2- (روش معمول) کاربران را در یک جدول در دیتا بیس تعریف کنید و تمام نرم افزار ها را با یک کاربر واحد به SS اتصال دهید. سپس عمل تعیین هویت را به صورت دستی و با استفاده از جدول مزبور انجام دهید.

pooyansystem
دوشنبه 31 فروردین 1388, 12:53 عصر
اگر Integrated Security مقداری برابر True داشته باشد SS از هویت کاربر در شبکه استفاده خواهد کرد
همونطور كه گفتم من Integrated Security را در هر سه حالت trueو falseو sspi امتحان كردم ولي مشكل حل نشد


1- تمام کاربران شبکه محلی را به SS معرفی کنید و آنها را به Role های مربوط حدود اختیارات به خودشان ست کنید
نميتونم اين كار رو انجام بدم به دو دليل اول اينكه من نمي خوام كاربر جديد در ss تعريف كنم يا محدوديت هاي تعريف شده براي كاربران تغيير كنن بلكه مي خوام با استفاده از كاربران موجود اين مشكل رو حل كنم دوم اينكه من يه فايل setup از برنامم ميسازم و روي سيستم نصب ميكنم در اين صورت نيازي به نصب sql ندارم فقط با نصب sqlexpress من ميتونم برنامم رو اجرا كنم پس چه طور كاربران جديد رو تعريف كنم


2- (روش معمول) کاربران را در یک جدول در دیتا بیس تعریف کنید و تمام نرم افزار ها را با یک کاربر واحد به SS اتصال دهید. سپس عمل تعیین هویت را به صورت دستی و با استفاده از جدول مزبور انجام دهید
خيلي متوجه اين قسمت نشدم ولي اگه منظورتون از تعيين هويت دستي اينه كه با خود sql اين كار رو بكنم به همون دلايل بالا امكانش نيست

درواقع من مي خوام با استفاده از كاربران موجود كه در sql تعريف شدن به كاربراني كه در windows تعريف شدن ولي در sql تعريف نشدن امكان اتصال به برنامه رو بدم

pooyansystem
سه شنبه 01 اردیبهشت 1388, 08:54 صبح
دوستان كسي نميتونه به من كمك كنه اين مسئله خيلي مهمه

حامد مصافی
سه شنبه 01 اردیبهشت 1388, 10:10 صبح
فرض کنید یک جدول با نام TableUsers دارید، در این جدول اطلاعاتی مثل نام کاربری و کلمه عبور و همچنین اطلاعات دسترسی به قسمت های مختلف نرم افزار وجود دارد. همچنین فرض کنید نرم افزار شما با یک هویت که در SS تعریف شده است به DB متصل می شود، آنگاه شما می توانید نام کاربری و کلمه عبور کاربر را هنگام شروع برنامه از وی بپرسید و با جدول فوق الذکر مطابقت دهید. با توجه به مواردی که ذکر فرمودید این مناسب ترین راه حل شماست.

pooyansystem
سه شنبه 01 اردیبهشت 1388, 10:44 صبح
دوست عزيز من اصلا امكان اتصال به sql رو ندارم حتي وقتي پشت سيستم كاربر Limited ميشينم حتي وقتي sqlserver2005 رو اجرا ميكنم نميتونم connectبشم پس چه طور به ديتابيس خاص و جداول اون دسترسي پيدا كنم
براي اينكه متوجه منظور من بشيد ميتونيد در سيستم خودتون چند تا User تعريف كنيد يكي از اونها رو محدود كنيد (در sql هيچlogin براي اون تعريف نكنيد) و به يكي ديگه اجازه اتصال به sql رو بديد بعد سعي كنيد در محيط كاربر محدود به sql وصل بشيد ببينيد نميشه البته Authentication هم windowsباشه نه sql

حامد مصافی
سه شنبه 01 اردیبهشت 1388, 12:30 عصر
دوست گرامی، مشکل شما این است که سعی می کنید با اعتبار سنجی Windows به SS متصل شوید. شما باید یک نام کاربری برای نرم افزار هایتان روی SS تعریف کنید.

pooyansystem
سه شنبه 01 اردیبهشت 1388, 13:07 عصر
ممنون كه جواب داديد ولي اگه sqlبه طور كامل روي سيستم نصب نباشه و فقط sqlexpress نصب باشه و من نتونم كاربر جديد در sql تعريف كنم اونوقت چه طور؟ اخه من موقعي كه setupبرنامم رو ميسازم فايل نصب sqlexpress رو هم همراهش ميذارم در ضمن ممكنه جايي كه برنامم رو ميدم براي نصب sql داشته باشند ولي كاربر محدود شده باشه اونجا هم بايد كاربر جديد تعريف كنن.
يه سوال در اين حالت integrated security رو بايد برابر false قرار بدم درسته؟

حامد مصافی
سه شنبه 01 اردیبهشت 1388, 18:04 عصر
- می توانید Sql Server Express Management Studio را از سایت مایکروسافت دانلود کنید.
- اتصال به SS ربطی به نوع کاربر (Administrator یا Limited) نداره. بلکه علت این مسئله این است که کاربران شما به SS معرفی نشدند لذا SS به آنها اطمینان ندارد.
- بله integrated security باید True باشد.