View Full Version : سوال:login ها و scheme ها و .. به چه در د امنیت می خورن؟
desatir7316
شنبه 17 تیر 1391, 17:42 عصر
سلام دوستان
یه دیتابیس دارم که همه رمزها رو به وسیله کلیدها رمزنگاری کردم
خود دیتابیس هم تنظیم کردم که اگر دزدیده شد روی هیچ سیستم دیگه ای باز نشه
حالا می گم این login ها و user ها و .. . که توی مبحث امنیت هستن به جه درد می خورن و استفادشون چیه؟
برا مو قع ای هستن که بانکمون دزدیده می شه یا همون مو قع که سایت رو سرور هست؟
راستی دوجور کاربر می شه تعریف کرد
یکی تو خود دیتابیس و اون یکی کلی توی Sql
اینا فرقشون چیه؟
برای امنیت حتما لازمه که اعمال بشن؟
به این مبحث احتیاح دارم و هر جا می رم فقط sysntax رو توضیح داده
می خوام رو پروژم اعمال کنم
ممنون می شم راهنمایی کنید
ممنون
ASKaffash
یک شنبه 18 تیر 1391, 07:07 صبح
سلام
چند موضوع خلط مبحث شده :
- این تالار مربوط به T-SQL است و موضوع Admin بانک اطلاعاتی را پوشش نمی دهد
- موضوع sa,... و دسترسی عموما برای نرم افزارهای تحت شبکه اهمیت دارد و برای یک DB روی یک PC معمولی خیلی حائز اهمیت نیست
- موضوع رمزنگاری محتوای فیلدهای اطلاعاتی خاص به حساسیت داده ها مرتبط است و شاید برای برنامه های غیر شبکه ای بیشتر مهم باشد (برای جلوگیری از سرقت محتوا البته به غیر از رمز کاربر ورودی)
- کسی که بانک را سرقت فیزیکی کند به نوعی مالک داده ها است ولی برای DB روی شبکه موضوع خیلی مهم است بنابراین Login خیلی اهمیت دارد ولی کسی که پشت سرور نشسته باشد می تواند به نوعی مالک DB شود
- Connect شدن به SQLServer دونوع است :
SQLServer : در اینصورت با داشتن یک User و یک Pass متناسب با دسترسی به SQLServer متص ل می شوید
Windows : در اینصورت در صورتیکه کاربر شما معادلی در SQLServer قابل اتصال داشته باشد مجوز دسترسی شما فراهم است (از این روش بیشتر برای برنامه های Local استفاده میگردد)
desatir7316
دوشنبه 19 تیر 1391, 10:03 صبح
دوست عزیز ممنون که پاسخ دادی
- این تالار مربوط به T-SQL است و موضوع Admin بانک اطلاعاتی را پوشش نمی دهد
پس من مبحث رو کجا مطرح کنم که بتوتنم جواب بگیرم؟
میخوام در مورد login ها ، scheme ها و سایر مباحث امنیت رو روی بانکم اگه لازم باشه اعمال کنم
ممنون
[
ASKaffash
سه شنبه 20 تیر 1391, 12:53 عصر
سلام
توی همین تالار مطرح کنید. اگر دقت کرده باشید آقای صادقیان تاپیک را از تالار T-SQL به این تالار انتقال دادند
esteghamat
سه شنبه 20 تیر 1391, 16:15 عصر
سلام
الف - در مورد تعريف لاگين و يوزر
- اوني كه توي خود sql (به قول شما) و يا در security سرور تعريف مي شه، بهش مي گن لاگين. تا اينجا لاگين شما تونسته وارد سرور بشه و يا بطور مثال شما تونستين با يه كارت كارمندي وارد يه اداره بشينو و هويت شما به عنوان يك كارمند معتبر شناخته شده. اما كدوم واحد و با چه مسئوليتي هنوز نه .
- اوني كه روي خود ديتابيس هست ، بهش مي گن User . پايه تعريف يك User يك لاگينه. يعني مي گين كه لاگين X در بانك اطلاعاتي db1 به شكل user ي به اسم Ux1 و دسترسي زياد دارد و در بانك اطلاعاتي مثلا db2 با نام Ux2 دسترسي فقط خواندني دارد.
(حالا شما تويواحد خاصي مثلا مدير هستين. )
حال اين لاگين ويوزر در محيط شبكه و در اجراي شبكه اي يك برنامه كاربردي جوابگو خواهد بود. وگرنه شما روي دستگاه شخصي خودتان هميشه مي توانيد براي خودتان بالاترين لاگين و يوزر رو تعريف كنيد و به اطلاعات خودتان دسترسي داريد و اينجا مفهوم خاصي ندارند. اما در هر صورت يك user براي دسترسي به اطلاعات لازمه. حال مي تونه اين user پيش فرض sql server يعني همون sa باشه و شما اصلا از ايجاد شدن اون با خبر نشده باشين.
ب- در مورد داده ها
به نظر من رمز نگاري داده ها يك مبحث امنيتي كاملا جدا و با كاركرد جدا از يوزر و لاگينه. يوزر و لاگين دسترسي برنامه و App شما رو به بانك اطلاعاتي كنترل مي كنن. حال مي تونه توي اون بانك اطلاعاتي داده ها شفاف باشه مي تونه كد شده باشه. اگه شفاف باشه شما مستقيم اونا رو نمايش مي دين ، اگه كد شده باشه باز دو حالت داره . (خودتون كدكرده باشين، sql server كد كده باشه) در هر صورت كاربر متوجه اين مساله نخواهد شد.
اما اگر داده ها كد شده باشه و يه روزي فايل هاي بانك اطلاعاتي شما دزديده بشه، براي اجراي اين فايل ها در سرور ديگر كد sql server رو مي خواد كه بدون اون امكان ديدن اطلاعات وجود نداره.
همين
desatir7316
سه شنبه 20 تیر 1391, 16:45 عصر
ممنون استقامت عزیز
مورد الف رو که توضیح دادی به درد موقعی می خوره که بانک دزدیده شده باشه یا با هک به سرور وارد شده باشه؟
یا اگه من یوزر تعریف کنم باید توی تنظیمات برنامه کاربردی(مثلا سایتی که با asp درست می کنم) تنظیمات لازم رو انجام بدم یا این فقط مربوط به دیتا بیسه؟
ممنون می شم جواب بدی
esteghamat
چهارشنبه 21 تیر 1391, 13:48 عصر
سلام
ببين ، يه منبع داده داري، (توي اين مثال يك بانك اطلاعاتي sqlserver) ، قطعا براي دسترسي به داده هاي اين منبع يه حسابي كتابي بايد باشه. اين همون لاگين و يوزر ه.
پس مساله اين نيست كه بدرد مي خوره يا نه ، مساله اينه كه اگه نداشته باشي، اصلا نمي توني بهش وصل بشي، حال تو خونه تون باشه، سر كار باشه و يا ..
اما فرق چيه ؟
اينكه كه وقتي تو خونه نصبش مي كني ، در زمان نصب طوري نصب مي شه كه كاربر جاري (يا همون نصاب) رو به عنوان admin سيستم مي شناسه و بهش اعتبار مي ده. پس وقتي بار دوم و سوم خواستي بهش وصل بشي، فقط يه تاييد ازت مي خواد و بس و شما فكر مي كني كه هيچ security نداشت. نه حتي تو خونه هم در زمان وصل شدن نياز به اعتبار سنجي داري.
مثلا مي توني توي خونه ، يه user تعريف كني كه به بانك اطلاعاتي دسترسي فقط خوندني داشته باشه، بعد با اون user به سرور لاگين كن.مي بيني كه واقعا روي اون ديتابيس غيراز خوندن هيچ كاري نمي توني بكني. پس لاگين و يوزر هميشه مهم هستن.
خوب حالا هكر ها چيكار مي كنن ؟
خوب منطقيه ، به نحوي لاگين و يوزر و رمز عبور يه بانك اطلاعاتي رو بدست مي يارن و هيچي بعد دخلش رو مي يارن. پس بايد در زماننصب دقت كني كه سيستم چه لاگين هايي تعريف كرده و ...
خوب برنامه كاربردي چيكار مي كنه ؟
معلومه ، داخل كد برنامه يوزر و رمز عبور اون رو و نام سرور sql server رو مي دن. اصطلاحا در يك Connection string و بعد برنامه از طريق همين يوزر و رمز عبور به بانك اطلاعاتي وصل مي شه و دادهها رو مي خونه.
پس ببين در هر صورت اتصال به بانك چك امنيتي دارد.
خوب اگه فايل ها رو دزد زد چي ؟ ببين اگه بتونه فايل ها رو ببره و روي كامپيوتر خودش بالا بياره ، پس مي تونه به راحتي خودش رو از طريق SQL SERVER روي اون بانك اطلاعاتي ADMIN كنه و همه اطلاعاتش رو بخونه. خوب اصلا چرا مي تونه ببره ، براي اينكه اون امنيت لاگين و يوزر و پسورد ديگه در سطح فايل ها كه اعمال نمي شه. اونها در سطح داده هان . اونجاديگه بايد شما اونقدر همت كني كه كسي نتونه به راحتي بياد تو سرورت و هر چي دلش خواست ورداره ببره !!!!!
خوب حالا اگه داده هاي خودت رو كد كرده باشي (كه توصيه نمي كنم چون ممكنه خودتم بعد به دردسر بيفتي) يه رمز ديگه هم مي خواد كه آقا دزده نداره ...
خوش باشي
desatir7316
چهارشنبه 21 تیر 1391, 18:19 عصر
دمت گرم
پس اگه من لاگین و یوزر معرفی نکنم مشکلی از لحاظ کارکرد به وجود نمیاد
یعنی برنامه روی سرور بازم اجرا میشه؟
ممنونم که سوالامو جواب میدی استقامت عزیز
tadeh2010
چهارشنبه 21 تیر 1391, 22:01 عصر
سلام استقامت جان
من درمورد یوزر و لاگین ماهها هست که مشکل دارم و در تاپیکهای مختلفی هم مطرح کردم
با اینکه خیلی کمکها بهم شده ولی جوابی را که می خواستم هنوز نگرفتم
دیدم در این تاپیک خیلی خوب و با استقامت والایی جواب دوستمان را داده بودی
بنابراین من مشکلم را بیان می کنم تا اگر فرصت داشتید بهم کمکی بکنید که خیلی ممنون می شوم
حالا مشکلم:
من یک دیتا بیس دارم
ابتدا بنابر گفته های فوق شما یک لاگین ساختم
به روش زیر:
Databases>Security>Logins>Right click
و تنظیمات داخل عکس زیر را اجرا کردم
89558
سپس یک یوزر و پسورد تعریف کردم
به این طریق
Databases>MyDB>Security>Users>Right click
و با تنظیمات زیر
89559
حالا از داخل برنامه ام همانطوریکه شما در فوق فرموده اید به وسیله ی یک connection string به بانکم دسترسی دارم
در ضمن قبلا دسترسی به بانک را از طریق sa را قطع کرده ام یعنی کد های زیر را اجرا کرده ام
USE [master]
GO
ALTERLOGIN [sa] DISABLE
GO
تا به حال همه چیز خوب پیش رفته است
ولی می خواهم وقتی بانک را Deatach کردم و بردم به یک سیستم دیگر که Attach اش بکنم
فقط در صورتی attach بشود که یوزر و پسورد قبلی را بدهم
آیا این کار شدنی است؟
و اصلا درست می باشد؟
درواقع این کار برای امنیتی است که در فوق فرمودید که اگر دزد بانک را از روی سیستم ربود.
ممنون می شوم پاسخ بدهید.
esteghamat
چهارشنبه 28 تیر 1391, 14:12 عصر
سلام
ممنون از لطف تون
در مورد مساله اي كه مطرح شده ، اول اينكه در زمان تعريف لاگين سعي كن كه تيك ها Enforce , ... رو برداري كه بعدا برات مشكل ساز مي شه.
دوم اينكه ، ببين دوست عزيز دو نوع حفاظت از اطلاعات داريم.
الف - حفاظت از طريق كنترل دسترسي ها (يه جوري بگيم حفاظت نرم افزاري يا سيستمي)
ب- حفاظت فيزيكي
قسمت اول كه همون تعريف لاگين ها و يوزر هاست. اين قسمت الزام كار با DB ها هم هست . چرا كه بدون دسترسي امكان مشاهده اطلاعات و كار با اونها وجود نداره. كه خوب شما اين مرحله رو رفتين و ... .
نوع دوم حفاظت فيزيكي است. يعني حفاظت از فايل ها. اين موضوع به هيچ طريقي با ابزار الف يا همون لاگين ها و يوزر ها تامين نمي شود. چرا كه اگه كسي به فايل ها دسترسي پيدا كرد و امكان داشت كه اونو روي سرور ديگري Attach كنه ، سيستم به لاگين و يوزر ها اصلا نگاه نمي كنه و اونو در سرور جديد بالا مي ياره و به نظر تا اينجا منطقي هم هست.
اما شما نياز به يك حفاظت فيزيكي هم دارين.
خوب Sql server 2008 امكان جديدي (يا توسعه يافته اي) رو مطرح كرده كه امكان حفاظت فيزيكي رو فراهم مي كنه. گرچه بگم اين مكانيزم در ابتداي راهشه و هنوز اشكالاتي داره و ممكنه شما رو توي درد سراي بيشتري بياندازه. اما در هر صورت حسابي اون چيزي كه شما ميخواهين رو تامين مي كنه. يعني اگر كسي فايل ها رو برد نتونه ازشون استفاده كنه.
به اين روش مي كن Transparent Data Encryption يا همون TDE . اين مكانيزم اطلاعات شما رو رمزنگاري مي كنه و همزمان روي سرور يك رمزي قرار مي ده و اين رمز نگاري رو با رمز سرور مرتبط مي كنه. حال اگه backup يا فايل ها رو جاي ديگري ببرين حتما به اون رمز سرور نياز خواهيد داشت وگرنه به كلي ناخوانا و بي استفاده خواهند شد.
سعي مي كنم توي تاپيك جداگانه اي كمي در مورد Encryption صحبت كنم.
موفق باشيد
zare69
یک شنبه 28 آبان 1391, 08:32 صبح
دوست عزیز سلام
من در مورد امنیت در بانک اطلاعاتی سوالی داشتم هرچی جستجو کردم به نتیجه ای نرسیدم می تونید منو راهنمای کنید؟
مشکلم اینکه می خوام برا بانک اطلاعاتیم یوزنیم و پسورد بذارم بصورتی که فقط با اون روش کاربر به بانک دسترسی داشته باشه اینکارو کردم و درست اجرا میشه .
مشکل من اینکه اگر کاربر با windows Authentication به سیتم login بشه در هرصورت میتونه به بانک دسترسی داشته باشه و رمز و امنیت خواصی نداره.
آیا میشه اونو غیرفعال کرد یا براش رمز گذاشت؟:متفکر:
tadeh2010
یک شنبه 28 آبان 1391, 13:37 عصر
سلام دوست عزیز
خوب برو در قسمت لاگین Logins و یوزر windows Authentication را راست کلیک بکن بر رویش و درپنجره propertice بر روی status کلیک بکن و Disable را تیک بزن
از این به بعد windows Authentication از کار می افتد ولی باید برای این کار با یوزری غیر از windows Authentication وارد بشوی
موفق باشی.
zare69
دوشنبه 29 آبان 1391, 07:50 صبح
سلام دوست عزیز
خوب برو در قسمت لاگین Logins و یوزر windows Authentication را راست کلیک بکن بر رویش و درپنجره propertice بر روی status کلیک بکن و Disable را تیک بزن
از این به بعد windows Authentication از کار می افتد ولی باید برای این کار با یوزری غیر از windows Authentication وارد بشوی
موفق باشی.
چطوری بفهمم در قسمت لاگین Logins کدوم یوزر مربوط به windows Authentication است؟آخه اسم مشخصی ندارند:خجالت:
tadeh2010
دوشنبه 29 آبان 1391, 21:19 عصر
چطوری بفهمم در قسمت لاگین Logins کدوم یوزر مربوط به windows Authentication است؟آخه اسم مشخصی ندارند:خجالت:
سلام راستیتش دقیقش رو نمی دونم
ولی خودم برای غیر فعال کردن لاگینم وارد Logins شدم و یوزری را که /Administratorداشت را غیر فعال کردم
یعنی اسلش و اسم لاگین ویندوزم
ولی این رو نمی دونم که آیا اگر لاگین دیگری ویندوز داشته باشد آیا در آن هم غیر فعال هست یا نه باید امتحان بکنی.
در ضمن وقتی ییوزری غیر فعال هست کنارش سمت چپ کنار همان آیکن آدمک یک فلش قرمز رنگ رو به پایین فعال می شود.
موفق باشی اگر نتیجه ای گرفتی من هم درجریان بگذار ممنون می شوم. یا علی.
zare69
سه شنبه 30 آبان 1391, 14:45 عصر
موفق باشی اگر نتیجه ای گرفتی من هم درجریان بگذار ممنون می شوم. یا علی.
سلام دوست من
تقریبا درست شد ولی ی مشکل داره اگر کاربر بتونه با ی یوزر دیگه بره بانک اجرا کنه و این یوزر و فعال می کنه
این مشکل زمانی پیش بیاد که کاربر بخواهد برای برنامه دیگری غیر از برنامه ما وصل به بانک بشه و ما نتونیم جلوی دسترسی اونو به بانک بگیریم اونوقت با ی یوزر دیگه وارد میشه و ادمین و فعال می کنه اونوقت دیگه به بانک اطلاعاتی ما هم دسترسی داره
آیا راهی هست که ی یوز فقط بتونه به بانک اطلاعاتی ما دسترسی داشته باشه؟ البته با یوزرنیم و پسورد و آدمین هم به آن(بانک اطلاعاتی ما) دسترسی نداشته باشد:متفکر:
tadeh2010
سه شنبه 30 آبان 1391, 22:42 عصر
سلام دوست من
تقریبا درست شد ولی ی مشکل داره اگر کاربر بتونه با ی یوزر دیگه بره بانک اجرا کنه و این یوزر و فعال می کنه
این مشکل زمانی پیش بیاد که کاربر بخواهد برای برنامه دیگری غیر از برنامه ما وصل به بانک بشه و ما نتونیم جلوی دسترسی اونو به بانک بگیریم اونوقت با ی یوزر دیگه وارد میشه و ادمین و فعال می کنه اونوقت دیگه به بانک اطلاعاتی ما هم دسترسی داره
آیا راهی هست که ی یوز فقط بتونه به بانک اطلاعاتی ما دسترسی داشته باشه؟ البته با یوزرنیم و پسورد و آدمین هم به آن(بانک اطلاعاتی ما) دسترسی نداشته باشد:متفکر:
سلام آره می تونی به هر یوزر دسترسیهای خاص خودش را بدهی
چطور یکم سرچ بکنی در این مورد خیلی صحبت شده
ولی می تونی با راست کلیک کردن روی Instance SQL server (اولین شاخه در پنل سمت چپ) و بازکردن گزینه Propertices و رفتن به بخش Permissions
سطح دسترسی هر یوزر را معیین بکنید تا اینجا کار فعلی شما راه افتاده است.
ولی احتمالا این سوال را هم خواهی داشت که حالا اگر یکی به یک سیستم عامل دیگر یا یک سی دی یا فلاپی یا فلش بوت سیستم را روشن بکند و فایلهای دیتای ما را بدزدد چه!!؟
این سوال خودم در همین تاپیک بوده به صفحات قبلی بروید اون قسمتی که اون استاد اصطلاح TDE را بیان کرده اند من تحقیق کردم از SQL server 2008 r2 در راست کلیک بر روی دیتا بیس و زیر منوی Tasks گزینه ای به نام Manage Database Encryption اضافه شده است که با رمز گزاری بر روی اطلاعات پروسه ی سرقت را به تاخیر می اندازد!!
موفق باشید.
vBulletin® v4.2.5, Copyright ©2000-1405, Jelsoft Enterprises Ltd.