PDA

View Full Version : امنیت دیتابیس در SQL



Pr0grammer
چهارشنبه 20 آبان 1388, 00:03 صبح
سلام...
بنده از SQL Express استفاده میکنم و در محیط SQL Server Management بعد از ورود به عنوان Windows Authentication و ساخت دیتابیس و همچنین جداول، در برنامه ای که باهاش قصد طراحی نرم افزار دارم (مثلا دلفی) به این پایگاه وصل میشم و ......
نهایتش هم در سیستم مقصد ، با نصب SQL Express بدون محیط Managment Studio همه کارها انجام میشه...

مشکلی که روش فوق داره اینه که اگه در سیستم مقصد کسی SQL Server Management رو نصب کنه و با Windows Authentication واردش بشه می تونه تمام ِ جداول، رکورد ها و حتی نوع فیلدها رو هم می تونه دستکاری کنه!

بعد از اینکه در این سایت و سایت های دیگه جستجو کردم تونستم یه سری کارها رو انجام بدم؛ مثلا یه Login و User ساختم و بعد از connect و ساختن دیتابیس، دسترسی دیتابیس رو با دستوراتی مثل Grant یا از طریق ویزارد خوده SQL Server Management تونستم به Login مورد نظرم بدم. همچنین از طریق ویزارد یا دستوراتی مثل Revoke برای دیتابیس محدودیت گذاشتم.
اما متاسفانه باز هم اگه کسی از طریق Windows Authentication وارد بشه میتونه به دیتابیس من دسترسی داشته باشه و Delete، Attach کنه یا جداول رو بهم بریزه!

مطمئنا یه جای کار رو انجام ندادم یا اشتباه انجام دادم، لطفا راهنمائی کنید؛ چطوری میشه این مشکل رو حل کرد؟

خلاصه سوال :
زمانی که در اکسس برای دیتابیستون Password تعیین میکنید، زمان ورود در محیط MS Access از شما Pass رو میپرسه! و بدیهی ِ که کسی که pass رو نداشته باشه نمی تونه جداول رو دستکاری کنه!
چطوری در SQL میشه چنین کاری کرد؟

ASKaffash
چهارشنبه 20 آبان 1388, 08:12 صبح
سلام
1- در Express کاربر BUILTIN\Administrators را حذف کنید
2- به نظر من Express عموما برای نسخه Desktop است و برای امنیت باید از نسخه های اصلی استفاده کرده نه Express

مهدی کرامتی
چهارشنبه 20 آبان 1388, 12:22 عصر
اینطور امنیت تامین کردن برای دیتابیس، یعنی عدم اطمینان از اینکه یک نفر ممکنه ساختار دیتابیس شما رو دستکاری کنه، کار صحیحی نیست.
چون کاربری که با دسترسی Admin به دیتابیس سرور وارد بشه میتونه دسترسی به دیتابیس شما هم پیدا کنه.
میمونه مسئله خرابکاری که انجام بده و به نام شما انجام بشه، که این مورد هم از طریق بررسی لاگها قابل اثبات است.

Pr0grammer
چهارشنبه 20 آبان 1388, 13:59 عصر
1- در Express کاربر BUILTIN\Administrators را حذف کنید

این روش ظاهرا جواب میده! چون بعد از ورود با Windows Authentication دسترسی به دیتابیس ها از بین میره! اما اگه یوزر sa رو فعال و باهاش وارد بشید، دسترسی ها وجود داره!



2- به نظر من Express عموما برای نسخه Desktop است و برای امنیت باید از نسخه های اصلی استفاده کرده نه Express

در نسخه اصلی این مشکل رو میشه حل کرد؟

Pr0grammer
چهارشنبه 20 آبان 1388, 14:23 عصر
مشکل حل شد!
با توجه به راهنمائی ASKaffash (http://www.barnamenevis.org/forum/member.php?u=63973) عزیز، کاربر BUILTIN\Administrators رو حذف و با login خودم وارد شدم؛ بعد یوزر sa رو غیرفعال کردم (در Properties قسمت Status گزینه Login رو Disable کنید) ...
از اونجا که BUILTIN\Administrators حذف شده، اگه کسی با Windows Authentication وارد بشه، دسترسی لازم رو نداره تا sa رو فعال کنه!

موفق باشید

DataMaster
چهارشنبه 20 آبان 1388, 21:43 عصر
راستش من برنامه هام رو به صورت شناسایی sql and windown مینویسم و برای کاربر sa رمز میذارم و همچنین یک کاربر جداگانه واسه نرم افزار ایجاد میکنم
اما به هر حال اگه کسی از دبتابیس SQL آشنایی داشته باشه میتونه فابلهای دیتابیس رو برداره و تغییرات بده
من با کاربر نرم افزار با دستکاری داده ها مشکلی ندارم چون داده های خودشه
فقط داده های سیستمی می مونه که معمولا کد گذاری و در دیتابیس ثبت میکنم

Pr0grammer
یک شنبه 24 آبان 1388, 13:39 عصر
دوستان من در همین رابطه یک مقاله آموزشی، تهیه کردم (البته با دلفی) که می تونید از کدهای SQL که بکار بردم استفاده کنید....

لینک : http://barnamenevis.org/forum/showthread.php?t=189664

موفق باشید/