به نام خدا دانشگاه صنعتی شریف -دانشکده مهندسی کامپیوتر ترم اول سال تحصیلی ۴۹-۴۹ پروژه در قالب گروه های دو نفری انجام میشود. پاسخ تمرینات خود را به آدرس ffani@ce.sharif.eduارسال نمایید. پاسخ ها در قالب یک فایل zipبوده و نام آن و عنوان ایمیل ارساالی با فرم DBSec-93-p1-StdID1-stdID2ارسال گردد .در فاز دوم p2جایگزین p1شاود .در فایل ارساالی باید فایل باینری تولید شاده و یک مستند فنی در مورد طراحی و نحوهی پیاده سازی قرار داشته باشد. مهل ارسال فاز اول تمرین تا 51آذر و برای فاز دوم 51دی میباشد. هر فاز این تمرین دارای یک ارایه حضوری میباشد که تاریخ آن متعاقبا اعالم خواهد شد. ارسال پاسخها به ازای هر روز تاخیر شامل ٪51کسر نمره خواهد شد. هرگونه سوال یا ابهام خود را به ایمیل ffani@ce.sharif.eduو یا amnoury@ce.sharif.eduارسال کنید. عنوان پروژه : پیاده سازی تفکیک وظایف 5در سمپادPostgreSQL 2 فازهای پروژه: فاز اول :پیاده سازی SSOD فاز دوم :پیاده سازی DSODو مقابله با SQL Injection امکانات اضافی Log Monitoring :و مقابله با حمله ی DOS۹ 1 Separation Of Duty DBMS 3 Denial Of Service 2 هدف از این پروژه آشنایی با سمپاد PostgreSQLو ارائه ی مکانیزمی برای کنترل دسترسی در آن اس .برای این منظور ،در ابتدا الزم اس تا دانشجویان در مورد این سمپاد و نیز مکانیزم های کنترل دسترسی آن اطالع یابد .همچنین بایستی دانشجویان در مورد مدل کنترل دسترسی RBACآشنایی کامل پیدا کنند .هدف نهایی این پروژه ،پیاده سازی الیه ی واسط RBAC3بر روی سمپاد PostgreSQLاس . فاز اول: خروجی این مرحله ،یک فایل اجرایی اس .این فایل اجرایی ،کارکردی مشابه یک ( Proxyیا ) Gatewayدارد .تمامی ارتباطات به سمپاد توسط تمامی کاربران ،بایستی از طریق این Proxyهدای شود .به بیان دقیق تر ،Proxy ،یک الیه ی واسط کنترل دسترسی را بر روی سمپاد پیاده سازی میکند که این الیه ی واسط ،مدل ساده شده ای از RBAC3اس .این واسط بایستی حداقل ،توابع و عملکردهای زیر را فراهم کند: .5 امکان احراز اصال وجود داشته باشد تا افراد غیرمجاز قادر به استفاده از سیستم نباشند. .2 مدیر پایگاه داده بایستی قادر باشد اعمال زیر را انجام دهد: اجرای هر نوع پرس و جو (همانند حالتی که هیچ واسطی وجود ندارد) تعریف کاربران ۹ تعریف نقش ها تعریف و ویرایش ساختار سلسله مراتب نقش ها اِعمال محدودی تفکیک وظایف ایستا 1از طریق تعریف نقش های ناسازگار 6 انتصاب کاربران به نقش ها تعریف مجوزها 7 انتصاب مجوزها به نقش ها .۹ کاربران عادی نیز بایستی بتوانند بر اساس نقشی که دارند ،فقط اعمال مجاز تعریف شده برای نقششان (با در نظر گرفتن سلسله مراتب نقش ها) را انجام دهند. منظور از نقش های ناسازگار ،آن هایی هستند که با هم یک وظیفه 8را انجام می دهند و نباید همه ی این نقش ها توسط یک نفر ایفا شود. توجه کنید که در این مرحله نیازی به پیاده سازی مفهوم نشس ۴ندارید. 4 User )Static Separation Of Duty (SSOD 6 Mutually Exclusive Roles 7 Permissions 8 Duty 9 Session 5 نکات پیاده سازی: محدودیتی در زبان برنامه نویسی مورد استفاده وجود ندارد. برای اتصال به سمپاد می توانید از xDBCمربوط به آن زبان استفاده کنید (مانند JDBCبرای جاوا) محدودیتی در نوع واسط دسترسی Proxyوجود ندارد)Shell, GUI, Web Interface( . تمامی فراداده ها باید در جداول PostgreSQLذخیره شده باشد و استفاده از فایل مجاز نیس . سطح ریزدانگی مجوزهای دسترسی در پایگاه داده در سطح جدول اس . به هنگام تعریف و ویرایش ساختار سلسله مراتب نقش ها ،بایستی سازگاری آن با مجموعه نقش های ناسازگار بررسی شود( برعکس آن نیز صادق اس ) .در صورتی که تعریف نقشی در ساختار سلسله مراتبی باعث نقض محدودی SSODشود ،سیستم بایستی مانع از انجام این کار شود .همچنین به هنگام تعریف نقش های ناسازگار ،بایستی ساختار سلسله مراتبی را نظر گرف . برای مثال اگر در ساختار سلسله مراتبی نقش R1از نقش R2ارث ببرد ،تعریف این دو نقش به عنوان نقش های ناسازگار ،بی معنی اس و سیستم بایستی مانع این کار شود. به منظور سادگی پیاده سازی ،به هنگام اعمال محدودی ، SSODنقش های موجود در مجموعه نقش های ناسازگار را ،دو به دو ناسازگار در نظر بگیرید .برای مثال اگر مجموعه ی ناسازگار { }R1, R2, R3را داشته باشیم ،کاربر می تواند حداکثر به یکی از نقش های R1یا R2و یا R3انتصاب یابد. برای کسب اطالعات بیشتر در مورد مفاهیم اشاره شده ،به توضیحات RBAC3در سند رسمی آن مراجعه کنید .توصیه می شود برای پیاده سازی دقیق ،تعاریف فرمال مفاهیم اشاره شده را مد نظر بگیرید. فاز دوم: بخش اول: در این بخش ،بایستی محدودی تفکیک وظایف پویا 50پیاده سازی شود .در نتیجه بایستی مفهوم نشس را در پیاده سازی مد نظر قرار داد. Proxyبایستی برای کاربران به هنگام ورود به سیستم ،یک نشس تعریف کند .بر اساس محدودی ، DSODکاربر در یک نشس نمیتواند بیش از یک نقش از نقشهای ناسازگار (نقش های موجود در یک ) dutyرا فعال کند .درصورتی که کاربر بدون Disconnectشدن از Proxyنقشش را عوض کند ،سیستم باید چک کند که محدودی DoSDکماکان برقرار اس . بخش دوم: در این بخش دانشجو باید با مفهوم SQL Injectionآشنا شده و سیستم طراحی شده را تا حد امکان در مقابل این سبک حمالت مقاومسازی کند .برای این کار رویکردهای زیادی وجود دارد که چند مورد از معروف ترین آنها Parameterized Statement Input Validation Stored Procedure - میباشند .دانشجو میتواند با استفاده از یک یا چند مورد از این رویکردها تا حد امکان به امنسازی سیستم بپردازد. نکات پیاده سازی: برگردان نقش هر کاربر فعال و چک کردن شروط بر عهده Proxyاس . راهکارهای امنسازی در برابر تزریق SQLامکان دارد هم وابسته به زبان باشد و هم مستقل. راهکارهای امنسازی در برابر تزریق SQLمیتوانند هم در داخل کد باشد و هم در فاز طراحی. Dynamic Separation Of Duty 10 سناریوی فرضی نقش های { }R1, …, R10و سلسله مراتب نقش های زیر را در نظر بگیرید: روند ارث بری از باال به پایین اس .یعنی نقش پایینی ،مجوزهای نقش باالتر را به ارث می برد .مثال R9همه ی مجوزهای R6را به ارث می برد .فرض کنید در ساختار سلسله مراتبی باال ،نقش هایی که ناسازگار هستند به صورت زیر هستند: - {}R2,R3 - {}R7,R4 تفکیک وظایف ایستا بدین معنی اس که برای مثال ،نباید فردی هم به نقش ( R2و نقش های فرزند آن) و هم نقش ( R3و فرزندش) انتصاب یابد .سیستم باید مانع از اینکار شود. تفکیک وظایف پویا بدین معنی اس که برای مثال ،فردی می تواند هم به نقش R2و هم به نقش R3انتصاب یابد ولی در یک نشس نمی تواند همزمان از هر دو نقش استفاده کند و سیستم باید مانع از اینکار شود. موفق باشید.
© Copyright 2025 Paperzz