PDA

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



AfraAfra
جمعه 26 خرداد 1391, 17:58 عصر
سلام
غیر از کد کردن اطلاعات در دیتابیس چه راه کار مطمئن دیگه ای می شه برای ایجاد امنیت دیتابیس و جلوگیری از دسترسی به داده ها در نظر گرفت. تا جایی که من متوجه شدم در بانکهای اطلاعاتی SQL اگر فایلهای دیتابیس رو روی یک اینستنس دیگه که بهش دسترسی داریم اتچ کنیم داده های اون در دسترس قرار می گیرن مگر اینکه داده ها رو کد کنیم اما اگر حجم اطلاعات زیاد باشه کد و دیکد کردن داده ها در زمان اجرای برنامه خیلی زمان بر میشه (به نظر من با این شرایطی که SQL داره امنیت Access 2007 باید خیلی بیشتر از SQL باشد چون حداقل فایل Access 2007 رو می شه protect کرد و براش پسورد در نظر گرفت).
برای این موضوع چه راهکاری رو پیشنهاد می کنید.
با تشکر

sepehr.net
جمعه 26 خرداد 1391, 22:47 عصر
بهترین روش ایجاد کاربر درون SQL هست و دادن سطح دستری و رمز عبور به آن

AfraAfra
جمعه 26 خرداد 1391, 23:22 عصر
خوب اگر فایلهای دیتابیس رو جای دیگه اتچ کنیم اون کاربر ایجاد شده با رمز عبور به چه کاری میاد؟

sepehr.net
یک شنبه 28 خرداد 1391, 21:31 عصر
خوب قبل از Attach کردن باید اون User ها درون Sql Server معرفی شوند . چون فقط اون کاربر با اون رمز عبور میتونه به اطلاعات دسترسی داشته باشه

AfraAfra
یک شنبه 28 خرداد 1391, 21:45 عصر
می بخشید، شما یوزر و پسورد رو در دیتابیس تعریف می کنید یا در سرور؟ خوب مسلماً در سرور و این یعنی خود دیتابیس پسوردی نداره که اون رو محدود کنه و وقتی دیتابیس رو جای دیگه اتچ کنید با sa می تونید اطلاعات اون دستابیس رو داشته باشید. به هر حال برای اینکه منظور شما رو بهتر درک کنم ممکنه یک دیتابیس نمونه در حد یک رکورد اطلاعات رو با روش خودتون ایجاد کنید و آپلود کنید ببینیم آیا می شه بدون داشتن یوزر و پسورد شما به اطلاعات دیتابیس شما دسترسی پیدا کرد.
با تشکر

sepehr.net
چهارشنبه 31 خرداد 1391, 22:24 عصر
منظور من ساختن کاربر درون اس کیو ال هست ، اگر منظور شما اینه که ممکنه رمز عبور Sa رو بقیه هم داشته باشن ، اون موقع باید یه اینستنس جدید بسازید خاص خودتون با رمز عبور خاص خودتون

AfraAfra
چهارشنبه 31 خرداد 1391, 22:34 عصر
برادر عزیز یا شما منظور من رو درست متوجه نمی شی یا من نمی تونم منظورم رو درست به شما برسونم.

شما فرض کن یک برنامه ای رو در بازار روی سی دی فروختیم که دیتابیسش اس کیو اله. چی کار کنیم که هر کسی نتونه به دیتای برنامه دسترسی داشته باشه مثل کاری که در اکسس می شه کرد (برای دیتابیس در اکسس پسورد تعیین می کنیم). حالا شما اگه یک پسورد هزار رقمی و بسیار بسیار پیچیده هم در اس کیو ال برای sa تعیین کنی کافیه فایلهای دیتابیس شما رو از روی سی دی برنامه برداریم ببریم در همون اس کیو ال ولی روی یک اینستنس دیگه اتچ کنیم دیگه اون پسورد هزار رقمی و بسیار بسیار پیچیده شما هیچ محدودیتی برای دسترسی به دیتا ایجاد نمی کنه چون دیتابیس شما پسورد نداره و فقط برای یک اینستنس مشخص پسورد تعیین کردید.
امیدوارم الان متوجه منظور من شده باشید.

r0ot$harp
پنج شنبه 01 تیر 1391, 08:04 صبح
دوست عزیز قبل از هر کاری بهت پیشنهاد می دم متن زیر رو تو گوگل جستجو کنی:
Access Database Password Recovery
در عرض 1 ثانیه پسورد اکسس در میاد. بهمین راهتی. در مورد SQL هم در عرض 2 ثانیه پسورد در میاد. بهترین راه کد کردن هر فیلد هست. فکر هر راهی رو از سر بیرون کن.

در آوردن ساختار جدول هات که کار 1 دقیقه هست. دیگه به بقیش خودت فکر کن.

باتشکر احسان

AfraAfra
پنج شنبه 01 تیر 1391, 10:35 صبح
ممنون از شما
تا جایی که شنیدم اکسس 2007 به بعد درآوردن پسوردش کار خیلی خیلی مشکلیه. اگه اینطور باشه خوب نسبت به اس کیو ال امنیتش خیلی خیلی بیشتره چون حداقل یوز باید بره دنبال درآوردن پسورد دیتابیس نه مثل اس کیو ال همه چیز حاضر و آماده در خدمتش باشه.
راستی یک سؤال اساسی برام پیش اومده در مورد اینکه اگه بخوایم داده ها رو در دیتابیس کد کنیم وقتی برنامه اجرا می شه ستونهایی برای دیکد کردن داده ها ایجاد می شه و اطلاعات در اون ستونها دیکد می شه خوب اگه یوزر وسط کار برنامه را end process کنه و ستونهای دیکد شده در دیتابیس باقی بمونن آیا کد کردن داده ها رو دور نزده؟
ضمناً اگر برنامه ای که خودتون در مورد پیدا کردن پسورد اکسس 2007 امتحان کردید و جواب داده معرفی بفرمایید تا سطح امنیت اکسس رو هم متوجه شم.
با تشکر از راهنمایی شما

حمیدرضاصادقیان
یک شنبه 04 تیر 1391, 15:56 عصر
سلام.


وقتی برنامه اجرا می شه ستونهایی برای دیکد کردن داده ها ایجاد می شه
کجا این موضوع رو نوشته؟
شما داده ها رو براساس یک کلید Encrypt میکنید و هنگام باز کردن نیز براساس همون کلید داده ها رو Decrypt کرده به کاربر نمایش میدین.
در واقع مثل این میمونه که سورس یک نرم افزار رو بدون Document به شما بدن.عملا کار خاصی نمیتونی باهاش انجام بدی.
امنیت صرفا به همین یک موضوع که شما اشاره کردید برنمیگرده.
اگر دیتابیس شما هیچ ساختار یا Document نداشته باشه به راحتی نمیشه ازش سردراورد.
معمولا داده های حساس رو نیز Encrypt میکنند که با مشکلی که شما مطرح کردید مسئله خاصی پیش نیاد.
داده های عادی رو هم به صورت Plain text درون دیتابیس قرار میدهند زیرا مشکلی ایجاد نخواهد کرد.
یکی دیگه از راهها استفاده از سرویسها و User های ویندوز هست که موقع نصب برنامه برای خود سرویس SQL Server یک User با Password خاص تعریف کنید و فقط باهمون سرویس اجرا بشه و به مابقی User ها دسترسی ندید.مگر اینکه دیگه شخص مورد نظر دسترسی Admin به اون سیستم داشته باشه. در غیر اینصورت نمیتونه فایل رو برداره.باز یک راهکار میمونه اونم استفاده از CD های Bootable هست که این مشکل رو هم حل میکنه و تنها یک راه حل باقی است اونم Encrypt کردن داده ها.!
برای جزئیات بیشتر پیشنهاد میکنم در مورد TDE (http://msdn.microsoft.com/en-us/library/bb934049%28v=SQL.100%29.aspx) مطالعه ای داشته باشید.

AfraAfra
یک شنبه 04 تیر 1391, 16:45 عصر
سلام و تشکر



کجا این موضوع رو نوشته؟
شما داده ها رو براساس یک کلید Encrypt میکنید و هنگام باز کردن نیز براساس همون کلید داده ها رو Decrypt کرده به کاربر نمایش میدین.

جایی این مطلب رو نخوندم، تصورم اینه که وقتی یک ستون با 10.000 رکورد کد می شه برای اینکه کاربر بتونه (در نرم افزار) کوئری بگیره و جستجو انجام بده و گزارشگیری کنه اون ستون باید یک جایی دیکد بشه و احتمالاً ستونی موقت برای دیکد شدن اون ستون ایجاد می شه حالا اگه فرایند طور دیگه ایه لطفاً بیشتر راهنمایی کنید.



امنیت صرفا به همین یک موضوع که شما اشاره کردید برنمیگرده.
بله امنیت صرفاً همین یک موضوع نیست اما وقتی همین یک ناامنی باعث می شه بقیه امنیتهای پیش بینی شده بی فایده بشن پس مسئله کم اهمیتی در این نوع برنامه ها نیست. شما هزارتا امنیت هم توی نرم افزار پیش بینی کنی ولی دیتای دیتابیس شما روی هوا باشه و به راحتی بتونی بهش دسترسی داشته باشی اون هزار امنیت هیچ فایده ای نداره مگر اینکه مثل نرم افزارهای حسابداری دسترسی به اطلاعات (بدون نرم افزار) مسئله امنیتی تلقی نشه (لااقل برای کسی که دسترسی به سرور و ادمین داره)



اگر دیتابیس شما هیچ ساختار یا Document نداشته باشه به راحتی نمیشه ازش سردراورد.
معمولا داده های حساس رو نیز Encrypt میکنند که با مشکلی که شما مطرح کردید مسئله خاصی پیش نیاد.
داده های عادی رو هم به صورت Plain text درون دیتابیس قرار میدهند زیرا مشکلی ایجاد نخواهد کرد.

بله بنده هم در اولین ارسالم عرض کردم که کد کردن داده ها راه حلی خوبیه اما:

غیر از کد کردن اطلاعات در دیتابیس چه راه کار مطمئن دیگه ای می شه برای ایجاد امنیت دیتابیس و جلوگیری از دسترسی به داده ها در نظر گرفت. اگر حجم اطلاعات زیاد باشه کد و دیکد کردن داده ها در زمان اجرای برنامه خیلی زمان بر میشه
حالا اگه یه دیتابیس خیلی سنگین رو بدی دست مشتری و بگی برای اجرای گزارشات و جستحوها باید کلی صبر کرد تا اطلاعات دیکد بشن یا اینکه موقع اجرای برنامه کلی صبر کن که اطلاعات اول دیکد بشن به نظر شما می تونه قابل توجیه باشه؟



یکی دیگه از راهها استفاده از سرویسها و User های ویندوز هست که موقع نصب برنامه برای خود سرویس SQL Server یک User با Password خاص تعریف کنید و فقط باهمون سرویس اجرا بشه و به مابقی User ها دسترسی ندید.مگر اینکه دیگه شخص مورد نظر دسترسی Admin به اون سیستم داشته باشه. در غیر اینصورت نمیتونه فایل رو برداره.
این راه کاری که فرمودید رو قبلاً بهش توی همین تاپیک پرداختیم. هر بلایی که سر سرویس اس کیو ال و یوزرنیم پسوردهاش بیارید و هر چقدر امنیتیش کنید چون دیتابیس روی سی دی قرار داره کافیه مشتری اون دیتابیس رو برداره و جای دیگه که اون محدودیت های شما رو نداره اتچ کنه........



باز یک راهکار میمونه اونم استفاده از CD های Bootable هست که این مشکل رو هم حل میکنه

ممکنه در مورد این راهکار و نوع کارکردش بیشتر توضیح بدید. خیلی خیلی ممنونم



تنها یک راه حل باقی است اونم Encrypt کردن داده ها.!

در مورد این راهکار هم که قبلاً ابهامم رو عرض کردم دوباره هم مطرح می کنم که وقتی دیتای موجود در دیتابیس خیلی زیاد باشه و اطلاعات سنگین باشه آیا فرایند اجرای عملیات خیلی کند نمی شه؟
با تشکر

حمیدرضاصادقیان
دوشنبه 05 تیر 1391, 07:58 صبح
باز یک راهکار میمونه اونم استفاده از CD های Bootable هست که این مشکل رو هم حل میکنه
منظورم از این موضوع این بود که اگر حتی برای SQL Server نیز یک Accountتعریف کنیم کاربر یک کمی که وارد باشه میتونه بایک CD Bootable با یک سیستم عامل جدید بیاد و بدون هیچ محدودیتی فایلها رو برداره.

اطلاعاتی که Decode می شوند در واقع در Cache خود SQL Server این عمل رخ میده و اگر اتصالی قطع بشه عملا کاربر کاری نمیتونه بکنه.
کلا برای داشتن هرچیزی باید بهایی بپردازیم.
الان برای داشتن امنیت بالا همین مورد پیشنهاد میشه .البته فکر کنم یک مطالعه ای روی TDE داشته باشید بد نباشه.لینکش رو در پست قبل قرار دادم.

AfraAfra
دوشنبه 05 تیر 1391, 11:58 صبح
سلام و تشکر
من اون رو لینک رو خوندم و فقط مبانی کد کردن اطلاعات رو گفته بود. من بیشتر قصد دارم در مورد کیفیت اجرای اون اطلاع پیدا کنم. می خوام بدونم که مثلاً کدینگ و دیگدینگ اطلاعات در مورد یک پایگاه داده سنگین چه قدر روی افت سرعت تأثیر می ذاره. اگه دوستان نمونه پروژه ای دارن که بشه یک دیتابیس رو بهش متصل کرد و این موضوع رو تست کرد ممنون می شم در اختیار قرار بدن.
با تشکر

desatir7316
جمعه 09 تیر 1391, 18:43 عصر
دوست عزیز ممنون به خاطر تاپیکی ایجاد شده
میشه لطفا در موردtde یه لینک فارسی بذارید
راستی من یه تاپیک مرتبط ایجاد کردم
ممنون میشم بهش جواب بدید:
روش های رمزنگاری اطلاعات (http://barnamenevis.org/showthread.php?348520-%D8%B3%D9%88%D8%A7%D9%84-%DA%A9%D8%AF%D8%A7%D9%85-%DB%8C%DA%A9-%D8%A7%D8%B2-%D8%B1%D9%88%D8%B4-%D9%87%D8%A7%DB%8C-%D8%B1%D9%85%D8%B2-%D9%86%DA%AF%D8%A7%D8%B1%DB%8C-%D8%A8%D9%87%D8%AA%D8%B1-%D8%A7%D8%B3%D8%AA%D8%9F)