PDA

View Full Version : راهکار صحیح برای اطمینان از امنیت بانک اطلاعاتی



بهرام 1368
پنج شنبه 09 آبان 1392, 18:36 عصر
با عرض سلام و آرزوی داشتن لحظاتی خوش ...

بنده اکثر مباحث در مورد امنیت بانک اطلاعاتی SQL Server که در این انجمن مطرح شده است را مطالعه کردم؛ اما متأسفانه همچنان ابهاماتی در ذهنم وجود دارد. ممنون میشوم اگر پاسخ دهید.

هدف کلی: قرار است نرم افزاری تحت شبکه طراحی و تولید شود به طوری که هنگام تحویل به مشتری مطمئن باشیم کسی نمی تواند به ساختار، جداول و محتوای بانک اطلاعاتی ضمیمه شده به برنامه دسترسی پیدا کند.
آن گونه که در انجمن ها بحث شده، دسترسی به محتوای بانک اطلاعاتی می تواند از همان کامپیوتر باشد (به عنوان مثال کاربر مدیر با نصب SQL Server Management بانک اطلاعاتی را باز کند) یا اینکه دیتابیس را سرقت نماید و از روی یک کامپیوتر دیگر این دسترسی غیرمجاز را انجام دهد.

با تلاش هایی که بنده انجام دادم، ظاهراً ایجاد این امنیت به سادگی مطرح کردن آن نیست. یعنی مانند Access نمی توانیم رمز عبور برای بانک اطلاعاتی قرار دهیم (صرف نظر از اینکه Access را به عنوان بانک اطلاعاتی قبول داشته باشیم یا خیر). احتمالاً تا اینجا با نظر من موافق هستید؛ اگر تناقضی وجود دارد مطرح بفرمایید.

من در مورد Schema، Role و User در SQL Server مطالعاتی داشتم اما متأسفانه نتوانستم با آنها امنیت مورد نظر را تأمین کنم. همچنان با این مشکل مواجه هستم که هر کاربر حاضر در گروه مدیران ویندوز و یا SA می تواند به محتویات بانک اطلاعاتی من دسترسی داشته باشد.

سؤال اول: آیا با غیرفعال کردن SA این امنیت تأمین می گردد؟

سؤال دوم: آیا با ایجاد یک Named Instance اختصاصی این امنیت تأمین می گردد؟

سؤال سوم: آیا رمزگذاری اطلاعات (مثل روش TDE) کمکی به این موضوع میکند؟ بهتر نیست که تلاش کاربر برای دسترسی غیرمجاز با یک رمز عبور قوی متوقف شود تا اینکه با اطلاعات رمزگذاری شده مواجه شود؟ گاهی اوقات امنیت ساختار بانک اطلاعاتی که برای آن زحمات زیادی کشیده شده از اطلاعات ذخیره شده در آن مهمتر است؛ بنابراین راه حل امنیتی جامعی باید وجود داشته باشد تا همه جوانب آن سنجیده شود.

سؤال چهارم: آیا به طور کلی امنیتی که در ذهن من وجود دارد، در SQL Server 2012 قابل پیاده سازی است یا اینکه موضوع پیچیده تر از آن است که من تصور میکنم؟

با تشکر

حمیدرضاصادقیان
شنبه 11 آبان 1392, 22:04 عصر
سلام.
شما با استفاده از TDE میتونید امنیت رو در سطح کل دیتابیس برقرار کنید به این شکل که حتی اگر فایلها جابجا شوند یا Backup داشته باشند باید Master Key و Certificate و کلیدی که Certificate شما با اون رمزنگاری شده رو داشته باشند تا بتونند از دیتابیس استفاده کنند در غیر اینصورت استفاده از اون غیر ممکنه.
برای اطلاعات تکمیلی پیشنهاد میکنم این کتاب (http://www.amazon.com/Expert-SQL-Server-2008-Encryption/dp/1430224649/ref=sr_1_1?ie=UTF8&qid=1383419727&sr=8-1&keywords=sql+server+encryption) رو مطالعه کنید.

ALM123456
پنج شنبه 28 آذر 1392, 21:06 عصر
با سلام خدمت همه دوستان


امنيت در ديتابيس SQL شامل چندين حوزه كاري است

حوزه امنيت شبكه
حوزه امنيت در سيستم عامل
حوزه امنيت در سرويس SQL
حوزه امنيت در سطح سرور
حوزه امنيت در سطح ديتابيس
حوزه امنيت در ستون داده


در هر حوزه يكسري اقدامات با توجه به رعايت اصول امنيت داده ها ( يكپارچگي ، صحت ، محرمانگي و ... ) و همچنين موارد گزارش شده به عنوان آسيب پذيري سرويس SQL بايد انجام شود


TDE يكي از اين اقدامات و در سطح سرويس SQL است. اقدامات مشابه آن و در سطوح مختلف وجود دارد كه در اينجا مجال آن نيست.

madmajid
جمعه 16 اسفند 1392, 10:25 صبح
با تشکر فراوان از موضوع بسیار بسیار کاربردی آقای بهرام 1368 (http://barnamenevis.org/member.php?69803-%D8%A8%D9%87%D8%B1%D8%A7%D9%85-1368) و عرض تاسف از اینکه هیچکس نه منظور ایشون رو فهمید و نه اطلاعات درستی داد !
منهم دقیقا مشکل ایشون رو دارم ولی با حجم زیاد مطالب امینتی sql server مواجه هستم و هنوز نفهمیدم چطوری باید جلوی دیده شدن بانک اطلاعاتیمو توسط
windows authentication در management studio بگیرم ! حالا sa پیشکش .

madmajid
جمعه 16 اسفند 1392, 11:35 صبح
این روش هم بد نیست ! شما فقط یک لاگین خواهید داشت با username و password خودتون .
windows authentication هم حذف هستش و در نتیجه کسی بدون پسورد نمیتونه بیاد داخل management studio
مراجعه کنید به :
http://barnamenevis.org/showthread.php?426869-%D8%A7%D8%B2-%D8%A8%DB%8C%D9%86-%D8%A8%D8%B1%D8%AF%D9%86-windows-athentication-%D8%AF%D8%B1-SQL-Server-2008

jojoyejojo
دوشنبه 26 اسفند 1392, 12:14 عصر
با عرض سلام و آرزوی داشتن لحظاتی خوش ...

بنده اکثر مباحث در مورد امنیت بانک اطلاعاتی SQL Server که در این انجمن مطرح شده است را مطالعه کردم؛ اما متأسفانه همچنان ابهاماتی در ذهنم وجود دارد. ممنون میشوم اگر پاسخ دهید.

هدف کلی: قرار است نرم افزاری تحت شبکه طراحی و تولید شود به طوری که هنگام تحویل به مشتری مطمئن باشیم کسی نمی تواند به ساختار، جداول و محتوای بانک اطلاعاتی ضمیمه شده به برنامه دسترسی پیدا کند.
آن گونه که در انجمن ها بحث شده، دسترسی به محتوای بانک اطلاعاتی می تواند از همان کامپیوتر باشد (به عنوان مثال کاربر مدیر با نصب SQL Server Management بانک اطلاعاتی را باز کند) یا اینکه دیتابیس را سرقت نماید و از روی یک کامپیوتر دیگر این دسترسی غیرمجاز را انجام دهد.

با تلاش هایی که بنده انجام دادم، ظاهراً ایجاد این امنیت به سادگی مطرح کردن آن نیست. یعنی مانند Access نمی توانیم رمز عبور برای بانک اطلاعاتی قرار دهیم (صرف نظر از اینکه Access را به عنوان بانک اطلاعاتی قبول داشته باشیم یا خیر). احتمالاً تا اینجا با نظر من موافق هستید؛ اگر تناقضی وجود دارد مطرح بفرمایید.

من در مورد Schema، Role و User در SQL Server مطالعاتی داشتم اما متأسفانه نتوانستم با آنها امنیت مورد نظر را تأمین کنم. همچنان با این مشکل مواجه هستم که هر کاربر حاضر در گروه مدیران ویندوز و یا SA می تواند به محتویات بانک اطلاعاتی من دسترسی داشته باشد.

سؤال اول: آیا با غیرفعال کردن SA این امنیت تأمین می گردد؟

سؤال دوم: آیا با ایجاد یک Named Instance اختصاصی این امنیت تأمین می گردد؟

سؤال سوم: آیا رمزگذاری اطلاعات (مثل روش TDE) کمکی به این موضوع میکند؟ بهتر نیست که تلاش کاربر برای دسترسی غیرمجاز با یک رمز عبور قوی متوقف شود تا اینکه با اطلاعات رمزگذاری شده مواجه شود؟ گاهی اوقات امنیت ساختار بانک اطلاعاتی که برای آن زحمات زیادی کشیده شده از اطلاعات ذخیره شده در آن مهمتر است؛ بنابراین راه حل امنیتی جامعی باید وجود داشته باشد تا همه جوانب آن سنجیده شود.

سؤال چهارم: آیا به طور کلی امنیتی که در ذهن من وجود دارد، در SQL Server 2012 قابل پیاده سازی است یا اینکه موضوع پیچیده تر از آن است که من تصور میکنم؟

با تشکر


سلام.روزتون بخیر.
من هم این مشکل شما رو دارم می خواستم ببینم شما راه حلی براش پیدا کردین
اینجا که من چیزی پیدا نکردم
ممنون میشم زود جواب بدین

alishanbedi
سه شنبه 27 اسفند 1392, 19:57 عصر
میتونید در مورد SQL Server Encryption منابع ازاد معرفی کنید

esteghamat
دوشنبه 01 اردیبهشت 1393, 13:16 عصر
سلام
ببينيد همانطور كه آقاي صادقيان گفتند تقريبا هيچ راهي به جز كد كردن اطلاعات (Encryption) نداريد. حتي راهي كه آقاي madmajid (http://barnamenevis.org/member.php?u=31944) گفتند هم مردود است.
فرض مي كنيم شما روي سرور يا دستگاه خودتان همه يوزرها (ويندوزي يا غيره) را حذف كنيد و فقط يكي با نام كاربري و رمز خاص بگذاريد.
باز اگر كسي Man. studio نصب كند، و آن شخص بتواند از اين بانك شما Backup تهيه كند (به هر نحو ، با همان نام كاربريو رمز شما و يا با كپي فايل هاي بانك اطلاعاتي در زمانيكه سرويس sql خاموش است) مي تواند اين Backup يا فايل ها را به دستگاه ديگري منتقل كند و Restore كند و خودش هر نام كاربري كه دلش بخواهد روي آن بگذارد و داده هاي شما را بخواند.
پس اگر شما امنيت Backup و يا فايل‌هاي بانك اطلاعاتي خود را نتواند بصورت ويندوزي و يا Sqlي برقرار كنيد، هيچ راهي به جز كد شدن اطلاعات از خوانده شدن آنها در سرور ديگر نمي تواند جلوگيري كند.
موفق باشيد