آشنایی با مفاهیم Row Level Security در SQL Server

فرض کنید که ما در SQL Server جدولی داریم که در آن اطلاعات تامین کنندگان و سفارشات قرار دارد. این اطلاعات برای کسب و کار ما اهمیت فراوانی دارند و می خواهیم دسترسی برخی از کارمندان را به این اطلاعات محدود کنیم. می خواهیم هر یک از کارمندان بتوانند فقط سفارشات ثبت شده توسط خودشان را بر اساس کد کارمندی شان مشاهده کنند. برای این کار SQL Server 2016 دارای ویژگی های جدیدی است.

در SQL Server 2016 قابلیتی به نام Row Level Security(RLS) معرفی شده است که می تواند امکان کنترل دسترسی به هر یک از سطرهای جدول را برای ما فراهم کند. RLS به ما امکان می دهد که به آسانی مشخص کنیم که کدام کاربر می تواند به کدام داده ها دسترسی داشته باشد-با حداکثر شفافیت برای برنامه کاربردی. این قابلیت به ما این امکان را می دهد که داده ها را بر اساس شناسه کاربری یا سیاست های امنیتی(Security Policy) خاصی محدود کنیم.
ایجاد داده های نمونه برای بررسی RLS
برای اینکه بتوانیم عملکرد RLS را مورد بررسی قرار دهیم، در ابتدا یک جدول ایجاد کرده و تعدادی رکورد در آن درج می کنیم:

امنیت در SQL Server

کوردهای ثبت شده در زیر لیست شده اند:

نرم افزار هوش تجاری ,  داشبورد مدیران  , داشبورد مدیریتی  , گزارش ساز ,  نرم افزار داشبورد

عملکرد SQL Server 2016 در مورد RLS

بر اساس نیازمندی های که داریم، می بایست تابع گزاره ای(Predicate Function) مشابه زیر-که عمل فیلتر کردن اطلاعات را کنترل می کند- ایجاد کنیم:

نرم افزار هوش تجاری ,  داشبورد مدیران  , داشبورد مدیریتی  , گزارش ساز ,  نرم افزار داشبورد

در ادامه، می بایست سیاست های امنیتی که تابع ایجاد شده در فوق بر اساس آن عمل می کند را تعریف کنیم:

نرم افزار هوش تجاری ,  داشبورد مدیران  , داشبورد مدیریتی  , گزارش ساز ,  نرم افزار داشبورد

سپس، با توجه به داده های نمونه ای که در این مقاله ارائه کرده ایم، می بایست تعدادی کاربر را جهت دسترسی به این اطلاعات تعریف کنیم که در اینجا نام های LAX، AURA و ZAP نام هایی هستند که در ستون Processedby از جدول dbo.orders وجود دارند:

نرم افزار مدیریت فرایند ها , مدیریت فرایند , سامانه ساز , پنجره واحد  ,دولت الکترونیک , معماری سازمان ,  سیستم ساز

در صورتی که پرسوجویی را بر اساس اصول امنیتی مد نظر برای هر یک از کاربران اجرا کنیم-پرسوجوهای زیر، خروجی به صورت زیر خواهد بود:

نرم افزار کلیک ویو  ,آموزش کلیک ویو , هوش تجاری کلیک ویو ,  فیلم کلیک وی   , دانلود کلیک ویو

نرم افزار کلیک ویو  ,آموزش کلیک ویو , هوش تجاری کلیک ویو ,  فیلم کلیک وی   , دانلود کلیک ویو

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

پلان اجرایی SQL Server برای RLS

حالا برای اینکه ببینیم این قابلیت چگونه عمل می کند، باید پلان اجرایی پرسوجوی ایجاد شده را پیش و پس از اعمال سیاست RS مشاهده کنیم.
توجه: جهت مشاهده پلان اجرایی کاربران باید مجوز مشاهده پلان(ShowPlan) را داشته باشیم.

نرم افزار مدیریت فرایند ها , مدیریت فرایند , سامانه ساز , پنجره واحد  ,دولت الکترونیک , معماری سازمان ,  سیستم ساز

همانطور که در پلان اجرایی مشاهده کنیم، متوجه می شویم که پرسوجو به صورت زیر اجرا شده است

نرم افزار مدیریت فرایند ها , مدیریت فرایند , سامانه ساز , پنجره واحد  ,دولت الکترونیک , معماری سازمان ,  سیستم ساز

همچنین در صورتی که از قابلیت RS استفاده نکرده باشیم، در پلان اجرایی فقط یک عملگر table scan برای نمایش رکوردها ایجاد می شود.

نحوه ساخت داشبورد مدیریتی

اعمال تغییرات در RLS

با استفاده از دستورات زیر می توان RLS را غیر فعال کرد

نحوه ساخت انباره داده

همچنین با استفاده از دستورات زیر می توان سیاست های امنیتی و تابع گزاره ی ایجاد شده را حذف کرد.

داشبورد مدیریتی چیست؟

انتخاب های بیشتر برای RLS

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

آشنایی با  گزارش گیری برای مدیران

به عنوان مثال، کاربری با نام AURA فقط دارای دو رکورد است که مربوط به یک سال گذشته می باشد.

داشبورد مدیریتی

منبع : نیک آموز

نرم افزار هوش تجاری , داشبورد مدیران , داشبورد مدیریتی , گزارش ساز , نرم افزار داشبورد

نرم افزار کلیک ویو ,آموزش کلیک ویو , هوش تجاری کلیک ویو , فیلم کلیک وی , دانلود کلیک ویو

نرم افزار مدیریت فرایند ها , مدیریت فرایند , سامانه ساز , پنجره واحد ,دولت الکترونیک , معماری سازمان , سیستم ساز

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *