امنیت در پایگاه‌های داده

اشاره :

 مقوله امنیت همواره یكی از مهم‌ترین شاخه‌های مهندسی نرم‌افزار و به تبع آن، یكی از حساس‌ترین وظایف مدیران سیستم به‌خصوص مدیران شبكه و یا مدیران بانك‌های اطلاعاتی است. با تنظیم سطوح دسترسی برای كاربران شبكه یا بانك‌های اطلاعاتی شبكه، امنیت اطلاعات یا به عبارتی عدم دسترسی افراد فاقد صلاحیت به اطلاعات، تضمین می‌گردد. هر سیستم‌عامل، پلتفرم یا بانك اطلاعاتی، شیوه‌هایی خاصی را برای برقراری قواعد امنیتی به كاربران معرفی می‌نماید. در SQL Server هم روش‌های خاصی برای این مقوله وجود دارد كه در اینجا به آن‌ها می‌پردازیم
 

امنیت در ورود به سیستم:

زمانی كه یك بانك اطلاعاتی جدید را در SQL Server تعریف می‌كنید، با كلیك سمت راست بر روی نام موتور پایگاه داده‌ای یك سرور درEnterprise Manager و انتخاب قسمت Properties، در زبانه security، موتور بانك اطلاعاتی امكان انتخاب دو روش مختلف در معرفی و یا شناسایی كاربران مجاز برای ورود به سیستم یا همان عمل احراز هویت (Authentication) را در دسترس قرار می‌دهد. البته بعد از ساخت یك بانك اطلاعاتی، با كلیك سمت راست بر روی نام آن بانك و انتخاب گزینه Properties و سپس security هم می‌توان روش مورد استفاده را تغییر داد.
یكی از این دو روش كه برمبنای ارتباط موتور این پایگاه داده با اكتیودایركتوری ویندوز 2000 سرور بنا شده است و Windows only نام دارد، باعث می‌شود تا كاربران از قبل تعریف شده در دامنه (Domain) یك شبكه مبتنی بر ویندوز 2000 سرور، به رسمیت شناخته شوند. در این صورت نیازی به معرفی كاربر جدید و یا انتخاب دو نام كاربری برای یك نفر وجود ندارد و كاربر مذكور می‌تواند از همان نام كاربری و رمز عبوری كه برای ورود به دامنه شبكه ویندوزی خود استفاده می‌كند، برای اتصال به بانك اطلاعاتی هم استفاده كند.
در روش دوم، ارایه مجوز دسترسی به كاربران با سیستمی خارج از محدوده دامنه‌‌ویندوزی صورت می‌گیرد. بدین‌صورت مدیر سیستم مجبور است برای كلیه كاربرانی كه قصد اتصال به بانك را دارند، نام كاربری و رمزعبور جدیدی را تعریف كند.
 
در صورتی كه شیوه دوم تعریف كاربران را انتخاب كرده باشید، باید ابتدا لیستی از كاربران را به همراه رمزعبور  
مربوطه‌شان در قسمتی از صفحه Enterprise Manager  كه با عنوان Security
تعریف كاربران:
مشخص شده، معرفی كنید. این كار با كلیك سمت راست بر روی گزینه Login در قسمت مذكور و سپس new login انجام می‌گیرد. انتخاب یك نام كاربری به همراه ورود رمزعبور تنها كاری است كه باید در این جا انجام گیرد تا یك كاربر به‌طور عمومی در لیست  كاربران یك موتور پایگاده داده‌ قرار گیرد.
از این به بعد، وظیفه مدیر سیستم تعیین دسترسی كاربران تعریف شده در قسمت security، به بانك‌های مختلف تعریف شده در پایگاه است.
این‌كار نیز از دو طریق قابل انجام است. در روش  اول، دسترسی به هر بانك اطلاعاتی از طریق همان قسمت security صورت می‌گیرد. كافی است بر روی هر كاربری كه در این قسمت تعریف كرده‌اید، كلیك سمت راست كرده و ابتدا گزینه خصوصیات و سپس زبانه DataBase Access را انتخاب كنید. پس از آن لیستی از كلیه بانك‌های اطلاعاتی موجود در پایگاه به شما نمایش داده می‌شود كه باید بانك موردنظر را انتخاب كرده و در ستون Permit  كلیك موردنظر را انجام دهید. پس از این كار می‌توانید یك نام نمایشی را برای نام كاربری مربوطه در ستون user تایپ كنید. در این‌جا به عنوان مثال امكان دسترسی كاربر mda را به بانك Northwind فراهم نموده و نام نمایشی <مهیار  داعی‌الحق> برای آن انتخاب شده است . همان‌طور كه مشاهده می‌كنید این كاربر به‌طور خودكار در گروه كاربری عمومی(public)  بانك مذكور قرار داده می‌شود. 
 
در روش دوم، به سراغ بانك اطلاعاتی موردنظر در لیست DataBases رفته و با كلیك سمت راست بر روی عبارتusers، گزینه New User را انتخاب می‌كنیم. حال در پنجره نمایش داده شده، باید از درون لیست Login name، یكی از كاربرانی را كه قبلاً در قسمت security تعریف كرده‌ایم انتخاب كرده و نام نمایشی آن را هم در قسمت user name تایپ كنید. در این‌جا هم به‌صورت خودكار، كاربر مذكور در گروه كاربری Public برای آن بانك اطلاعاتی قرار می‌گیرد.
 
 

نقش‌ها (Roles) :

درSQL Server، می‌توان چندین كاربر را در یك گروه كاربری قرار داد. وقتی یك گروه كاربری تعریف می‌شود، دسترسی آن به قسمت‌های مختلف یك بانك اطلاعاتی و كلیه عملیاتی كه اعضاء آن گروه می‌توانند انجام دهند، توسط مدیر سیستم تعیین می‌گردد. از این به بعد هرگاه كاربر جدیدی به آن گروه اضافه ‌شود، نیازی به تعریف مجدد سطوح دسترسی و عملیاتی برای وی وجود ندارد و سطوح دسترسی به صورت خودكار از طرف گروه به عضو جدید اعطا می‌شود. درSQL Server  به‌صورت پیش‌فرض تعدادی نقش (Role) وجود دارد كه در واقع همان گروه‌های كاربری مذكور می‌باشد. هر كاربری كه توسط مدیر سیستم به جمع كاربران اضافه می‌شود به طور خودكار در نقش public  ظاهر می‌شود. نقش‌های از پیش تعریف شده و نحوه دسترسی و قابلیت عملیاتی آن‌ها عبارت هستند از:
 
1- db-accessadmin 
كاربران تعریف شده در این نقش قادر خواهند بود، سطوح دسترسی و امنیتی كلیه كاربران و نقش‌ها را در قسمت‌های مختلف پایگاه تعریف كنند.
 
2- db-backupoperator 
این نقش مسؤول ایجاد نسخه‌های پشتیبان از سیستم و اطلاعات درون آن است.
 
3- db-datareader 
این نقش قادر است كلیه اطلاعات تمام جداول بانك اطلاعاتی موجود در سیستم را بخواند. مگر آن‌كه اطلاعات خاصی توسط مكانیسم Deny از دسترس او دور نگاه داشته شود.
 
4- db-datawriter
افراد تعریف شده در این نقش قادرند تا كلیه اطلاعات موجود در كلیه جداول بانك را با استفاده از دستورات سه‌گانهInsert ،UPdate ،Delete تغییر دهند. مگر آن ‌كه جدول یا فیلد خاصی توسط مكانیسم Deny از دسترس‌شان دور نگه داشته شود.
 
5- db-ddladmin  
كاربران دارای این نقش می‌توانند ساختار جداول، دیدها، روتین‌ها و توابع یك بانك اطلاعاتی را با استفاده از دستورات سه‌گانه Create ،alter ،Drop، بسازند، تغییر دهند یا از بین ببرند.
 
6- db-denydatareader 
این نقش قادر به خواندن هیچ اطلاعاتی از جداول یا سایر قسمت‌های بانك نیست.
 
 7- db-denydatawriter 
این نقش هم قادر به تغییر دادن هیچ یك از قسمت‌های بانك اطلا‌عاتی نیست.
 
8- db-owner 
این نقش قادر به انجام هر عملی در بانك‌اطلاعاتی می‌باشد و بالاترین سطح موجود در یك بانك است.
 
9- db-securityadmin 
مسؤول تعریف و تنظیم نقش‌ها، كاربران و سطوح دسترسی در یك بانك است.
 
10- public 
كاربران این نقش‌ قادرند تمام جداول، دیدها و سایر قسمت‌هایی كه توسط خودشان یا توسط كاربران متعلق به نقش dbowner ساخته شده را بخوانند و بنویسند.
 
 
اما به غیر از نقش‌های مذكور، مدیر سیستم هم می‌تواند به تناسب، نقش‌هایی را در سیستم تعریف كند. به عنوان مثال فرض كنید كه در یك واحد  حسابداری، كارمندان عادی آن قسمت، موظف به وارد كردن اسناد مالی به یكی از جداول بانك‌اطلاعاتی با استفاده از یك برنامه ویژوال بیسیك هستند. مدیر مالی نیز توسط دكمه موجود در همان برنامه قادر است یك روتین ذخیره شده (stored procedure) را فراخوانی كرده تا اسناد وارد شده را تأیید كند. بنابراین فقط كاربر مربوط به مدیر مالی حق اجرای روتین مذكور را دارد. برهمین اصل مدیر پایگاه یك گروه به نام <حسابداران> را برای ورود اسناد و گروه دیگری را به نام <مدیر مالی> برای مدیریت آن دپارتمان و جانشینان احتمالی وی در نظر می‌گیرد و برای گروه اول، اجرای روتین مذكور را در حالت ممنوع (Deny) و برای گروه دوم، در حالت مجاز (Allow) قرار می‌دهد. شما می‌توانید برای تعریف یك گروه یا نقش جدید، بر روی آیتم Roles كلیك سمت راست كرده و گزینه New Role و سپس یك نام دلخواه را انتخاب كرده و آن‌گاه با كلیك بر روی دكمه Add كاربران از قبل تعریف شده‌تان را یك به یك به جمع آن گروه اضافه نمایید. شایان ذكر است كه هر كاربر می‌تواند جزء چند گروه یا نقش باشد. در ادامه باید در همان پنجره مذكور با كلیك بر روی دكمه مجوز (Permission)، دسترسی و قابلیت عملیاتی آن گروه را هم تعریف كنید.
 

انواع مجوزها :

 
1-  جداول اطلاعاتی و دیدها 
در مورد یك جدول بانك اطلاعاتی شما می‌توانید امكان انجام پرس‌وجو، درج، تغییر، حذف و تعریف وابستگی را به ترتیب با علا‌مت زدن در ستون‌های SELECT ،UPDATE ،DELETE و DRI برای یك گروه یا كاربر، ممكن یا غیرممكن كنید. در ضمن در صورتی كه بخواهید بر روی تك‌تك فیلدها، قواعدی را وضع كنید می‌توانید بر روی دكمه Colums هر جدول كلیك كرده و امكان آوردن آن فیلد را در یك عبارت پرس‌وجو (SELECT) و یا امكان تغییر آن فیلد را در یك عملیات UPDATE برای گروه یا كاربر موردنظر مشخص كنید. ‌ لازم به ذكر است كه همین عملیات برای دیدهای
(View) یك بانك هم قابل انجام است.
 
2- روتین‌ها و توابع
در مورد روتین‌ها و توابع تعریف‌شده (User Defined Fonction) فقط یك ستون مجوز به نام Exec  و آن هم به معنی امكان استفاده یا عدم استفاده وجود دارد كه توسط مدیر سیستم تنظیم می‌شود.
 
3- مجوزهای اساسی
به غیر از عملیات‌عمومی سیستم مثل جستجو، درج، تغییر، اجرای روتین و... كه در بالا ذكر شد، در SQL serverامكانات ویژه‌ای نیز برای كاربردهای خاص در نظر گرفته شده كه فقط در مواقع لزوم به برخی كاربران یا نقش‌ها اعطا می‌شود. اگر بر روی نام هر بانك اطلاعاتی موجود در سیستم مثل Northwind، كلیك راست كرده و آیتم خصوصیات را انتخاب كنید، در زبانه آخر یعنی Permission لیستی از نقش‌ها و كاربرهای موجود در سیستم را مشاهده می‌كنید كه در جلوی نام هر یك از آن‌ها و در 8 ستون به ترتیب از چپ به راست امكان ساخت جدول، دید، روتین، مقادیر پیش‌فرض، قواعد، توابع، پشتیبان‌گیری از اطلاعات و پشتیبان‌گیری از لاگ‌ها وجود دارد كه در مواقع خاصی قابل اعطا به كاربران با نقش‌های مختلف می‌باشد. به عنوان مثال اگر برنامه‌نویس قصد داشته باشد تا برای فراهم‌ساختن امكان تهیه یك گزارش پیچیده، به كاربری اجازه اجرای دستور CREATE VIEW را از داخل یكی از فرم‌های برنامه ویژوال بیسیك خود بدهد، باید قبلاً مدیر پایگاه را مطلع نموده تا وی ستون Create View را برای آن كاربر، فعال نماید. همین عمل جهت ساخت جداول موقت برای گرفتن گزارش یا سایر عملیات‌ پیچیده هم وجود دارد و از طریق ستون Create Table  قابل انجام است.
در این صورت كاربر می‌تواند با استفاده از دستوراتی كه منتهی به ساخت جدول می‌شود مثل Create Table یا Select INTO جداول موقتی را توسط برنامه ویژوال بیسیك مورد استفاده خود ایجاد نموده و پس از پایان كار با استفاده از دستور DROP  آن‌ها را حذف نماید.


منبع


۳۰ فروردین ۱۳۹۴


محصولات مشابه