پیکربندی مجوزها برای جاسازی
میتوانید از یک متابیس واحد برای مدیریت مجوزها برای همه مشتریان خود استفاده کنید. کدام ابزار مجوز متابیس استفاده میکنید بستگی به نحوهٔ ذخیره داده مشتری شما دارد.
- یک پایگاه داده برای همه مشتریان (تنظیمات ترکیبی)
- یک پایگاه داده برای هر مشتری
- یک schema برای هر مشتری
یک پایگاه داده برای همه مشتریان (تنظیمات ترکیبی)
اگر همه داده مشتری شما در همان schema و روی همان جداول است (اغلب "ترکیب داده" نامیده میشود):
| Tenant_ID | Column 1 | Column 2 |
|---|---|---|
| A | ... | ... |
| B | ... | ... |
| C | ... | ... |
میتوانید از موارد زیر استفاده کنید:
- امنیت ردیف و ستون برای محدود کردن ردیفها و ستونها.
- جعل هویت اتصال برای تقلید نقشهای تنظیمشده توسط پایگاه داده شما. جعل هویت انتخاب خوبی است اگر میخواهید دسترسی native SQL به دادههایتان اعطا کنید.
محدود کردن ردیفها بر اساس Tenant ID
فرض کنید یک جدول به نام Data دارید که به این شکل است:
| Tenant_ID | Metrics | Insights |
|---|---|---|
| A | ... | ... |
| B | ... | ... |
| C | ... | ... |
برای نمایش یک نسخه فیلترشده از Data به مستأجران مختلف بر اساس Tenant_ID، میتوانید امنیت ردیف و ستون را اعمال کنید.
یعنی Tenant A ردیفهایی را میبیند که Tenant_ID = A، و Tenant B ردیفهایی را میبیند که Tenant_ID = B.
در اینجا نحوهٔ کار امنیت سطح ردیف پایه است:
- یک گروه ایجاد کنید، مثلاً "Restricted Tenants"، و حسابهای متابیس افراد را به آن گروه اضافه کنید.
- یک ویژگی کاربر اضافه کنید. برای حساب هر شخص، یک ویژگی کاربر اضافه کنید مثل
Tenant_ID، با مقدار ویژگی کاربر تنظیمشده به "A"، "B"، یا "C". - امنیت سطح ردیف را به جدول برای آن گروه اضافه کنید. به امنیت ردیف و ستون مراجعه کنید
محدود کردن ستونها بر اساس مستأجری
فرض کنید ستون Insights شما یک ویژگی premium است، و Tenant B تنها مشتری است که برای دیدن این Insights پرداخت میکند.
| Tenant ID | Metrics | Insights |
|---|---|---|
| A | ... | {% include svg-icons/cross.svg %} |
| B | ... | ... |
| C | ... | {% include svg-icons/cross.svg %} |
برای جلوگیری از مشاهده ستون Insights توسط A و C، میتوانید امنیت سطح ستون را اضافه کنید تا هم ردیفها و هم ستونهایی که هنگام مشاهده جدول میبینند را محدود کنید.
یک گروه ایجاد کنید به نام "Metrics-Only Tenants".
Tenants A و C را به گروه اضافه کنید. هنگام محدود کردن داده، مطمئن شوید که هر حساب متابیس فقط به یک گروه تعلق دارد.
یک ویژگی کاربر اضافه کنید مثل
Tenant_ID، با مقدار ویژگی کاربر تنظیمشده به "A" یا "C".بعد، یک سؤال SQL با استفاده از جدول Data مثل این ایجاد میکنید:
SELECT Tenant_ID, Metrics FROM data WHERE Tenant_ID = {%raw%} {{ tenant_user_attribute }} {%endraw%}سؤال SQL را بهعنوان "Customer Metrics" ذخیره کنید.
امنیت ردیف و ستون اضافه کنید با استفاده از گروه "Metrics-Only Tenants" و سؤال SQL "Customer Metrics".
وقتی، بهعنوان مثال، Tenant A وارد میشود، فقط ستونهای Tenant_ID و Metrics را میبیند، و فقط ردیفهایی که Tenant_ID = A.
جعل هویت به شما امکان مدیریت دسترسی با نقشهای پایگاه داده را میدهد
جعل هویت به شما امکان میدهد ویژگیهای کاربر را به نقشهای پایگاه داده نگاشت کنید، که به شما امکان میدهد امنیت سطح ردیف را بر اساس مجوزهایی که به هر نقش میدهید انجام دهید.
این مقاله دربارهٔ جعل هویت را بررسی کنید.
یک پایگاه داده برای هر مشتری
اگر هر یک از مشتریان شما پایگاه داده خودش را دارد، میتوانید از مسیریابی پایگاه داده برای تعویض منبع داده برای کوئریها استفاده کنید. با مسیریابی DB، فقط نیاز دارید یک داشبورد یک بار بسازید، و متابیس پایگاه داده را که کوئری میکند بسته به اینکه چه کسی وارد شده است تغییر میدهد.
با این حال، برای اینکه مسیریابی پایگاه داده کار کند، schemaها در هر پایگاه داده باید یکسان باشند.
برای کنترل دقیقتر بر آنچه افراد میتوانند ببینند، حتی درون همان مستأجران، همچنین میتوانید از ابزارهای دیگر متابیس، مثل امنیت ردیف و ستون و جعل هویت اتصال، در ترکیب با مسیریابی پایگاه داده استفاده کنید.
چندین schema (یک schema برای هر مشتری)
اگر داده مشتری شما در جداول جداگانه در همان schema یا schemaهای مختلف درون یک پایگاه داده ذخیره شده است، مثل این:
Schema Tenant A
| Tenant A | Column 1 | Column 2 |
|---|---|---|
| Row 1 | ... | ... |
| Row 2 | ... | ... |
| Row 3 | ... | ... |
Schema Tenant B
| Tenant B | Column 1 | Column 2 |
|---|---|---|
| Row 1 | ... | ... |
| Row 2 | ... | ... |
| Row 3 | ... | ... |
میتوانید:
برخلاف داده ترکیبی، داده یک-schema-برای-هر-مشتری با امنیت ردیف و ستون ناسازگار است، چون در سطح جدول کار میکند، نه سطح schema.
اعطای دسترسی self-service یا فقط مشاهده به schema مشتریان
فرض کنید یک پایگاه داده واحد با ده جدول مختلف دارید، هر یک مربوط به یک مشتری متفاوت (شرکت). میخواهید هر مشتری فقط به جدول خودش دسترسی داشته باشد.
یک گروه برای اولین مشتری خود ایجاد کنید در Admin settings > People. اگر نیاز به سطوح مجوز متفاوت درون یک شرکت دارید (برخی کارمندان میتوانند سؤال بپرسند، دیگران فقط میتوانند مشاهده کنند)، چندین گروه مثل Company A (Self-service) و Company A (View only) ایجاد کنید.
دسترسی جدول را اعطا کنید با رفتن به Permissions > Data > Databases و اعطای دسترسی گروه جدید به جدول مشتری. اگر میخواهید مشتریان سؤالها و داشبوردها را درون جدول خود ایجاد کنند، مجوزهای Create query را به Query builder تنظیم کنید.
برای کارمندانی که باید فقط داده را مشاهده کنند و کلکسیونهایی برای نگهداری آن سؤالها و داشبوردهای خاص ایجاد کنند، به مجوزهای کلکسیون مراجعه کنید.
از اعطای دسترسی ویرایشگر SQL native خودداری کنید — این به افراد امکان میدهد جداولی را که نباید ببینند کوئری کنند.
اگر مجوزهای هر گروه را به یک جدول واحد محدود کنید، متابیس هر جدول جدیدی که به پایگاه داده اضافه میکنید را مخفی میکند.
اولین کاربر خود را دعوت کنید و آنها را به گروه مناسب اضافه کنید. اگر از SSO استفاده میکنید، میتوانید این مرحله را رد کنید.
فرآیند را برای هر مشتری تکرار کنید با دنبال کردن مراحل 1–3.
اعطای دسترسی native SQL به schema مشتریان
اگر نیاز به کوئریهای native SQL دارید:
یک حساب کاربر سطح پایگاه داده برای اولین مشتری خود ایجاد کنید (در پایگاه داده خود، نه در متابیس). این کاربر پایگاه داده باید فقط به جداول یا schema خاص خود دسترسی داشته باشد. برای PostgreSQL مثلاً، میتوانید یک کاربر از طریق psql اضافه کنید و فقط مجوزهای جداول آنها را اعطا کنید.
متابیس را به پایگاه داده خود متصل کنید با استفاده از حساب کاربر پایگاه داده که تازه ایجاد کردید. به پایگاهدادهها مراجعه کنید.
یک گروه جدید در متابیس ایجاد کنید و دسترسی به اتصال پایگاه داده جدید را اعطا کنید. چون نقش کاربر پایگاه داده کنترل میکند چه چیزی قابل مشاهده است، میتوانید به گروه دسترسی Can view به پایگاه داده و دسترسی Query builder and native اعطا کنید. به گروهها مراجعه کنید.
اعضای گروه همه جداولی را میبینند که کاربر پایگاه داده میتواند به آنها دسترسی داشته باشد. برای مخفی کردن جداول بعداً، باید مجوزها را در خود پایگاه داده تغییر دهید، نه متابیس.
اولین کاربر خود را دعوت کنید و آنها را به گروه مناسب اضافه کنید. اگر از SSO استفاده میکنید، میتوانید این مرحله را رد کنید.
فرآیند را برای هر مشتری تکرار کنید با دنبال کردن مراحل 1-4. در نهایت به تعداد مشتریان اتصال پایگاه داده خواهید داشت.