پیاده سازی Static and Dynamic Row Level Security (RLS)

Row Level Security (RLS)، به عبارت ساده، روشی است که داده های ارائه شده در گزارش را بر اساس کاربران یا گروه کاربران محدود می کنیم. این قابلیت شامل ایجاد نقش برای انواع مختلف کاربر و سپس اعمال فیلترها در جداول مورد نظر است. با این حال اگر لیست کاربران شما طولانی تر باشد و dimension کاربران شما در معرض تغییر بیشتری باشد، به روش پویا (dynamic) نیاز خواهید داشت. در این مقاله ابتدا یک مثال از حالت استاتیک خواهیم دید و سپس به نحوه پیاده سازی dynamic rls خواهیم پرداخت.

راه اندازی RLS استاتیک در Power BI

سناریویی را در نظر بگیرید که می خواهید جدول کشور (country) را برای یک کاربر به ازای هر کاربر، محدود کاربران آن کشور کنید. به این منظور مراحل زیر را طی خواهیم کرد:

در تب “Modeling” در نوار ابزار Power BI روی “Manage roles” کلیک کنید.

در پنجره باز شده یک نقش (role) جدید ایجاد کنید و سپس جدولی (Country) را که می خواهید بر اساس نقش فیلتر شود انتخاب کنید و سپس یک عبارت True / False ایجاد کنید تا این جدول با آن فیلتر شود که در مثال ما ستون country برابر خواهد شد با United States of America یعنی نمام مقادیر که در ارتباط با این سطر و این کشور هستن فیلتر خواهند شد.

 

اکنون که نقش ایجاد شده است، عملکرد را با استفاده از دکمه “View as” تست کنید.

 کادر کنار نقشی را که می خواهید تست کنید رو علامت بزنید و مشاهده خواهید کرد که فقط ستون مربوط به کشور انتخابی نمایش داده می شود که می شود این role رو به کاربران مورد نظر اختصاص داد و خواهید دید که کاربران فقط می توانند اطلاعات مربوط به کشور مورد نظر رو ببینند و نه کشورهای دیگر. برای اختصاص دسترسی هم از report server قسمت row level security کاربران مورد نظر رو به role مورد نظر assign می کنید.

راه اندازی RLS داینامیک در Power BI 

به جای اختصاص دادن نقش مستقیم به کاربران، ما می توانیم لیستی از کاربران را در جدولی مجزا که قابلیت مدیریت بهتری دارد ذخیره کنیم (در پایگاه داده یا به سادگی در اکسل). و با استفاده از توابع ()USERNAME یا ()USERPRINCIPALNAME برای فیلتر کردن جداول داده استفاده کنیم. که توصیه ما استفاده از دومین تابع می باشد.

حالا مراحل را ببینیم!

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

  • GeneralNA => شامل 3 کشور اروپا شمالی
  • GeneralEU => شامل دو کشور اروپایی
  • VP=> دسترسی ویژه VIP و امکان مشاهده دادهای همه کشورها

همچنین در جدول Users، نام کاربران و نقش هر یک یا همان میزان دسترسی به داده های کشورها مشخص شده که در مثال ما User4 دسترسی به داده های همه کشورها رو داراست.

 

حالا نوبت تنظیم روابط جدوله!

جداول را با هم و سپس به جدول fact مطابق تصویر زیر پیوند می دهیم. فقط دقت کنید در جدول financial که داده های ما وجود داره لازمه ستون Country با ستون Country در جدول Roles ارتباط داشته باشد و همچنین ستون Role جدول Roles با جدول Users

 

حالا مشابه حالت static یک role ایجاد می کنیم با این تفاوت که جدول Users را به تابعی که گفتیم مرتبط می کنیم به صورت زیر:

حالا می تونید تست کنید به طور مثال اگه User2 رو انتخاب کنید مشاهده خواهید کرد که داده های اروپا تنها نمایش داده می شود.

در آخر تنظیمات در report server فراموش نشود.

سناریو پیچیده تر رو می تونید در سایت fundtechsahm.com زیر مشاهده کنید:

پیاده سازی Static and Dynamic Row Level Security (RLS) in Power BI (امنیت سطح ردیف به صورت ثابت و متحرک)

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

نشانی ایمیل شما منتشر نخواهد شد.

Fill out this field
Fill out this field
لطفاً یک نشانی ایمیل معتبر بنویسید.

فهرست