ش | ی | د | س | چ | پ | ج |
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 |
امنیت پایگاه داده( سرور)
مدیریت پایگاه داده ها در SQL Server - امنیت اطلاعات و عملیات :
اشاره :
مقوله امنیت همواره یکی از مهمترین شاخههای مهندسی نرمافزار و به تبع آن، یکی از حساسترین وظایف مدیران سیستم بهخصوص مدیران شبکه و یا مدیران بانکهای اطلاعاتی است. با تنظیم سطوح دسترسی برای کاربران شبکه یا بانکهای اطلاعاتی شبکه، امنیت اطلاعات یا به عبارتی عدم دسترسی افراد فاقد صلاحیت به اطلاعات، تضمین میگردد. هر سیستمعامل، پلتفرم یا بانک اطلاعاتی، شیوههایی خاصی را برای برقراری قواعد امنیتی به کاربران معرفی مینماید. در SQL Server هم روشهای خاصی برای این مقوله وجود دارد که در اینجا به آنها میپردازیم
امنیت در ورود به سیستم:
زمانی که یک بانک اطلاعاتی جدید را در SQL Server تعریف میکنید، با کلیک سمت راست بر روی نام موتور پایگاه دادهای یک سرور درEnterprise Manager و انتخاب قسمت Properties، در زبانه security، موتور بانک اطلاعاتی امکان انتخاب دو روش مختلف در معرفی و یا شناسایی کاربران مجاز برای ورود به سیستم یا همان عمل احراز هویت (Authentication) را در دسترس قرار میدهد. البته بعد از ساخت یک بانک اطلاعاتی، با کلیک سمت راست بر روی نام آن بانک و انتخاب گزینه Properties و سپس security هم میتوان روش مورد استفاده را تغییر داد. (شکل 1)
یکی از این دو روش که برمبنای ارتباط موتور این پایگاه داده با اکتیودایرکتوری ویندوز 2000 سرور بنا شده است و Windows only نام دارد، باعث میشود تا کاربران از قبل تعریف شده در دامنه (Domain) یک شبکه مبتنی بر ویندوز 2000 سرور، به رسمیت شناخته شوند. در این صورت نیازی به معرفی کاربر جدید و یا انتخاب دو نام کاربری برای یک نفر وجود ندارد و کاربر مذکور میتواند از همان نام کاربری و رمز عبوری که برای ورود به دامنه شبکه ویندوزی خود استفاده میکند، برای اتصال به بانک اطلاعاتی هم استفاده کند.
در روش دوم، ارایه مجوز دسترسی به کاربران با سیستمی خارج از محدوده دامنهویندوزی صورت میگیرد. بدینصورت مدیر سیستم مجبور است برای کلیه کاربرانی که قصد اتصال به بانک را دارند، نام کاربری و رمزعبور جدیدی را تعریف کند.
(شکل 1)
تعریف کاربران:
در صورتی که شیوه دوم تعریف کاربران را انتخاب کرده باشید، باید ابتدا لیستی از کاربران را به همراه رمزعبور
مربوطهشان در قسمتی از صفحه Enterprise Manager که با عنوان Security مشخص شده، معرفی کنید. این کار با کلیک سمت راست بر روی گزینه Login در قسمت مذکور و سپس new login انجام میگیرد. انتخاب یک نام کاربری به همراه ورود رمزعبور تنها کاری است که باید در این جا انجام گیرد تا یک کاربر بهطور عمومی در لیست کاربران یک موتور پایگاده داده قرار گیرد.
از این به بعد، وظیفه مدیر سیستم تعیین دسترسی کاربران تعریف شده در قسمت security، به بانکهای مختلف تعریف شده در پایگاه است.
اینکار نیز از دو طریق قابل انجام است. در روش اول، دسترسی به هر بانک اطلاعاتی از طریق همان قسمت security صورت میگیرد. کافی است بر روی هر کاربری که در این قسمت تعریف کردهاید، کلیک سمت راست کرده و ابتدا گزینه خصوصیات و سپس زبانه DataBase Access را انتخاب کنید. پس از آن لیستی از کلیه بانکهای اطلاعاتی موجود در پایگاه به شما نمایش داده میشود که باید بانک موردنظر را انتخاب کرده و در ستون Permit کلیک موردنظر را انجام دهید. پس از این کار میتوانید یک نام نمایشی را برای نام کاربری مربوطه در ستون user تایپ کنید. در اینجا به عنوان مثال امکان دسترسی کاربر mda را به بانک Northwind فراهم نموده و نام نمایشی <مهیار داعیالحق> برای آن انتخاب شده است (شکل 2). همانطور که مشاهده میکنید این کاربر بهطور خودکار در گروه کاربری عمومی(public) بانک مذکور قرار داده میشود.
(شکل 2)
در روش دوم، به سراغ بانک اطلاعاتی موردنظر در لیست DataBases رفته و با کلیک سمت راست بر روی عبارتusers، گزینه New User را انتخاب میکنیم. حال در پنجره نمایش داده شده، باید از درون لیست Login name، یکی از کاربرانی را که قبلاً در قسمت security تعریف کردهایم انتخاب کرده و نام نمایشی آن را هم در قسمت user name تایپ کنید. در اینجا هم بهصورت خودکار، کاربر مذکور در گروه کاربری Public برای آن بانک اطلاعاتی قرار میگیرد. (شکل 3)
نقشها (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 ساخته شده را بخوانند و بنویسند.
شکل 4 |
اما به غیر از نقشهای مذکور، مدیر سیستم هم میتواند به تناسب، نقشهایی را در سیستم تعریف کند. به عنوان مثال فرض کنید که در یک واحد حسابداری، کارمندان عادی آن قسمت، موظف به وارد کردن اسناد مالی به یکی از جداول بانکاطلاعاتی با استفاده از یک برنامه ویژوال بیسیک هستند. مدیر مالی نیز توسط دکمه موجود در همان برنامه قادر است یک روتین ذخیره شده (stored procedure) را فراخوانی کرده تا اسناد وارد شده را تأیید کند. بنابراین فقط کاربر مربوط به مدیر مالی حق اجرای روتین مذکور را دارد. برهمین اصل مدیر پایگاه یک گروه به نام <حسابداران> را برای ورود اسناد و گروه دیگری را به نام <مدیر مالی> برای مدیریت آن دپارتمان و جانشینان احتمالی وی در نظر میگیرد و برای گروه اول، اجرای روتین مذکور را در حالت ممنوع (Deny) و برای گروه دوم، در حالت مجاز (Allow) قرار میدهد. شما میتوانید برای تعریف یک گروه یا نقش جدید، بر روی آیتم Roles کلیک سمت راست کرده و گزینه New Role و سپس یک نام دلخواه را انتخاب کرده و آنگاه با کلیک بر روی دکمه Add کاربران از قبل تعریف شدهتان را یک به یک به جمع آن گروه اضافه نمایید. شایان ذکر است که هر کاربر میتواند جزء چند گروه یا نقش باشد. در ادامه باید در همان پنجره مذکور با کلیک بر روی دکمه مجوز (Permission)، دسترسی و قابلیت عملیاتی آن گروه را هم تعریف کنید. (شکل 4)
انواع مجوزها :
1- جداول اطلاعاتی و دیدها
شکل 5 |
در مورد یک جدول بانک اطلاعاتی شما میتوانید امکان انجام پرسوجو، درج، تغییر، حذف و تعریف وابستگی را به ترتیب با علامت زدن در ستونهای SELECT ،UPDATE ،DELETE و DRI برای یک گروه یا کاربر، ممکن یا غیرممکن کنید. در ضمن در صورتی که بخواهید بر روی تکتک فیلدها، قواعدی را وضع کنید میتوانید بر روی دکمه Colums هر جدول کلیک کرده و امکان آوردن آن فیلد را در یک عبارت پرسوجو (SELECT) و یا امکان تغییر آن فیلد را در یک عملیات UPDATE برای گروه یا کاربر موردنظر مشخص کنید. (شکل 5) لازم به ذکر است که همین عملیات برای دیدهای
(View) یک بانک هم قابل انجام است.
شکل 6 |
2- روتینها و توابع
در مورد روتینها و توابع تعریفشده (User Defined Fonction) فقط یک ستون مجوز به نام Exec و آن هم به معنی امکان استفاده یا عدم استفاده وجود دارد که توسط مدیر سیستم تنظیم میشود. (شکل 6)
3- مجوزهای اساسی
به غیر از عملیاتعمومی سیستم مثل جستجو، درج، تغییر، اجرای روتین و... که در بالا ذکر شد، در SQL serverامکانات ویژهای نیز برای کاربردهای خاص در نظر گرفته شده که فقط در مواقع لزوم به برخی کاربران یا نقشها اعطا میشود. اگر بر روی نام هر بانک اطلاعاتی موجود در سیستم مثل Northwind، کلیک راست کرده و آیتم خصوصیات را انتخاب کنید، در زبانه آخر یعنی Permission لیستی از نقشها و کاربرهای موجود در سیستم را مشاهده میکنید که در جلوی نام هر یک از
شکل 7 |
آنها و در 8 ستون به ترتیب از چپ به راست امکان ساخت جدول، دید، روتین، مقادیر پیشفرض، قواعد، توابع، پشتیبانگیری از اطلاعات و پشتیبانگیری از لاگها وجود دارد که در مواقع خاصی قابل اعطا به کاربران با نقشهای مختلف میباشد. به عنوان مثال اگر برنامهنویس قصد داشته باشد تا برای فراهمساختن امکان تهیه یک گزارش پیچیده، به کاربری اجازه اجرای دستور CREATE VIEW را از داخل یکی از فرمهای برنامه ویژوال بیسیک خود بدهد، باید قبلاً مدیر پایگاه را مطلع نموده تا وی ستون Create View را برای آن کاربر، فعال نماید. همین عمل جهت ساخت جداول موقت برای گرفتن گزارش یا سایر عملیات پیچیده هم وجود دارد و از طریق ستون Create Table قابل انجام است.
در این صورت کاربر میتواند با استفاده از دستوراتی که منتهی به ساخت جدول میشود مثل Create Table یا Select INTO جداول موقتی را توسط برنامه ویژوال بیسیک مورد استفاده خود ایجاد نموده و پس از پایان کار با استفاده از دستور DROP آنها را حذف نماید. (شکل 7 )