فصل 3: روش تحقيق59
3-1- مقدمه60
3-2- مفاهيم و اصطلاحات60

در این سایت فقط تکه هایی از این مطلب با شماره بندی انتهای صفحه درج می شود که ممکن است هنگام انتقال از فایل ورد به داخل سایت کلمات به هم بریزد یا شکل ها درج نشود

شما می توانید تکه های دیگری از این مطلب را با جستجو در همین سایت بخوانید

ولی برای دانلود فایل اصلی با فرمت ورد حاوی تمامی قسمت ها با منابع کامل

اینجا کلیک کنید

3-3- بهينه‌سازي مكعب امنيت62
3-4- مدل پيشنهادي65
3-4-1- خط‌مشي كنترل دسترسي67
3-4-2- كنترل دسترسي70
3-4-3- معماري مدل پيشنهادي72
فصل 4: نتايج و تفسير آنها75
4-1- ارزيابي مدل پيشنهادي76
4-2- مقايسه مدل‌هاي كنترل دسترسي79
فصل 5: جمع‌بندي و پيشنهادها81
مراجع84
پيوست‌ها87
فهرست اشکال
شکل (2-1( نمونه‌اي از يك سند XML و اجزاء آن7
شکل (2-2( ساختار درختي سند XML9
شکل (2-3( نمونه‌اي از يك شماي XML در XML Schema11
شکل (2-4) مثالي از يك گراف نقش27
شکل (2-5) شماي مجوز شئ براي مثال نمونه31
شکل (2-6) گراف مجوز شئ براي مثال نمونه31
شکل (2-7) نمودار نوع مجوز براي مثال نمونه ذكر شده32
شکل (2-8) الگوريتم انتشار مجوز35
شکل (2-9) مثالي از ORF براي خط‌مشئ P143
شکل (2-10) مثالي از SRF براي خط‌مشئ P144
شکل (2-11) مثالي از GRF كه // را پشتيباني مي‌كند44
شکل (2-12) مثالي از SRF كه // را پشتيباني مي‌كند45
شکل (2-13) قطعه كدي جهت گزاره CustKey = $custID46
شکل (2-14) سيستم كنترل دسترسي مبتني بر تابع47
شکل (2-15) يك شاخص نگاشت بيتي براي مستندات XML49
شکل (2-16) مثالي از يك ديد محدود شده50
شکل (2-17) مكعب امنيت55
شکل (2-18) نمونه‌اي از مكعب امنيت با موضوعاتي از قبيل كاربران، آدرس‌هاي IP و نام‌هاي سمبليك56
شکل (3-1) نمونه‌اي از يك DTD سيستم آموزش61
شکل (3-2) قوانين مربوط به نقش دانشجو براي مجوز خواندن بدون انتشار مجوز69

شکل (3-3) قوانين مربوط به نقش دانشجو براي مجوز خواندن با انتشار مجوز70
شکل (3-4) معماري مدل پيشنهادي73
شکل (4-1) نمونه پرس‌وجوهاي اجرا شده جهت ارزيابي سرعت دسترسي به اطلاعات76
شکل (4-2) ارزيابي سرعت دستيابي به اطلاعات با مسيرهاي ساده77
شکل (4-3) ارزيابي سرعت دستيابي به اطلاعات با مسيرهاي داراي // و *77
شکل (4-4) نمونه پرس‌وجوهاي اجرا شده جهت ارزيابي سرعت به‌روزرساني اطلاعات78
شکل (4-5) ارزيابي سرعت به‌روزرساني اطلاعات با دستورات XQuery در مدل پيشنهادي78
شکل (4-6) ارزيابي سرعت به‌روزرساني اطلاعات با دستورات XQuery در مدل آقاي يون78
شکل (4-7) حجم مكعب امنيت در مدل آقاي يون79
فهرست جداول
جدول (2-1) ماتريس وابستگي مجوز براي مثال نمونه33
جدول (2-2) نتايج ارزيابي يك تابع دستور39
جدول (2-3) نمايش نگاشت بيتي از كنترل دسترسي در سطح DTD51
جدول (2-4) نمايش نگاشت بيتي از كنترل دسترسي در سطح سند52
جدول (2-5) نمايش نگاشت بيتي از كنترل دسترسي در سطح مسير المان52
جدول (2-6) نمايش نگاشت بيتي از كنترل دسترسي در سطح محتوا53
جدول (3-1) روش محاسبه اندازة مكعب امنيت55
جدول (3-2) الگوريتم به‌روزرساني مكعب امنيت براي كاربر/مجوز جديد56
جدول (3-3) انواع مختلف مكعب‌هاي امنيت57
جدول (4-1) تعداد اقلام اطلاعاتي در يك سيستم آموزش نمونه63
جدول (4-2) حجم مكعب امنيت براي سيستم آموزش نمونه64
جدول (4-3) حجم مكعب امنيت بهينه براي سيستم آموزش65
جدول (4-4) نمونه‌اي از جدول نگاشت بيتي دسترسي در سطح سند در سيستم آموزش71
جدول (4-5) الگوريتم به‌روزرساني مكعب امنيت بهينه در مدل پيشنهادي74
جدول (5-1) مقايسه مدل‌هاي كنترل دسترسي80
فصل 1:
مقدمه
1-1-
مقدمه
اكثر نرم‌افزارهاي كاربردي تجاري، سيستم‌هاي تبادل داده، و شركت‌هاي مختلف داده‌هاي ساختيافته‌ي خود را در بانك‌هاي اطلاعات رابطه‌اي نگهداري مي‌كنند. بانك‌هاي اطلاعات رابطه‌اي نمونه خوبي از بانك‌هاي اطلاعات ساختيافته هستند. بانك‌هاي اطلاعات نيمه ساختيافته مشابه بانك‌هاي سنتي شِماي ثابتي ندارند. داده‌هاي نيمه ساختيافته، خود تعريف مي‌باشند و مي‌توانند مدل ناهمگون‌تري نسبت به داده‌هاي ساختيافته داشته باشند. زبان نشانه‌گذاري توسعه‌پذير XML تكنيك مناسبي براي مدل‌سازي چنين داده‌هايي است [1]، هر چند داده‌هاي ساختيافته و غيرساختيافته نيز مي‌تواند در قالب XML ذخيره شود. نمايش داده‌هاي غير ساختيافته به صورت XML قابليت‌هاي بسياري را در اختيار كاربران مي‌گذارد. ويژگي غير ساختيافته بودن اطلاعات و انعطاف‌پذيري XML و همچنين همه‌گير شدن استفاده از آن باعث شده است كه در بانك‌هاي اطلاعات نيز مورد توجه قرار گيرد. در اين ميان دسترسي به اطلاعات و امنيت اطلاعات مبادله شده بسيار مورد توجه مي‌باشد.
جهت برقراري امنيت در بانك اطلاعات XML مدل‌ها، مكانيزم‌ها و روش‌هايي وجود دارد. در حال حاضر تنها مدل‌هايي كه در برقراري امنيت در بانك اطلاعات XML استفاده مي‌شود مدل‌هاي كنترل دسترسي مي‌باشند. مطابقت مدل‌هاي كنترل دسترسي با مستندات XML و نيز چگونگي استفاده از اين مدل‌ها در بانك اطلاعات XML در اين پايان‌نامه تشريح شده است.
بيشتر كنترل‌هاي دسترسي مرسوم شامل ليست‌هاي كنترل دسترسي [2]، ليست‌هاي قابليت [3] و ماتريس‌‌هاي كنترل دسترسي [4] هستند. هنگامي كه درباره امنيت يك سيستم صحبت مي‌شود “كنترل دسترسي” جنبه‌هاي بسياري را شامل مي‌شود. كنترل دسترسي بايد رسا و قابل فهم باشد و بتواند امنيت دسترسي به داده‌هاي مستقر در يك مكان را پشتيباني نمايد. همچنين در بسياري از سيستم‌ها همچون سيستم‌هاي تراكنشي تجاري و بايگاني‌هاي پزشكي كه شامل داده‌هاي حساس مي‌باشند، كنترل دسترسي در پايين‌ترين سطح (عنصر و يا صفت) مورد نياز است.
كارهاي بسيار زيادي براي توصيف كنترل دسترسي روي مستندات XML از چند سال قبل انجام شده است. برخي از اين كوشش‌ها عبارتند از: تعريف و اجراي خط‌مشئ‌هاي كنترل دسترسي بر روي منابع XML [5]، كنترل دسترسي به مستندات XML توسط تعيين سطوح مجوزها و خط‌مشئ‌هاي انتشار مجوزها [6]، توصيف كنترل دسترسي براي اسناد XML كه ارتباط معنايي با هم دارند [22] و تعريف يك سيستم كنترل دسترسي در پايين‌ترين سطح براي مستندات XML [7]. كنترل دسترسي در پايين‌ترين سطح شامل توصيف موضوع‌هاي مجوز (كاربران يا گروه‌هاي كاربري و يا كامپيوترها)، اشياء مورد دسترسي (المان‌ها و محتواي المان‌ها) و تعيين مجوزهاي دسترسي مي‌باشد. تمركز در اين كار عموماً بر روي توصيف يك زبان براي تعيين محدوديت‌هاي كنترل دسترسي به مستندات XML و همچنين توصيف انواع مختلف خصوصيات و خط‌مشئ‌هاي مرتبط با آن مي‌باشد.
در اين پايان‌نامه روشي جديد مبتني بر نگاشت بيتي [8] و تابع دستور [9] جهت كنترل دسترسي در بانك اطلاعات XML پيشنهاد شده است. در روش پيشنهادي كنترل دسترسي را در پايين‌ترين سطح ايجاد مي‌كنيم. همچنين در روش پيشنهادي سعي شده است كه كنترل دسترسي بامعني ايجاد گردد. كنترل دسترسي با معني را با استفاده از الگوريتمي كه نقش‌ها را به نگاشت بيتي تبديل مي‌كند مهيا مي‌كنيم. در اين روش تلاش شده است كه مشكلات و نواقص روش تابع دستور و نگاشت بيتي مرتفع گردد.
در فصل اول اين پايان‌نامه پس از معرفي اجمالي بانك اطلاعات XML ، به امنيت در بانك اطلاعات XML مي‌پردازيم. در فصل دوم مدل‌هاي كنترل دسترسي كه براي بانك اطلاعات XML معرفي شده‌اند را بررسي مي‌كنيم. در فصل سوم روش پيشنهادي ارائه مي‌گردد. در فصل چهارم به پياده‌سازي و ارزيابي روش پيشنهادي مي‌پردازيم، و مقايسه‌اي بين مدل‌هاي مختلف كنترل دسترسي و روش پيشنهادي جهت استفاده در بانك‌هاي اطلاعات XML انجام خواهد گرفت. در فصل پاياني به نتيجه‌گيري و كارهاي آتي مي‌پردازيم.
فصل 2:
مروري بر منابع و پيشينه‌ي تحقيق
2-1- آشنايي با XML
زبان XML در سال 1997 توسط كنسرسيوم وب براي رفع محدوديت‌هاي موجود در HTML و اضافه كردن قابليت‌هاي جديد بوجود آمد [1]. تفاوت اصلي XML با HTML در اين است كه XML سعي دارد داده‌ها را طوري نشانه‌گذاري كند كه معناي آنها حفظ شود و در حاليكه HTML داده‌ها را طوري نشانه‌گذاري مي‌كند كه قابل نمايش براي مرورگرها باشد. در واقع XML يك استاندارد باز مي‌باشد و تاكيد آن بر روي معناي داده‌هاست در حاليكه تأكيد HTML بر نمايش داده مي‌باشد. XML. يك استاندارد پايه است كه وابستگي به رسانه‌ها، سيستم عامل‌ها و ديگر سيستم‌ها را ندارد. به منظور حفظ معناي داده‌ها، XML ابر داده1 كه توصيف كننده داده مي‌باشد را نيز همراه آنها ذخيره مي‌كند.
XML زير مجموعه ساده شده‌اي از زبان SGML مي‌باشد. زبان SGML يك زبان عمومي و پيچيده براي نشانه‌گذاري داده‌هاست كه در دهه 80 بوجود آمد و پدر زبان‌هاي نشانه‌گذاري محسوب مي‌شود. قابليت‌هاي زياد اين زبان آن را بيش از اندازه پيچيده كرده است، بطوري كه كنسرسيوم وب آن را بعنوان جانشين HTML مناسب ندانسته و تصميم گرفت زير مجموعه ساده شده‌اي از آن را با نام XML جانشين HTML كند. زبان XML در واقع يك ابر زبان ناميده مي‌شود. چرا كه كاربر بسته به نيازهايي كه دارد مي‌تواند با استفاده از آن زبان نشانه‌گذاري جديدي براي داده‌هايش ايجاد كند.
XML همچنين قادر است ساختار داده‌هاي ذخيره شده را نيز به‌همراه معناي آنها حفظ كند. اين زبان داراي هيچ برچسب از پيش تعريف شده‌‌اي نيست و تمامي برچسب‌ها برحسب نياز توسط كاربر تعريف مي‌شوند. قابليت‌هاي XML و اجزاء همراه آن، اين زبان را به زبان قابل حمل و استاندارد براي كاربردهاي مختلف تبديل كرده است.
فايل‌هاي XML داراي قابليت متني هستند به‌طوري كه مي‌توان آنها را در ويرايشگرهاي متني ويرايش كرد. يك فايل در XML از دو قسمت متن و علائم نشانه‌گذاري تشكيل شده است كه در قسمت متن داده‌هاي اصلي ذخيره مي‌شود و در قسمت علائم نشانه‌گذاري، ابرداده‌ توصيف كننده متن قرار مي‌گيرد. XML از يك سو با ذخيره فايل‌هايش در قالب متني و استفاده از علائم نشانه‌گذاري‏ فهم معناي داده‌هاي ذخيره شده را براي انسان ممكن مي‌سازد و از سوي ديگر با در اختيار قرار دادن اين فايل‌ها در يك قالب ساختيافته براي برنامه‌ها، پردازش آن را براي كامپيوتر ساده مي‌كند.
2-1-1- معرفي اجزاء اصلي XML
جزء اصلي تشكيل دهنده XML ، عنصر يا المان2 نام دارد كه شامل نام و محتوي مي‌باشد. محتواي يك عنصر بين دو علامت نشانه‌گذاري خاص با نام‌هاي برچسب شروع و برچسب پايان محصور مي‌شود. روش برچسب‌گذاري XML همانند HTML است كه در اصل HTML و XML اين روش را از SGML به ارث برده‌اند.
برچسب شروع شامل نام عنصر است كه بين دو علامت > و < قرار گرفته و برچسب پايان داراي علامت / اضافه شده قبل از نام عنصر مي‌باشد. براي مثال رشته زير نمايش دهنده عنصر tel در XML مي‌باشد كه محتواي آن شماره تلفن 77292512-21-0098 مي‌باشد.
<tel>0098-21-77292512</tel> ‌
هر يك از عناصر مي‌توانند داراي چندين صفت باشند كه هر صفت از يك زوج نام و مقدار تشكيل شده است. در مورد صفت نيز نحوه نگارش همانند HTML مي‌باشد به اين صورت كه صفات يك عنصر در داخل برچسب شروع آن عنصر قرار مي‌گيرند و بين هر صفت و مقدار آن علامت “=” قرار گرفته و مقدار صفت نيز مابين كاراكترهاي مشخص كننده رشته محصور شده است. براي مثال عنصر tel در مثال قبلي مي‌تواند شامل صفتي با نام Preferred به صورت زير باشد كه محتواي آن true است.
<tel prefered=”true”>0098-21-77292512</tel> ‌
محتواي عناصر محدود به متن نيست و عناصر مي‌توانند شامل عناصر ديگر باشند كه آنها نيز مي‌توانند شامل متن و عناصر ديگر باشند. به عبارت ديگر يك فايلXML درختي از عناصر است كه محدوديتي برعمق آن وجود ندارد و عناصر مي‌توانند در اين درخت بطور دلخواه تكرار شوند. براي نمونه يك فايل XML در شكل 2-1 آورده شده است.
شکل (2-1) نمونه‌اي از يك سند XML و اجزاء آن
هر سند XML، يك المان به عنوان المان بالاترين سطح (المان ريشه) خواهد داشت كه بقيه المانها درون آن قرار دارند. برچسب‌هاي شروع و پايان هميشه بايد با يكديگر وجود داشته باشند و فرزندان يك عنصر همواره بايد بطور كامل بين برچسب‌هاي شروع و پايان پدر خود محصور شده باشند. به عبارت ديگر نبايد برچسب‌هاي پايان فرزند بعد از برچسب پايان پدر خود ظاهر شود.
بايد توجه داشت كه كاراكترها در يك فايل XML مطابق استاندارد Unicode 2 مي‌باشند و بنابراين فايل‌هاي XML قادر به نمايش كاراكترهاي تمام زبان‌هاي زنده دنيا مي‌باشند كه اين يكي از مزاياي XML براي كاربردهاي مبادله داده مي‌باشد. البته به اين دليل كه كاراكترها در استاندارد Unicode به صورت دوبايتي كد مي‌شوند مي‌توان براي جلوگيري از افزايش حجم فايلهاي XML آنها را با استفاده از استانداردهاي ديگر مانند UTF-8 و يا ISO 8859-1 كه اولي مخصوص كاراكترهاي انگليسي و ديگري مخصوص كاراكترهاي لاتين است، نيز كد كرد.
2-1-2- مدل درختي XML
ساختار سندهاي XML به صورت درختي است (البته در برخي موارد به صورت گراف نيز مشاهده مي‌شود). اين ساختار درختي به DOM (Document Object Model) معروف است. همچنين اين درخت، يك گراف فاقد حلقه (DAG) نيز مي‌باشد. در اين ساختار درختي، در ريشه درخت اولين گره از سند و در برگ‌هاي اين درخت، مقدارها و متن‌هاي موجود در سند XML قرار مي‌گيرند. فرزندان هر گره زير المانها و يا صفات آن المان هستند كه به ترتيب موجود در سند XML قرار مي‌گيرند و هر گره تنها يك پدر دارد (بجز ريشه). گره‌هاي مياني مي‌توانند عنصر و يا صفت باشند (در مدل درختي هر دوي اين‌ها يكي در نظر گرفته مي‌شوند). همه مفاهيم كلي درخت نظير همزاد3، پدر، فرزند، جد4 و … در مورد اين ساختار درختي صادق هستند. شكل 2-2 مدل درختي سند بالا را نشان مي‌دهد.
شکل (2-2) ساختار درختي سند XML
2-1-3- مفهوم شِما در XML
همراه هر سند در زبان XML بايد يك ساختار بنام شِما5 باشد. هدف اين شِما اعتبارسنجي براي سندXML است، سندي را اصطلاحاً معتبر و يا خوش‌فرم6 مي‌گويند كه با شِماي خود مطابقت كند. از مهمترين ويژگي‌هاي XML اين است كه ساختيافته نيست، يعني الزامي وجود ندارد که شِماي يك سند XML مشخص باشد زيرا خود- تعريف است. با اين حال براي تبادل داده‌هاي XML، به خصوص در تفسير داده‌هاي دريافتي، شِما اهميت زيادي خواهد داشت. اصولاً شِماي يك سند را مي‌توان به دو صورت زير تعريف كرد:
* مبتني بر گرامر7، كه بر اساس يكسري از علائم تعريف مي‌شود.
* ساختار درختي8، كه اين ساختار شبيه به درخت DOM است.
دو مكانيزم اصلي تعريف شِما در XML عبارتند از:
1. Document Type Definition (DTD) ، كه بسيار رايج و مرسوم است.
2. XML Schema ، كه جديدتر و پيچيده‌تر از DTD مي‌باشد.
در DTD ساختار و شماي XML را از نظر المان‌هاي موجود، صفات و زيرالمان‌هاي هر المان مشخص مي‌نمائيم اما هيچ محدوديتي راجع به نوع داده‌ها تعيين نمي‌كنيم زيرا در XML تمام مقادير از نوع رشته مي‌باشند. شکل کلي DTD براي تعيين ساختار المان‌ها به صورت زير است:
<! ELEMENT element_name (subelements_specification)> ‌
كه در آن element_name نام المان يا همان بر چسب مربوط به المان را نشان مي‌دهد و درون پرانتز، ليست نام زيرالمان‌هاي آن كه با يك کاما از هم جدا مي‌شوند مشخص مي‌گردد. در بخش subelements_specification به جاي نام زير المان‌ها، مي‌توان از كلمه كليدي #PCDATA كه معرف رشته كاركتري بودن مقدار آن المان است (که براي همه المان‌هاي داراي مقدار، اينگونه خواهد بود)، استفاده کرد يا از EMPTY و يا ANY به ترتيب به معناي “فاقد زير المان” و “هر چيزي به عنوان زير المان”.
اصول نگارشي در DTD شبيه به عبارات منظم است، لذا مي‌توان تعداد دفعاتي كه چنين الماني مي‌تواند در المان خارجي‌تر خود وجود داشته باشد را نيز نشان داد. نمادهاي زير را مي‌توان با توجه به مفهوم آنها در بخش subelements_specification بكار برد:
| : ياي انتخابي
+ : يک يا بيشتر
* : صفر يا بيشتر
براي مثال در زير يك قسمت از يك DTD آورده شده است:
<! ELEMENT edu (book*)>
<! ELEMENT book (title, authors+, chapter*, ref*, CD*)>
<! ELEMENT chapter (text | section)*>
<! ELEMENT ref book>
<! ELEMENT title #PCDATA>
<! ELEMENT author #PCDATA>
<! ELEMENT section #PCDATA>
<! ELEMENT text #PCDATA>
براي تعيين ساختار صفت‌ها از شکل کلي زير استفاده مي‌شود:
<! ATTLIST element_name (attributes_specification)> ‌
attributes_specification شامل نام و نوع صفت مورد نظر مي‌باشد. نوع صفت يا CDATA است يا يكي از اين سه مقدار ID ، IDREF ، IDREFS .
به عنوان مثال در زير نمونه‌اي از يك ساختار صفت نشان داده شده است.
<! ATTLIST price CDATA “$ 37.0”> ‌
XML Schema روش جديدي است كه W3C منتشر كرده است. اصول نگارشي آن تا حد زيادي شبيه به كدنويسي به زبان XML است. اين روش كه مشكلات روش DTD را رفع مي‌کند، بسيار پيچيده‌تر از آن مي‌باشد، به گونه‌اي كه هنوز به طور رايج از آن استفاده نمي‌شود. مهمترين امكانات تعبيه شده در XML Schema عبارتند از:
* مقادير مي‌توانند انواعي مثل string ، integer و … داشته باشند.
* مي‌توان حداقل و حداكثر مقدار را نيز تعيين نمود.
* كاربر مي‌تواند انواع داده مورد نظر خود را تعريف نمايد.
* بر خلاف DTD، شکل کلي خودش نيز با XML مشخص مي‌شود.
شكل 2-3 نمونه‌اي از يك شماي XML كه با اين متدولوژي ايجاد شده است را نشان مي‌دهد.
شکل (2-3) نمونه‌اي از يك شماي XML در XML Schema
2-2- رابطه XML و پايگاه داده‌ها
زماني كه براي اولين بار XML ارائه شد، از آن به عنوان يك مدل داده‌اي براي مبادله اطلاعات ياد كردند. دليل اينكه براي مبادله اطلاعات از اين مدل درختي استفاده مي‌شد، اين بود كه XML به عنوان يك زبان بي‌طرف مطرح بود و بيشتر مدل‌هاي داده‌اي (درختي، رابطه‌اي و شئ‌‌گرا و … ) مي‌توانستند داده‌هاي خود را به اين مدل تبديل كنند و بالعكس، از اين مدل‌ داده‌هاي خود را استخراج كنند.
پس از مدتي تعداد اين اسناد بسيار زياد شد و ايده‌اي كه مطرح شد اين بود كه خود سندهاي XML را به عنوان داده (و حتي در مواردي خود پايگاه داده) در نظر بگيريم. اين نگرش باعث شد كه دو نوع از اين بانك‌هاي اطلاعات پديدار شود [10]:
* بانك اطلاعات ذاتاً XML9
* بانك اطلاعات پشتيبان XML 10
2-2-1- بانك اطلاعات پشتيبان XML
بعد از اينكه XML فراگير شد و نياز به ذخيره‌سازي اين سندها بيش از پيش حس شد، بسياري از نرم‌افزارهاي شركت‌هاي معتبر در زمينه بانك‌هاي اطلاعات مانند Oracel ،MS SQL Server ، DB2 و … سعي كردند كه تغييراتي در سندهاي XML بدهند و آنها را در همان جداول ذخيره كنند. در نتيجه به پايگاه داده خود يك لايه جديد اضافه كردند كه آن لايه مسئوليت تبديل داده‌هاي XML به داده‌هاي رابطه‌اي را برعهده داشت. كامپايلر اين لايه يك فاز اضافه نيز داشت كه پرس‌وجوهايي كه به زبان XPath و يا XQuery داده مي‌شد را تبديل به SQL مي‌كرد.
در اين بانك‌هاي اطلاعات، ذخيره‌سازي به صورت رابطه مي‌باشد. در اين نوع بانك‌هاي اطلاعات بايد داده‌هاي XML را به فرم رابطه تبديل نمائيم. مهمترين مزيت اين روش اين است كه از آن پس با يك سيستم بانك اطلاعات رابطه‌اي سروكار خواهيم داشت و از امكانات وسيع آن بهره خواهيم جست. عيب بزرگ اين روش سربار انجام تبديلات لازم براي داده‌ها و پرس‌وجوهاست. مي‌توان از مدل‌هاي ديگر مثل شئ‌گرا و شئ‌- رابطه‌اي نيز بجاي مدل رابطه‌اي استفاده نمود.‌
2-2-2- بانك اطلاعات ذاتاً XML
پايگاه‌داده‌هاي قبلي براي ذخيره‌سازي داده‌هاي XML و همچنين براي پاسخ به پرس‌وجوهاي XML داراي مشكلاتي بودند. براي مثال زماني كه جواب يك پرس‌وجو تكه‌هايي از يك سند كه ساختارهاي متفاوتي داشتند باشد، لايه مبدل نمي‌تواند جواب‌ها را ادغام كند و به صورت جداگانه به كاربر بر‌گرداند. از اين‌رو تعدادي از بانك‌هاي اطلاعات با شماي درختي ساخته شدند. هدف اين بانك‌هاي اطلاعات توليد يك DBMS براي سندهاي XML بود كه همه قابليت‌هاي بانك اطلاعات رابطه‌اي را داشته باشد.
در اين بانك‌هاي اطلاعات ذخيره‌سازي اطلاعات به صورت غير رابطه‌اي بوده و اساساً مدل داده‌اي، XML مي‌باشد [25، 26]. در حال حاضر سيستمي تجاري با اين مشخصه رايج و مرسوم نمي‌باشد. البته نمونه‌هايي از قبيل TIMBER ، XTC و Qizx/db [11] ساخته شده و در بسياري از پروژه‌هاي كاربردي استفاده شده‌اند، اما هركدام داراي نواقص و مشكلاتي خاص مي‌باشند.
مزاياي بانك‌ اطلاعات ذاتاً XML بازيابي ساده اطلاعات، حفظ ساختار اصلي، عدم نياز به ترجمه و نگاشت، ماهيت نيمه‌ساختيافته اطلاعات و سرعت بالاي دستيابي مي‌باشد. مهمترين معايب اين گونه بانك‌هاي اطلاعات عبارتند از [11]:
1. پيچيدگي مديريت و نگهداري داده‌هاي غير XML .
2. عمل كنترل همزماني در يك سند به راحتي امكان‌پذير نمي‌باشد.
3. مشكل به‌ روزرساني همچنان بي‌پاسخ مانده است، به طوري كه برخي از اين بانك‌هاي اطلاعات طبق شرايط خاص اجازه به روزرساني را مي‌دهند.
4. پرس‌وجوها ناكارآمد و وقت‌گير هستند.
5. فقدان سيستم‌هاي تجاري رايج.
6. ساختار پيچيده با تودرتويي زياد.
7. كمرنگ بودن امنيت
2-2-3- انواع ذخيره‌سازي در XML
سندهاي XML را مي‌توان با توجه به نوع ذخيره‌سازي اطلاعات به دو گروه تقسيم كرد. مبتني بر داده11 و مبتني بر متن12 . سند مبتني بر داده داراي عناصري است كه تا حد زيادي داراي نظم و ترتيب هستند و از يك ساختار پيروي مي‌كنند. براي مثال اگر داده‌هاي موجود در جداول را به صورت درخت XML در نظر بگيريم، اين ساختار يك ساختار منظم مي‌باشد.
سندهاي مبتني بر متن از هيچ قاعده و اصولي پيروي نمي‌كنند، براي مثال بسياري از صفحات اينترنتي داراي يك چنين ساختاري هستند. بانك‌هاي اطلاعات XML براي ذخيره و بازيابي اين نوع از اسناد داراي مشكلات زيادي هستند. براي مثال تعريف يك عنصر كه بيش از چند مگابايت حافظه نياز دارد و يا پاسخ به پرس‌وجوها در اين سند بسيار سخت خواهد بود.
2-2-4- انواع زبان‌هاي پرس‌وجو در XML
يك تفاوت عمده ميان داده‌هاي XML و داده‌هاي بانك‌هاي اطلاعات رابطه‌اي وجود دارد. در بانك‌هاي اطلاعات رابطه‌اي وجود يك زبان استاندارد براي پرس‌وجو مانند SQL علاوه بر اين كه مقبوليت عام را بدست آورده است، براي تمامي پرس‌وجوها در اين پايگاه‌هاي داده كاربرد دارد. ولي در دنياي XML قضيه فرق مي‌كند. زبان‌هاي پرس‌وجوي زيادي مانند XML-QL ، XPath ، XQuery و XQL [11] وجود دارند، كه هيچ كدام از اينها نتوانسته‌اند به عنوان يك استاندارد كلي براي همگان مقبوليت عام داشته باشند. حتي W3C نيز نتوانسته يكي از اين زبان‌ها را به عنوان زبان پرس‌وجوي رسمي در سندهاي XML مطرح نمايد. ولي براي كساني كه با XML كار مي‌كنند دو زبان XQuery [23] و XPath [24] آشناتر و پذيرش گسترده‌تري داشته است. ما در ادامه به‌طور مختصر اين دو زبان را شرح مي‌دهيم.
* زبان پرس‌وجوي XPath
در اين زبان براي انتخاب هر داده از يك سند XML، از عبارت مسيري13 متناظر با آن داده استفاده مي‌شود. ساختار اين زبان بيشتر شبيه به آدرس‌دهي فايل‌ها در محيط سيستم عامل مي‌باشد. هر عبارت مسيري دنباله‌اي از مراحل است كه از المان ريشه شروع شده و با / از هم جدا مي‌شوند و نتيجة آن مجموعه مقادير (المانها يا صفات) متناظر با آن مسير خواهد بود. هر مرحله از عبارت مسيري، روي نتيجه مرحله قبل عمل مي‌كند. براي نمونه به پرس‌وجوي زير دقت كنيد.
Root//a /b /c[@age=25]
اين پرس‌وجو به دنبال cهايي مي‌گردد كه داراي صفتي بنام age با مقدار 25 باشند و همچنين اين cها فرزند b و نوه a كه اين گره نيز نسلي از گره ريشه است، باشند.
توابع و عملگرهاي زيادي در XPath پشتيباني مي‌شوند (مثل تابع count() ). با استفاده از نماد گذاري مرسوم در سيستم فايل‌هاي سيستم عامل، مي‌توانيم به هر يك از گره‌هاي فرزند، پدر، همزاد، جد يا نوة گره مرحله قبل برويم. مثلاً با // كه معني پرش از چندين مرحله را مي‌دهد مي‌توان تمام نوه‌هاي يك گره را بدست آورد و يا .. كه پدر يک گره را نشان مي‌دهد و مشابه اينها.
* زبان پرس‌وجوي XQuery
اين زبان بيشتر شبيه به SQL است و براي برنامه‌نويسان آشناتر است. ساختار يك پرس‌وجو در زبان XQuery (به نام عبارت FLWOR)، شامل بخش‌هاي زير مي‌باشد:‌
For … Let … Where … Order by … Return … ‌
For، Where و Return به ترتيب معادل عبارات From، Where و Select در زبان SQL هستند و Let كه معادلي در SQL ندارد، براي تعريف متغييرهاي موقتي لازم بكار مي‌رود. در بخش For از عبارات مسيري استفاده مي‌شود و نتيجه محاسبه شده آنرا در يك متغير مي‌ريزند. با كمك بخش‌هاي Whereو Letداده خاص مورد نظر را از اين متغير جدا كرده و اين داده را در عبارت Return، توسط برچسب‌هاي مناسب و در قالب مورد نظر برمي‌گردانند.
توابع زيادي از جمله distinct()(براي حذف جواب‌هاي تكراري)، count()، sum()و … در XQuery قابل استفاده مي‌باشند. در XQuery عملگر گروه‌بندي (group by) پشتيباني نمي‌شود اما مي‌توان با استفاده از عبارت FLWOR درون عبارت Return (يعني FLWOR تودرتو)، جواب‌هاي محاسبه شده را مطابق آنچه كه خواسته شده است گروه‌بندي نمود.
براي مثال كد ذكر شده در مثال قبل را به زبان XQuery مي‌نويسيم.
For $c in a/b/c
Let $a := $c/@age
Where $c/age =25
Return <c>$a</c>
2-3- امنيت در بانك اطلاعات
امنيت در بانك اطلاعات را محافظت از تلاش‌هاي تبهكارانه براي سرقت، تغيير و يا تخريب داده‌هاي بانك اطلاعات تعريف مي‌كنند [11]. امنيت از جمله مفاهيمي است كه بايد در تمام لايه‌هاي يك سيستم كامپيوتري اعم از سخت افزار، شبكه، سيستم عامل، بانك اطلاعات و … آن را لحاظ نمود. تهديدات امنيت به دو صورت عمدي و غير عمدي هستند. دستة اول شامل تمام تهديداتي است كه نتيجه تخلف عمدي كاربران و يا برنامه‌ها است. اين كاربران مي‌توانند كاربران مجاز سيستم و يا كاربران خارجي (كه مي‌توانند به صورت غير مجاز به سيستم و منابع آن دسترسي داشته باشند) باشند. برنامه‌ها نيز مي‌توانند هر برنامه محلي و يا هر برنامه از راه دور (شامل ويروس‌ها يا اسب‌ها تراوا و…) باشند. دستة دوم شامل تهديداتي است که بر اثر ناآگاهي يا عدم دقت و کوتاهي افراد و نارسائي و کيفيت پايين برنامه‌ها رخ مي‌دهد.
هنگامي كه صحبت از يك بانك اطلاعات امن به ميان مي‌آيد معمولاً سه هدف زير در رابطه با آن مطرح مي‌شود:
1- محرمانگي14 : محرمانگي به صورت عدم دسترسي كاربران غير مجاز به اطلاعات تعريف مي‌شود. به عنوان مثال يك دانشجو نبايد اجازه مشاهدة اطلاعات ساير دانشجويان را داشته باشد.
2- جامعيت15: فقط كاربران مجاز مي‌توانند داده‌هاي مربوطه را تغيير دهند. به عنوان مثال دانشجويان مي‌توانند نمرات خود را ببيند اما اجازه تغيير آن را ندارند. جامعيت به صورت جلوگيري از تغيير، حذف و يا دخالت ناخواسته و نادرست در اطلاعات نيز تعريف مي‌شود.
3- دسترس پذيري16: مجوز كاربران مجاز نبايد به طور ناخواسته قطع شود. به عنوان مثال استاد درسي كه اجازه تغيير نمرات را دارد همواره بايد بتواند اين عمل را انجام دهد.
براي رسيدن به سه هدف فوق بايد سياست‌هاي امنيتي واضح و مشخصي تدوين گردد. به عبارت ديگر بايد به طور كامل و صريح روشن گردد که چه بخش يا بخش‌هايي از داده‌ها بايد محافظت شوند و چه كاربراني اجازه دسترسي به چه قسمتهايي از داده‌ها را دارند.
براي برقراري امنيت در سيستم بانك‌اطلاعات، ابتدا با كمك مكانيزم‌هاي تصديق هويت كاربر مثل كلمة عبور اطمينان حاصل مي‌كنيم كه كاربر وارد شده به سيستم يك كاربر مجاز مي‌باشد. البته اين امكان نيز وجود دارد که كاربري غير مجاز به نحوي بتواند مجوز ورود را به دست آورد (مثلاً از کلمة عبور يک کاربر مجاز استفاده کند). در مرحله بعد كه مطئمن هستيم كاربري كه وارد سيستم شده اجازه ورود داشته است، با مكانيزم‌هاي کنترل دسترسي (مجوز دهي به كاربر)، فقط مجوزهاي دسترسي به داده‌هاي به خصوصي كه مي‌تواند به آنها دسترسي داشته باشد را به او تخصيص مي‌دهيم. اما اين كاربر مجاز ممكن است روي همان داده‌هاي مجاز خود نيز تغييرات غير مجاز انجام دهد (مثل قرار دادن عددي منفي در صفت سن). مقابله با چنين تهديداتي به تضمين جامعيت سيستم برمي‌گردد كه با قرار دادن قيود جامعيت، استفاده از مكانيزم‌هايي مثل assertion، trigger و…. از داده‌هاي بانك‌اطلاعات مراقبت مي‌نمائيم.
در بانك‌هاي اطلاعات نامتمركز بخشي از امنيت بانك به تبادل اطلاعات و ذخيره‌سازي آنها بستگي دارد. به عبارت ديگر در يك بانك اطلاعات نامتمركز، به دليل انتقال داده‌ها در شبكه و به‌خصوص بين گره‌هاي مديريت بانك اطلاعات، مي‌بايست داده‌هايي كه بين گره‌هاي مختلف شبكه در تبادل هستند را از ديد افراد و كاربران مخفي نمود و با مكانيزم‌هايي داده‌ها را كد و رمز نگاري كرد. رمزنگاري امنيت كانال‌هاي ارتباطي را برقرار مي‌كند. ايده اصلي رمزنگاري داده‌ها استفاده از الگوريتم‌هاي رمز نگاري و نيز يك كليد رمز نگاري مخصوص مدير بانك‌اطلاعات است كه به صورت امن نگاه داشته مي‌شود. خروجي يك الگوريتم رمزنگاري، نسخه رمز شده داده‌هاي ورودي است. به همين ترتيب الگوريتم‌هاي رمز گشايي براي باز كردن داده‌هاي رمز شده و برگرداندن آنها به حالت اوليه است.
در بانك‌هاي اطلاعات XML و به‌خصوص بانك‌هاي نامتمركز، اغلب به دليل ذخيره‌سازي اطلاعات به فرمت رشته، عمل رمزنگاري داده‌ها جهت انتقال و همچنين ذخيره‌سازي بسيار الزامي مي‌باشد. در اينجا ما به بحث رمزنگاري وارد نمي‌شويم و فقط روش‌هاي رمز نگاري را كه به دو دسته كلي متقارن و نامتقارن تقسيم مي‌شوند را اجمالاً بيان مي‌كنيم.
* روش رمزنگاري متقارن: در روش رمزنگاري متقارن، فرستنده و گيرنده از يك كليد سري مشترك براي رمزنگاري و رمزگشايي استفاده مي‌كنند. روشData Encryption Standard (DES) مثالي از رمز نگاري متقارن است. بديهي است كه براي دو طرف ناشناس توافق بر روي يك كليد سري مشترك دشوار است. بنابراين اين روش مورد استفاده كمتري دارد.
* روش رمزنگاري نامتقارن: روش ديگر، روش رمزنگاري نامتقارن است. در اين روش هر فرد دو كليد در اختيار دارد، كليد عمومي كه آزادانه منتشر مي‌شود و كليد خصوصي كه به صورت خصوصي و كاملا محرمانه نگهداري مي‌شود. در اين روش، فرستنده داده‌ها را با كليد عمومي رمز كرده و به گيرنده ارسال مي‌كند. داده‌هاي رمز شده تنها با كليد خصوصي گيرنده قابل رمز گشايي هستند و از آنجاييكه كليد خصوصي هر شخص منحصر به فرد است و به طور كاملاً امن نگه داشته مي‌شود، شخص ديگري نمي‌تواند اين اطلاعات را رمزگشايي كرده و يا از آنها استفاده نمايد. اين روش از امنيت بالايي برخوردار است و مورد استفاده فراواني دارد. به‌عنوان نمونه الگوريتم‌‌هاي معروف RS2 ، MD4 و MD5 از اين روش استفاده مي‌كنند.
در قسمت بعدي مدل‌هاي كنترل دسترسي را بررسي خواهيم كرد. در اينجا فرض مي‌كنيم كه سنجش‌هاي اوليه براي تاييد اعتبار كاربر و همچنين ارسال مطمئن اطلاعات برروي شبكه انجام مي‌شود.
2-4- مدل‌هاي كنترل دسترسي در بانك اطلاعات XML
مديريت كنترل دسترسي يكي از اصول سيستم پايگاه داده‌ها مي‌باشد. مديريت كنترل دسترسي در بانك‌هاي اطلاعات توسط سرويس‌دهنده‌ها انجام مي‌پذيرد. كنترل دسترسي بنابر عوامل مختلف به سرعت تحول يافته است. مدل‌هاي كنترل دسترسي را مي‌توان به دو گروه سنتي و توسعه يافته تقسيم بندي نمود. در گروه سنتي دو مدل كنترل دسترسي محتاطانه17 و الزامي18 قرار دارند كه مدل‌هاي پايه و زيربنايي به حساب مي‌آيند. مدل‌هاي گروه توسعه يافته در واقع مدل‌هايي مي‌باشند كه بر پايه مدل‌هاي سنتي بنا شده و آنها را به نوعي توسعه داده و مشكلاتشان را رفع نموده‌اند. در ادامه به بيان اجمالي مدل‌هاي كنترل دسترسي مي‌پردازيم.
2-4-1- مدل كنترل دسترسي محتاطانه
در اين مدل، دسترسي كاربران به بانك‌‌اطلاعات بر اساس هويت كاربران (ID) و قوانيني به نام اجازه ورود (مجوز) كنترل مي‌شود [11]. در اينجا براي هر كاربر (يا گروهي از كاربران) نوع دسترسي‌هاي آنها به هر شئ موجود در بانك مشخص مي‌شود. نوع اين اشياء بستگي به بانك اطلاعات دارد. در مدل رابطه‌اي، اشياء مي‌توانند رابطه‌ها (جداول)، ديدها، صفت‌ها و در صورت لزوم ركوردها باشند. در مدل شئ‌گرايي مي‌توانند شامل كلاس‌ها، اشيا و متدها باشند و در بانك اطلاعات XML مي‌توانند مستندات، مسيرها و عناصر باشند.
كنترل‌هاي قابل اجرا بر روي اشياء معمولاً در دو سطح صورت مي‌گيرد: يكي در سطح حساب كاربري كه امتياز توسط مدير بانك‌اطلاعات اعطا مي‌شود و ديگري در سطح اشياء كه امتياز اعطاء شده فقط براي بخشي از شئ خاص مي‌باشد. بر اين اساس معمولاً انواع مجوزهايي كه به يك كاربر داده مي‌شود به صورت زير است:
* در سطح داده‌ها:
* مجوز read : اجازه خواندن داده‌ها را مي‌دهد ولي اجازه تغيير داده‌ها را نمي‌دهد.
* مجوز insert : اجازه درج داده جديد را مي‌دهد.
* مجوز update : اجازه تغيير داده‌ها را مي‌دهد.
* مجوز delete : اجازه حذف داده‌ها را مي‌دهد.
* در سطح شِما:
* مجوز index: اجازه ايجاد يا حذف شاخص‌ها را مي‌دهد.
* مجوز resource: اجازه ايجاد رابطه‌هاي جديد را مي‌دهد.
* مجوز alteration: اجازه اضافه يا حذف صفات رابطه را مي‌دهد.
* مجوز drop: اجازه از بين بردن رابطه‌ها را مي‌دهد.
معمولاً يك مجوز به صورت يك سه تايي (subject, mode, object) نمايش داده مي‌شود كه بيان كننده روش دسترسي (mode) يك كاربر يا فرآيند (subject) به يك شئ ((object مي‌باشد. بنابراين هر درخواستي كه از طرف كاربر داده مي‌شود ابتدا مجوز آن بررسي شده و در صورت وجود سه تايي مربوطه، اجازه دسترسي داده مي‌شود. در اين مدل دو نوع خط‌مشئ تعريف مي‌شود:
1. خط‌مشئ بسته: در اين نوع خط‌مشئ دسترسي‌هايي اجازه داده مي‌شود كه مجوز صريح آنها موجود باشد و تصميم پيش فرض اين است كه دسترسي رد شود. اكثر سيستم‌ها از سياست‌هاي بسته پشتيباني مي‌كنند.
2. خط‌مشئ باز: در اين خط‌مشئ، مجوز منفي داده مي‌شود و در صورت وجود آن، اجازه دسترسي داده نمي‌شود و تصميم پيش فرض (در صورت عدم وجود مجوز منفي) اين است كه دسترسي قبول شود. سياست باز فقط در سيستم‌هايي استفاده مي‌شود كه حفاظت محدود نياز دارند و اكثر دسترسي‌ها اجازه داده مي‌شود.
2-4-2- مدل كنترل دسترسي الزامي
براي حل مشكلات بالقوه موجود در روش كنترل دسترسي محتاطانه، از روش كنترل دسترسي الزامي استفاده مي‌شود [11]. معروف ترين مدل كنترل دسترسي الزامي، مدل Bell-LaPadula است. در اين مدل پديده‌هاي سيستم به چهار دسته زير مي‌شوند:


پاسخ دهید