بررسی اصول امنیتی پایگاه های داده بخش بیستم

معرفي نرم افزار و بررسي موانع هنگام برنامه نويسي
5-1 مقدمه
در این فصل به معرفی نرم افزار میپردازیم. این نرم افزار دارای پنج فرم با نامهای ورود (frm_begin) ، پرسنل (frm_person) ، پروژه (frm_project) ، اخذ پروژه (frm_person_project ) و یک فرم اصلی است. فرمهای Login و فرم پرسنل به طور کامل توضیح داده میشوند. روش کار در بقیه فرمها مشابه فرم پرسنل است. در صورت وجود مغایرت ، توضیحات لازم داده خواهد شد. برای درک مفاهیم این فصل لازم است تا فصل سوم به دقت مطالعه شود.
5-2 رشته ارتباط
برای ارتباط با پایگاهداده از محیطهای برنامهنویسی دات نتی باید ابتدا یک ارتباط ایجاد کنیم. برای این کار نیاز به یک رشته ارتباط (CS) داریم. این رشته شامل مجموعهای از مقادیر است که با یک عملگر "=" به صفات خود نگاشت میشوند. نام پایگاهداده و نام سرویسدهنده نمونههایی از این صفات هستند. این رشته به دو شکل ساخته میشود:
• Windows authentication mode(NT Authentication) : در این روش کاربری که به ویندوز Login شده است میتواند به پایگاهداده وصل شود. در واقع در این روش با مد هویت شناسی ویندوز با SQL Server ارتباط برقرار میشود. در ذیل نمونهای از این رشته را مشاهده میکنید :
"Data Source=yashar;Initial Catalog=myDb;Integrated Security=True"
شما عموما مدیر-admin- کامپیوتر خود هستید. هنگام کار با مد هویت شناسی ویندوزی کاربری با این سطح در واقع در SQLServer همه کاره است و قادر به انجام هر عملی میباشد. از آنجا که سطح اختیار کاربران در یک سیستم چند کاربره متفاوت است بنابراین اگر سیستم چند کاربره طراحی کردهاید و از هویت شناسی ویندوزی استفاده میکنید ، سطح اختیار هر کاربر باید توسط مدیر شبکه به دقت تعیین شود که این عمل در سطح سیستم عامل ویندوز انجام میشود. برای کسب اطلاع بیشتر به بخش 3-2 مراجعه شود.
• SQlServer authentication mode : در این روش با هویت شناسی توسط SQLServer به پایگاهداده وصل میشوند. در این روش به این علت که نام کاربر و کلمه رمز در رشته قید میشود ، از میزان امنیت پایینتری نسبت به مد هویت شناسی ویندوزی برخوردار است و این شیوه برای برقراری با پایگاهداده پیشنهاد نمیشود و بهتر است با استفاده از امنیت یکپارچه ویندوز این رشته ساخته شود. در ذیل نمونهای از این رشته را مشاهده میکنید:
"Data Source=yashar;Initial Catalog=myDb;User ID=myLogin;Password='plm789';Network Library=dbmslpcn "
نام کاربر موجود در رشته در واقع یک Login ، در سطح SQLServer است. اختیارات این کاربر باید محدود باشد. برای این کار هنگام تعریف این Login در SQLServer آنرا در گروه public قرار میدهیم. هر Login بصورت پیش فرض در این گروه قرار دارد و این گروه کمترین اختیار را نسبت به سایر گروهها در سطح سرویس دهنده دارد. برای تعریف Login به 3-3 مراجعه شود.
5-3 ارتباط برنامه با نقش برنامهای(APR)
همانطور که در بخش 3-5-3 گفته شد APR ها برای محدود کردن دسترسی یک برنامه به منابع پایگاهداده استفاده میشود. APR ها بهترین و امنترین روش برای دسترسی برنامهها به پایگاهداده است. روشهای سنتی بکار رفته کاملا اشتباه بوده و به تنهایی کارایی ندارند. به راحتی چنین سیستمهایی میتوانند مورد تهاجم قرار گیرند. برای روشن شدن موضوع به بررسی یکی از روشهای سنتی میپردازیم و در ادامه چگونگی انجام این کار با استفاده از APR بررسی میکنیم.
یکی از روشهای سنتی به این صورت است که ابتدا در پایگاهداده یک جدول در پایگاه داده ساخته میشود که دارای سه ستونِ نام کاربر ، کلمه رمز و شماره است(شکل 5-1 ).
شکل 5-1 : استفاده از جدول پایگاه داده ، برای تامین امنیت در روش سنتی
هنگامی که کاربری نام کاربر و کلمه رمز را وارد میکند ، این اطلاعات با دادههای موجود در جدول مقایسه شده و در صورت سازگاری ، دادۀ موجود در ستون شماره به محیط برنامه بازگردانده میشود. این عدد مشخص کننده سمت کاربر است. بر فرض مثال اگر این عدد معادل دو باشد ، این کاربر سمت کارمند عادی را دارد. با استفاده از این عدد دسترسی به منابع برنامه ( TextBox ، Button ، ...) با غیرفعال کردن آنها محدود میشود. اغلب برای غیر فعال کردن منابع ، در پنجره properties گزینه disable انتخاب میشود. شکستن این سد برای هکرها کار دشواری نبوده و استفاده از این روش ، امنیت منابع موجود در پایگاه داده را به خطر میاندازد در عوض اگر تامین امنیت به SQLServer واگذار شود ، کسی به راحتی نمیتواند از سد آن عبور کند. تعدادی از این اعمال بصورت خودکار توسط SQlServer انجام میشود و تعدادی نیز باید توسط مدیر SQlServer انجام شود که در فصل 3 به تعدادی از آنها اشاره شد. قبل از بررسی این بخش لازم است با مراجعه به 3-5-3 نحوه ایجاد و مدیریت نقشهای برنامهای را به دقت مطالعه کرد. در اینجا به بررسی نحوه ارتباط برنامه با نقش برنامهای و پیاده سازی آن در محیط پایگاه داده میپردازیم :
1. کاربر برنامه(سرویس گیرنده) مورد نظر را اجرا میکند.
2. برنامه تحت عنوان یک کاربر عادی به نمونهای از SQLServer وصل میشود. برای این کار یک Login ساخته و دسترسی به پایگاهداده مورد نظر به آن داده میشود. این Login همانطور که قبلا هم گفته شد میتواند username های ویندوز باشد و یا یکی از Login های موجود در SQLServer باشد. بر روی User Mapping کلیک کرده و دسترسی به پایگاهدادههای مورد نظر به Login داده میشود. در این صورت کاربری همنام با Login ساخته میشود(این کاربر ، کاربری در سطح پایگاهداده است و میتوان هر کاربر دیگری را در سطح آن پایگاهداده برای این کار انتخاب کرد). به شکل های 5-1 و 5-2 توجه شود.
شکل 5-1: ساختن Login
همانطور که در شکل 5-2 نیز مشخص است ، این کاربر پایگاه داده عضو نقش پایگاهدادهای public است. اعضای این نقش تنها به منابع عمومی دسترسی دارند و دارای کمترین دسترسیها برای آنها تعریف شده است.