Project-DBSec-S1-93-94.pdf

‫به نام خدا‬
‫دانشگاه صنعتی شریف ‪ -‬دانشکده مهندسی کامپیوتر‬
‫ترم اول سال تحصیلی ‪۴۹-۴۹‬‬
‫پروژه در قالب گروه های دو نفری انجام میشود‪.‬‬
‫پاسخ تمرینات خود را به آدرس ‪ 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‬انتصاب یابد ولی در یک نشس نمی‬
‫تواند همزمان از هر دو نقش استفاده کند و سیستم باید مانع از اینکار شود‪.‬‬
‫موفق باشید‪.‬‬