کنترل دسترسی مبتنی بر ویژگی (ABAC)
تاریخ انتشار:۱۴:۴۵ ۱۳۹۸/۱۲/۲۲

کنترل دسترسی مبتنی بر ویژگی (ABAC)


       




کنترل دسترسی مبتنی بر ویژگی (ABAC) رویکرد متفاوتی برای کنترل دسترسی است که در آن دسترسی کاربر بر اساس نقش یا گروه دسترسی کاربر داده نمی‌شود، بلکه از طریق خط‌مشی‌هایی که از ترکیب ویژگی‌های مختلف است به کاربران داده می‌شود. این خط‌مشی‌ها می‌تواند از هر نوع ویژگی (ویژگی‌های کاربر، ویژگی‌های منابع، شی‌ء، محیط و ...) استفاده کند. این مدل از منطق بولی پشتیبانی می‌کند که در آن قوانین "اگر، پس" (IF, Then) به کار می‌رود. به عنوان مثال اگر درخواست‌کننده مدیر مالی باشد، پس دسترسی خواندن و نوشتن به داده‌های حساس مالی به او داده شود. استفاده از این روش هرچند دشواری‌‌هایی در پیاده‌سازی اولیه دارد ولی سیستمی امن، قابل اطمینان، پشتیبانی ساده‌تر بویژه برای سامانه‌های یکپارچه فراهم می‌کند.


مقدمه


کنترل دسترسی مبتنی بر ویژگی احراز هویت و مجوز یا در واقع "چه‌کسی هستید" و "چه کاری می‌توانید انجام دهید" را از هم جدا می‌کند. ABAC داده‌های توصیفی (ویژگی‌ها) را در برابر خط‌مشی‌ها ارزیابی می‌کند تا مشخص کند کاربر مجاز به دسترسی به منابع درخواست‌شده است.


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


پشتیبانی‌ از خط‌ مشی‌های محاسبه‌شدنی


ABAC حساس به متن است و از امنیتی پویا پشتیبانی می‌کند. در اینجا نمونه‌هایی برای آشنایی بیشتر آورده شده است:


– اطلاعات مشتری را فقط به سرپرستانی که ۱۵ ساعت آموزش را پشت سر گذاشته اند و در ساعات کاری درخواست می‌دهند، نشان بده.

– دسترسی به سیستم فقط به کاربرانی داده می‌شود که از مکان جغرافیایی خاصی درخواست می‌دهند، داده می‌شود.

– اگر یک کاربر در طول روز ۵ بار به اطلاعات حساب مشتری دسترسی داشته باشد، درخواست را رد کرده و مدیر گزارش می‌دهد.


مؤلفه‌های اصلی ABAC


  • انباره‌ی خط‌ مشی: مجموعه‌ای از قوانین و خط‌مشی‌ها که تصمیم‌گیری برای دسترسی‌ را راهبری می‌کند.
  • ویرایشگر خط‌ مشی: ویرایشگر خط‌مشی ابزاری نرم‌افزاری است که به مدیران این امکان را می‌دهد خط‌مشی‌هایی را که توسط موتور تصمیم ‌گیری ارزیابی و اجرا می شود را ایجاد و ویرایش کنند.
  • نقطه‌ی اطلاعاتی خط‌ مشی: شامل انباره‌های داده‌های سازمانی مانند LDAP، MySQL، Oracle یا SQL Server که جزئیات یا همان ویژگی‌ها را دارد. ویژگی‌ها، نقاط داده‌ای هستند که برای ارزیابی درخواست کاربر در برابر خط‌مشی استفاده می‌شد.
  • سرویس تصمیم‌گیری خط‌ مشی: سرویس تصمیم‌گیری خط مشی، موتوری است که درخواست های کاربر را در برابر خط مشی‌ها و ویژگی‌های مربوطه ارزیابی می‌کند ، در مورد دسترسی‌ها تصمیم می‌گیرد و پاسخ و اقدامات مناسب را راه اندازی می‌کند.
  • نقطه اجرای خط‌ مشی: نقطه اجرای خط‌مشی (PEP) درخواست‌های دسترسی را متوقف می‌کند و آنها را برای دریافت مجوز به سرویس تصمیم‌گیری خط مشی ارسال می‌کند.

شیوه‌ی محافظت از اشیاء


در سیستم ABAC، مجوزها با مجموعه‌ای قوانین قابل اندازه‌گیری همراه است و مجوزها به کاربرانی اعطا می‌شود که بتوانند این قوانین را اثبات کنند.

توجه داشته باشید که از طریق همین قوانین می‌توان اشیاء را نیز محافظت کرد. برای نمونه: "فیلم‌های MPEG بزرگسالان، فقط توسط کاربران با رده‌ی سنی مساوی یا بزرگتر از ۱۸ سال قابل دریافت است" در چنین مجوزی، به هیچ شناسه‌ی خاصی از کاربر، مانند نام کاربری اشاره نمی‌شود. بلکه به طور ضمنی برای کلیه‌ی کاربرانی اعمال می‌شود که سن ایشان شرط مساوی‌بودن یا بزرگتر از ۱۸ را تایید می‌کند.

به طور مشابه، اشیاء محافظت‌شده با ویژگی‌ای مانند نام، نشانه‌گذاری نمی‌شوند. نشانه‌گذاری آن‌ها توسط عنوان "طبقه‌بندی برای بزرگسالان" انجام می‌شود. بنا بر این، ABAC به ویژگی‌هایی که اشیاء را توصیف می‌کند، اعتماد دارد. برای انتقال مفاهیم ABAC از یک زبان بر پایه‌ی XML بهره می‌بریم که توضیح آن در پی می‌آید.


XACML


در چند سال گذشته زبان XACML (زبان نشانه‌گذاری کنترل دسترسی گسترش‌پذیر) موفقیت خود را به عنوان استانداردی برای توسعه راه حل‌های امنیتی اثبات کرده است.

نیاز گسترده به همکاری و به‌اشتراک‌گذاری داده‌ها در حوزه‌های مختلف سازمانی، منجبر به توسعه‌ی یک زبان استاندارد مبتنی بر ویژگی و مبتنی بر XML برای بیان خط‌مشی‌های کنترل دسترسی شد؛ XACML زبانی مبتنی بر XML است که خط‌مشی‌های کنترل دسترسی، درخواست‌های دسترسی و تصمیمات کنترل دسترسی را مشخص می‌کند. XACML با جنبه‌های کلیدی زیر مشخص می‌شود:


– مجوزها با سه‌گانه‌ای به فرم زیر بیان می‌شود:


<Resource, Subject, Action>


(واژه‌ی Resource به معنی شی‌ء محافظت‌شده به کار می‌رود.)


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

– از مجوزهای سلبی پشتی‌بانی می‌کند و الگوریتم‌های متفاوتی برای دسترسی‌های متضاد در ruleهای مختلف و policyهای مختلف ارائه می‌دهد.
– توسعه‌پذیر است. عناصر XACML می‌تواند شامل توابع، شناسه‌ها، نوع داده‌ها، الگوریتم‌های rule-combining و الگوریتم‌های policy-combining باشد.


نمونه‌ای از policy در XACML در زیر نشان داده شده است. استاندارد XACML هم‌چنین شامل یک مدل جریان داده می‌شود که مؤلفه‌های اصلی معماری سیستم کنترل دسترسی مبتنی بر XACML و جریان داده‌ی در میان این مؤلفه‌ها را مشخص می‌کند.











منبع:nikamooz