چکیده:

  در این مقاله با مفهوم کنترل دسترسی و مدل های ارائه شده برای آن آشنا می شویم. کنترل دسترسی به مکانیزمی گفته می شود که از طریق آن بتوان نحوه دسترسی کاربران به منابع سیستم را محدود به نیازهایشان کرد. در واقع این مدل ها هرکدام به طریقی نحوه تامین امنیت داده ها و تنظیم حق دسترسی ها را بیان می کنند. البته روش های بسیاری مطرح شده اند که ما در اینجا به ذکر 4 مدل اساسی اکتفا می کنیم. انتخاب مدل ها بستگی به نوع نرم افزار دارد و طراح و تحلیگر برنامه باید بر اساس قابلیت های مورد نیاز خود، مدلی را انتخاب نمایند.

  مقدمه:

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

  اصطلاح کنترل دسترسی در واقع به کنترل بیشتر بر روی دسترسی به منابع سیستم اشاره دارد یعنی فرض را بر این می گذاریم که هویت کاربر مورد تایید قرار گرفته است و اکنون چگونگی نحوه دسترسی کاربر به منابع باید کنترل گردد.

  در محیط رقابتی امروز، تامین امنیت داده ها و تعیین نحوه دسترسی به آنها بصورت حداقل لازم (leat privilege) ،یکی از مباحث لازم و ضروری می باشد، به همین منظور راهکارها و مدل های متفاوتی ارائه شده است که در اینجا ما به 4 مدل اساسی می پردازیم .

  انواع مدل های کنترل دسترسی

  • کنترل دسترسی اجباری ( Mandatory Access Control-MAC )
  • کنترل دسترسی اختیاری ( Discretionary Access Control-DAC )
  • کنترل دسترسی مبتنی بر نقش ( Role Based Access Control-RBAC )
  • کنترل دسترسی مبتنی بر قوانین ( Rule Based Access Control-RBAC )

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

  کنترل دسترسی اجباری ( Mandatory Access Control-MAC )

  در این مدل اشیاء تشکیل دهنده هر کدام از منابع سیستم کاملا مشخص می گردند و به هر شی برچسب امنیتی اختصاص داده می شود. هر کدام از این برچسب ها شامل اطلاعات زیر می باشند که بصورت هارد کد در برنامه مشخص می شوند :

      check2 طبقه بندی اطلاعات بصورت بسیار سری، محرمانه و ... (classification)

      check2 تعیین گروه هایی که می توانند به این شی دسترسی داشته باشند مثلا مدیران، مسئول پروژه و ... (categories)

  به طور مشابه کاربران سیستم هم دسته بندی می شوند یعنی مشخص می گردد هر کاربر در چه طبقه ای از اطلاعات و در چه گروهی قرار دارد.بدین ترتیب هر زمان کاربری بخواهد به یک شی دسترسی داشته باشد، برچسب امنیتی شی را با مشخصات کاربری، مورد مطابقت قرار می دهند و نتیجه آن وضعیت دسترسی کاربر را مشخص می نماید. توجه داشته باشید که حتی اگر کاربری در طبقه اطلاعات سری قرار گیرد اما در گروهی باشد که در گاتالوگ شی نیامده است، مجوز دسترسی به او داده نمی شود. البته کاربری که در بالاترین سطح دسترسی قرار دارد ، مجوز دسترسی به اطلاعات سطوح پایین تر از خود را هم دارد. یعنی رابطه سطوح بصورت سلسه مراتبی می باشد.

  در این روش امنیت تا حد بالایی لحاظ می شود اما کم هزینه هم نیست، چرا که اولا باید دقت زیادی صرف مشخص نمودن تمامی اشیاء سیستم و طبقه بندی آنها شود و ثانیا بعد از پیاده سازی، تمامی درخواست ها مبنی بر بروزرسانی کردن اشیاء و برچسب های آنها و یا تغییر موقعیت یک کاربر و سطح دسترسی آن، به مرکز مدیریتی ارسال می گردد که برای محیط های بزرگ و پویا بسیار وقت گیر خواهد. یکی دیگر از محدودیت های این مدل این است که کاربران نمی توانند داده های خود را به اشتراک بگذارند چرا که همه دسترسی ها از قبل و بصورت ایستا مشخص شده اند.

  کنترل دسترسی اختیاری ( Discretionary Access Control-DAC )

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

  در این مدل دیگر از برچسب امنیتی استفاده نمی شود بلکه برای هر شی یک لیست کنترل دسترسی ( Access Control List) ، تعریف می گردد که شامل فهرستی از کاربران و گروه هایی که به کاربر اجازه دسترسی می دهند و سطح  دسترسی برای هر گروه ، می باشد.. یکی از مزایای این روش امکان به اشتراک گذاشتن دیتاها است، مثلا کاربر A می تواند اجازه فقط خواندن را در مورد فایل خود ، به کاربر B بدهد.

  در این مدل تعریف لیست کنترل دسترسی می تواند بصورت متمرکز و یا توزیع شده باشد. در روش متمرکز، تنها مدیر سیستم می تواند لیست دسترسی ها را بروز رسانی نماید اما در مدل توزیع شده چنانچه مدیر مجوز تعریف و بروزرسانی لیست را به کاربری بدهد، او هم می تواند این تغییرات را اعمال نماید.

  این روش برای سازمان های بزرگ و پویا به دلیل قابلیت انعطاف پذیری و صرفه جویی در وقت، مناسب می باشد ،البته از لحاظ امنیتی در سطح پایین تری نسبت به mac ، قرار دارد چرا که ممکن است حق دسترسی ای به کاربری داده شود در حالیکه مورد نیاز او نمی باشد.

  کنترل دسترسی مبتنی بر نقش ( Role Based Access Control-RBAC )

  با توجه به عدم انعطاف پذیری مدل کنترل دسترسی اجباری و کنترل دسترسی اختیاری ، مفهوم امنیتی نسبتا جدیدی با عنوان کنترل دسترسی مبتنی بر نقش توسط موسسه ملی استاندارد و فناوری (NIST) مطرح گردید.

  در روش کنترل دسترسی مبتنی بر نقش، حق دسترسی ها بستگی به عملیاتی دارد که کاربران در سازمان می توانند انجام دهند. در این مدل مجوز ها به نقش های تعریف شده اختصاص داده می شوند و سپس نقش هر کاربر در سازمان مشخص می گردد. به عنوان مثال کاربر حسابدار یک شرکت، نقش حسابداری به او انتصاب داده می شود  از این طریق کاربر می تواند از مجوزهای تعیین شده برای نقش حسابدار ، استفاده نماید .بدین ترتیب اگر شرکت دارای چند حسابدار هم باشد، همه آنها دقیقا حق دسترسی های یکسانی خواهند داشت، نه بیشتر و نه کمتر.

  کنترل کاربران در این مدل به سادگی امکان پذیر است، چرا که می توان به کاربران تنها با انتصاب نقش جدید و یا انتقال به نقش دیگر، حق دسترسی های جدید داد. از طرفی با اختصاص دادن یک مجوز جدید به یک نقش و یا گرفتن مجوزی از یک نقش، تمامی کاربرانی که آن نقش به آنها انتصاب داده شده است، موقعیت جدیدی در مورد حق دسترسی ها پیدا می کنند.

  اجزاء تشکیل دهنده این مدل عبارتند از :

  •    bullet آبجکت (object) : موجودیتی که حاوی اطلاعاتی باشد که نیاز به تعیین دسترسی ( محافظت) دارند.
       bullet عمل (operation) : مجموعه عملیاتی که میتوان بر روی یک آبجکت انجام پذیرد و نیاز به تعیین دسترسی (محافظت) دارد.
       bullet مجوز (permission) :  بررسی امکان انجام عمل بر روی یک آبجکت و دادن اجازه انجام آن.
       bullet نقش / جایگاه (role) : بیانگر موقعیت شغلی در قالب چهارچوب سازمانی است و توضیحی در رابطه با اختیارات و مسئولیت ها در این موقعیت.
       bullet کاربر (user) : شخصی است که مجاز به استفاده از قسمت­هایی از نرم­افزار می­باشد. این شخص به جز انسان می­تواندیک قطعه نرم­افزاری هم باشد.
       bullet جلسه (session) : مشخص می­کند که کاربر با کدام(یک یا چند) از نقشهای خود در حال فعالیت در سیستم می­باشد. هر کاربر می تواند دارای چندین session باشد وی هر session تنها به یک کاربر اختصاص داده می شود.
       bullet تفکیک وظائف : تفکیک وظائف برای جلوگیری از ایجاد تضاد بین قوانین حاکم در یک سازمان، است. ایجاد تضاد بین قوانین تعریف شده، ممکن است در اثر انتصاب چند مسئولیت به یک نفر و یا فعال شدن یک نفر با چند نقش بصورت همزمان، بوجود آید. تفکیک وظائف به دو صورت امکان پذیر می باشد:
    •    check ایستا  (SSD):چنانچه مسئولیت های a و b هر کدام عملیاتی را انجام دهند که انتصاب آنها به یک نفر سبب شود قوانین امنیتی سازمان خدچه دار شود، با انتصاب مسئولیت a به یک نقش دیگر نمی توان مسئولیت b را به او اختصاص داد و بالعکس.
    •    check پویا  (DSD):چنانچه نقش های a و b هرکدام دارای مسئولیت هایی باشند که انجام دادن آنها بصورت همزمان سبب شود قوانین امنیتی سازمان خدچه دار شود، می توان هر دو نقش را به یک کاربر اختصاص داد اما در صورتیکه کاربر با نقش a فعال بود، دیگر نمی تواند بصورت همزمان و با یک session با نقش b هم فعال باشد.

  قوانین پایه ای حاکم بر سیستم مبتنی بر نقش:

  1- Role assignment : یک کاربر در صورتی مجوز انجام عملی را در سیستم دارد که نقشی(role) به آن انتصاب داده شده باشد.

  2- Role authorization :نقشی که کاربر با آن فعالی می شود، باید حتما مورد تایید سیستم قرار گیرد. این قانون به همراه قانون اول، تضمین می نماید که هر کاربر تنها می تواند در نقش هایی فعال شود که مجوز آنها را دارد. 

  3- Permission authorization : یک کاربر تنها می تواند حق دسترسی هایی را داشته باشد که براینقشی که با آن فعال است، تایید شده باشد. این قانون به همراه دو قانون قبلی، تضمین می نماید که کاربران تنها می توانند حق دسترسی هایی را داشته باشند که برای آنها مجاز است.

   نمای کلی از RBAC بصورت زیر می باشد:

  کنترل دسترسی مبتنی بر قوانین ( Rule Based Access Control-RBAC )

  در ابتدا لازم به ذکر است به عبارت مخفف در نظر گرفته شده برای کنترل دسترسی مبتنی بر قوانین اشاره نماییم که دقیقا شبیه به مخفف مدل کنترل دسترسی مبتنی بر نقش است (RBAC).

  در این مدل، اجازه دسترسی یا عدم صدور مجوز برای دسترسی به اشیاء تعریف شده ی منابع سیستم، بر اساس یک سری از قوانین که توسط مدیر تهیه شده است، مورد بررسی قرار می گیرد. همانند روش کنترل دسترسی اختیاری، در این روش هم برای هر شی لیستی (ACL) تهیه می گردد که در آن قوانین لازم برای داشتن حق دسترسی مطرح می گردد.

  بروز رسانی و تغییر این قوانین شبیه به مکانیزم مطرح شده در مدل کنترل دسترسی اجباری است، یعنی امکان تغییر قوانین و بروز رسانی کردن لیست توسط کاربران وجود ندارد و همه مجوز ها صرفا توسط مدیر سیستم کنترل می شود. به عنوان مثال می توان کاربر یا گروهی از کاربران را در نظر گرفت که تنها در روزهای خاصی از هفته و در ساعات مشخصی  می توانند به شبکه متصل شوند.