PDA

View Full Version : امنیت SQL



choobin84
شنبه 16 تیر 1386, 08:05 صبح
وقتی در نرم افزار از بانک اطلاعاتی اکسس استفاده می کنم و بعد سراغ بانک اکسس می رم، وقتی میخام اونو باز کنم باید رمز عبور رو وارد کنم.
اما،
در SQL‌ این امکان وجود نداره، یعنی هر کسی که EnterpriseManager رو باز کنه به راحتی می تونه به بانک ها دسترسی داشته باشه.
حتی اگر نتونه با Admin وارد سیستم بشه خیلی راحت میتونه فایل های بانک رو روی سی دی یا فلش کپی کنه ببره یه جای دیگه و اونو Attach کنه و ببینه محتویاتش چی چیه.
آیا راهی وجود داره که در هنگام ورود به دیتابیس رمز عبور از کاربر گرفته بشه بعد جداول و فیلدها و رکورد ها به ون نمایانده بشه.
به نظر من اگر همچین کاری نباشه ، SQlServer یعنی کشک!::

Kamyar.Kimiyabeigi
شنبه 16 تیر 1386, 08:48 صبح
دوست عزیز اولا" در مورد نرم افزاری که شاید اطلاعات چندانی نداری صحیح نیست اینجوری صحبت کنی (SQlServer یعنی کشک).
دوما" مقایسه Access و SQL Server از لحاظ امنیتی کار درستی نیست چون هر کدوم کاربرد خودشونو دارن ولی جهت اطلاع عرض کنم که شما میتونی برای User های SQLServer کلمه عبور بزارین تا در هنگام وصل شدن به SQLServer ازشون کلمه عبور را بخواد در ثانی این درسته که با Stop کردن سرویسهای SQL Server میشه فایلهای مربوط به DB را برداشت و در جای دیگه Attach کرد اما SQL Server مثل Access نیست که بر روی هر کامپیوتری نصب کنن معمولا بر روی کامپیوتر سرور نصب میشه که این کامپیوتر هم سطح دسترسی مخصوص به خودشو داره و فکر نمیکنم در هیچ شرکت اداره و یا ارگانی هر کسی بیاد پای سرور بشینه و بخواد سرویس SQLServer را Stop کنه.

choobin84
شنبه 16 تیر 1386, 16:59 عصر
یعنی می گویید بر روی کامپیوتر های تک کاربره که SQl روی آن local هست این اتفاق نمی افته . در این حالت اگر یه ویندوز دیگه رو کامپوتر نصب شده باشه ، کپی فایل ها خیلی راحته.
در مورد User هم بگم فقط در مورد نرم افزار هایی که می نویسیم کاربرد داره ، خودمون خیلی راحت بدون داشتن User و Password از طریق EnterPrise Manager‌ به جداول دسترسی پیدا می کنیم.
هر چند ممکنه بگید در مورد تک کاربره ، شما بهتره از اکسس استفاده کنید، اما متاسفانه باید بگم ، اکسس بدرد کار من نمی خوره. اس کو ال خیلی مناسبه ، اما یک همچین نقطه ضعف بزرگی داره.
شاید هم نداشته باشه. اما من بلد نیستم

Kamyar.Kimiyabeigi
یک شنبه 17 تیر 1386, 07:41 صبح
دوست عزیز چون شما SQL Server را با اکسس مقایسه کردین من نیز جوابهام در خصوص اکسس است. در کامپیوتری که اکسس نصب هست براحتی حتی بدون نیاز به نصب ویندوز دیگری میشه فایل مربوط به DB اکسس را پاک کرد.
یکی از موارد امنیتی در SQL Server دادن سطح دسترسیهای مختلف به کاربران هست که این سطح دسترسیها میتونه تا حد فیلد ریز بشه یعنی بعنوان مثال کاربر X فقط بتونه فیلد FName را از جدول پرسنلی ببینه و کاربر Y فقط بتونه فیلد LName را از جدول پرسنلی ببینه.
همین طور شما میتونین View ها و Stored procedure ها و Function ها تونو بصورت کد شده در دیتابیس قرار بدین در این حالت حتی اون کاربری که اجازه Login کردن به دیتابیس را داره هم نمیتونه Script مربوط به اونها رو ببینه.
در خصوص اینکه میفرمایید Enterprise Manager کلمه عبور نمیپرسه باید خدمتتون عرض کنم که اگر شما بر روی SQL Server Group مورد نظرتون کلیک راست کنید و گزینه Edit SQL Server Registration Properties را انتخاب کنید در فرم باز شده اگر Checkbox مربوط به Always prompt for login name and password را تیک بزنید من بعد اگر خواستین از Enterprise Manager استفاده کنید ازتون Username & Password میخواد.

choobin84
یک شنبه 17 تیر 1386, 14:27 عصر
در خصوص اینکه میفرمایید Enterprise Manager کلمه عبور نمیپرسه باید خدمتتون عرض کنم که اگر شما بر روی SQL Server Group مورد نظرتون کلیک راست کنید و گزینه Edit SQL Server Registration Properties را انتخاب کنید در فرم باز شده اگر Checkbox مربوط به Always prompt for login name and password را تیک بزنید من بعد اگر خواستین از Enterprise Manager استفاده کنید ازتون Username & Password میخواد.

فکر می کنم دنبال همین بودم. ممنون

AminSobati
یک شنبه 17 تیر 1386, 23:17 عصر
علت اینکه هر کاربر براحتی در SQL Server نصب شده بصورت Local، میتونه وارد بشه اینه:
در زمان نصب SQL Server، بصورت اتوماتیک Builtin Administrators به فهرست Loginهای تعریف شده در SQL Server اضافه میشن. از طرفی شما با کامپیوتر خودتون همیشه بصورت Admin لاگین میکنین، لذا بواسطه تعریف شده بودن Builtin Administrators در SQL Server، پس میتونین لاگین کنین. اگر لاگین Builtin Administrators رو حذف کنین، اونوقت میبینید که ورود به SQL Server میسر نیست! ولی فراموش نکنین حتما یک لاگین از نوع SQL Authentication داشته باشید (مثل sa) تا راه ورود خودتون رو نبندین!

asilverisis
چهارشنبه 27 تیر 1386, 17:12 عصر
سلام


علت اینکه هر کاربر براحتی در SQL Server نصب شده بصورت Local، میتونه وارد بشه اینه:
در زمان نصب SQL Server، بصورت اتوماتیک Builtin Administrators به فهرست Loginهای تعریف شده در SQL Server اضافه میشن. از طرفی شما با کامپیوتر خودتون همیشه بصورت Admin لاگین میکنین، لذا بواسطه تعریف شده بودن Builtin Administrators در SQL Server، پس میتونین لاگین کنین. اگر لاگین Builtin Administrators رو حذف کنین، اونوقت میبینید که ورود به SQL Server میسر نیست! ولی فراموش نکنین حتما یک لاگین از نوع SQL Authentication داشته باشید (مثل sa) تا راه ورود خودتون رو نبندین!
من قبل از اینکه Builtin Administrators رو پاک کنم ، برای sa یک password تعیین کردم
ولی الان که می خوام connect بشم این error رو میده :

AminSobati
جمعه 29 تیر 1386, 11:14 صبح
به خاطر اینکه SQL Authentication رو فعال نکردین:
http://www.barnamenevis.org/forum/showthread.php?t=12299

asilverisis
دوشنبه 01 مرداد 1386, 21:56 عصر
سلام
ممنون ولی وقتی properties میگیرم هم username,pass می خواد و بعد از وارد کردن اون مجددا همون error رو میده.
من قبلا این کار رو انجام دادم ولی فقط BuiltinAdministrator رو پاک نکرده بودم.
احتمالا مجبور بشم SQL رو Remove کنم.

gomnam
شنبه 06 مرداد 1386, 11:37 صبح
دوست عزیز چون شما SQL Server را با اکسس مقایسه کردین من نیز جوابهام در خصوص اکسس است. در کامپیوتری که اکسس نصب هست براحتی حتی بدون نیاز به نصب ویندوز دیگری میشه فایل مربوط به DB اکسس را پاک کرد.
یکی از موارد امنیتی در SQL Server دادن سطح دسترسیهای مختلف به کاربران هست که این سطح دسترسیها میتونه تا حد فیلد ریز بشه یعنی بعنوان مثال کاربر X فقط بتونه فیلد FName را از جدول پرسنلی ببینه و کاربر Y فقط بتونه فیلد LName را از جدول پرسنلی ببینه.
همین طور شما میتونین View ها و Stored procedure ها و Function ها تونو بصورت کد شده در دیتابیس قرار بدین در این حالت حتی اون کاربری که اجازه Login کردن به دیتابیس را داره هم نمیتونه Script مربوط به اونها رو ببینه.
در خصوص اینکه میفرمایید Enterprise Manager کلمه عبور نمیپرسه باید خدمتتون عرض کنم که اگر شما بر روی SQL Server Group مورد نظرتون کلیک راست کنید و گزینه Edit SQL Server Registration Properties را انتخاب کنید در فرم باز شده اگر Checkbox مربوط به Always prompt for login name and password را تیک بزنید من بعد اگر خواستین از Enterprise Manager استفاده کنید ازتون Username & Password میخواد.

این راه هم عملی نیست بدین دلیل که میشه راحت اون register مربوطه را مثلا local را delete کرد و بعد مجددا یه local دیگه regiter کرد
اون وقت میبینین که بدون هیچ پسوردی میتونین وارد بشین !!!!! امتحان کنید
اگه خواستین تا مراحل را به صورت عکس نشان بدم

AminSobati
شنبه 06 مرداد 1386, 16:38 عصر
این راه هم عملی نیست بدین دلیل که میشه راحت اون register مربوطه را مثلا local را delete کرد و بعد مجددا یه local دیگه regiter کرد
اون وقت میبینین که بدون هیچ پسوردی میتونین وارد بشین !!!!! امتحان کنید
اگه خواستین تا مراحل را به صورت عکس نشان بدم

اولین پست من در این تاپیک رو ببینین

Kamyar.Kimiyabeigi
شنبه 06 مرداد 1386, 19:47 عصر
این راه هم عملی نیست بدین دلیل که میشه راحت اون register مربوطه را مثلا local را delete کرد و بعد مجددا یه local دیگه regiter کرد
اون وقت میبینین که بدون هیچ پسوردی میتونین وارد بشین !!!!! امتحان کنید
اگه خواستین تا مراحل را به صورت عکس نشان بدم


دوست عزیز پست شماره 2 رو مجدد بخونین تا متوجه بشین SQL Server نرم افزاری نیست که هر کسی به راحتی اجازه داشته باشه پای سرور بشینه و بخواد Registry را پاک کنه در خصوص سیستمهای تک کاربره هم باید عرض کنم کسی که کلمه عبور رو داشته باشه و بتونه به local و یا هر SQL Group ایی متصل بشه قاعدتا" خیلی کارهای دیگه هم میتونه بکنه منجمله detach پس زیاد سخت نگیرین (اگر password رو بدونه)
مثله اینه که بگین کسی که کلمه عبور مربوط به administrator یک شبکه رو بدونه همه کار میتونه با user ها بکنه مثلا" اونها رو پاک کنه پس win server امنیت نداره :قهقهه:

SamIran
دوشنبه 23 شهریور 1388, 14:53 عصر
با سلام!
ببینید اینجا یه مشکل هست! خوب ما همگی می دونیم SQL Server یه Server هست، یعنی کسی نمی تونه پای ترمینالش بشینه! درست! اما این دوستان میخواهند از مزایای SQL Server استفاده کنند اما حاظر نیستند با Server خودشون مثل یک سرور رفتار کنند. این احتمال را می دهند که یه کسی هارد دیسک سرورشونو بدزده! خوب الان منم با همین مسئاله مواجه هستم! برای یه شرکت دارم می نویسم که همه دار و ندارش تو فایل SQL هست و شب ها در و می بندن و میرن لالا! خوب اگه یکی اومد هارد دیسک را دزدید باید برن سماق بمکن! همین الان داشتم به این فکر می کردم شاید بشه هر شب فایل را RAR کرد و pass گذاشت و صبح بازش کرد! نظرتون چیه؟:متفکر:

Kamyar.Kimiyabeigi
سه شنبه 24 شهریور 1388, 07:45 صبح
SamIran عزيز موردي رو كه شما بهش اشاره كردين مربوط به ايزوله بودن اتاق سرور هست و هيچ ارتباطي به امنيتSQL Server نداره

In_Chan_Nafar
سه شنبه 24 شهریور 1388, 08:32 صبح
دوست عزيز بالاخره ادمين ويندوز به راحتي ميتواند سرويس SQL را STop و فايل هاي MDF‌وLDF بانك را كف بره به خاطر اين است برخي از شركت ها در قرار دادشون حتي ادمين ويندوز سرور شركت را به خود اون طرف هم تحويل نميدن
اما را حل SQL 2008 براي اينكار استفاده از تكنيكي به نام TDE‌است شما به اين روش كل بانك را به صورت Internal توسط SQL به صورت رمزگذاري شده در مي آوريد تا حتي اگه فايلهاي MDF و LDF را هم ادمين كف رفت در صورت نداشتن Certificate نتواند از آن استفاده كند

SamIran
سه شنبه 24 شهریور 1388, 11:53 صبح
دوست عزيز بالاخره ادمين ويندوز به راحتي ميتواند سرويس SQL را STop و فايل هاي MDF‌وLDF بانك را كف بره به خاطر اين است برخي از شركت ها در قرار دادشون حتي ادمين ويندوز سرور شركت را به خود اون طرف هم تحويل نميدن
اما را حل SQL 2008 براي اينكار استفاده از تكنيكي به نام TDE‌است شما به اين روش كل بانك را به صورت Internal توسط SQL به صورت رمزگذاري شده در مي آوريد تا حتي اگه فايلهاي MDF و LDF را هم ادمين كف رفت در صورت نداشتن Certificate نتواند از آن استفاده كند

دوست عزیز!In_Chan_Nafar
خیلی خیلی ممنونم. اگه از نحوه فعال سازی این گزینه اطلاعاتی داشته باشید ممنون می شم! اگر هم نه همین که سر نخ دادین یه دنیا می ارزه! نوکرتم!:لبخند:

بهنام بهمنی
سه شنبه 24 شهریور 1388, 13:30 عصر
نحوه فعال سازي و استفاده از TDE در لينک ژطر موجو است:http://msdn.microsoft.com/en-us/library/cc278098.aspx

sia_2007
جمعه 27 شهریور 1388, 02:52 صبح
دوست من؛ اگر هنگام ساخت جدول خاصیت Encryption Enabled را برابر True قرار دهی و به آن یک کارت Verify Key دهی دیگر هیچ کس نمیتواند حتی با داشتن دیتابیس اطلاعات آن را بخواند؛ در واقع آشغال میبیند.
مگر کسانی که حق دسترسی به آن دیتابیس را داشته باشند