امنیت یکی از موضوعات بسیار مهم در سیستم های اطلاعاتی می باشد. امنیت در نرم افزار ERP نیز یکی از پارامترهای اصلی در انتخاب این گونه نرم افزار ها است، که باید به آن توجه کرد. وقتی صحبت از امنیت میشود دو مسئله متفاوت مورد بررسی قرار می گیرد. یکی امنیت سازمان یار (odoo) در مواجه با هکر ها و کرکر ها و امکان مقابله با تهدیدات و دیگری امنیت در سازمان یار ( امنیت در odoo ) یعنی نحوه ایجاد محدودیت های دسترسی، برای کاربران داخلی سیستم جهت جلوگیری از دسترسی های غیر مجاز و قابلیتهای مختلف سازمان یار در کنترل این گونه دسترسی هاست.
در این مقاله قصد داریم در مورد امنیت در سازمان یار (security in odoo) صحبت کنیم.
به غیر از روش های دستی که میتوان با استفاده از برنامه نویسی برای کنترل دسترسی داده ها در سازمان یار (odoo) ایجاد نمود، سازمان یار دو مکانیزم داده محور برای مدیریت دسترسی به داده ها فراهم کرده است. هر دو مکانیزم با استفاده از گروه ها دسترسی را به کاربران مرتبط می سازد: به این صورت که کاربر می تواند عضو هر تعداد گروه باشد، دسترسی ها هم به گروه ها تخصیص می یابد و کاربران این دسترسی ها را از طریق گروه هایی که عضو هستند به دست میآورند.
Access Control
از طریق رکوردهای ir.model.access دسترسی به مدل ها (در سازمان یار هر موجودیت با یک مدل تعریف می شود به طور مثال برای نگهداری اطلاعات کارمندان مدلی به نام کارمند یا employee تعریف می شود و این مدل ها در بانک اطلاعاتی تبدیل به جداول می شوند) مدیریت می شود. در واقع این مکانیزم جهت فراهم کردن کنترل دسترسی در سطح یک مدل (یا موجودیت) است برای واضح تر شدن همان مثال مدل کارمند را در نظر بگیریم: با Access Control، ما می توانیم به افراد دسترسی مشاهده کارمندان را بدهیم. در این صورت، کاربری که دسترسی مشاهده (خواندن اطلاعات) روی مدل کارمند را دارد، می تواند اطلاعات همه کارمندان را مشاهده نماید. (در ادامه در مکانیزم دوم، کنترل دسترسی بر روی رکوردهای جداول توضیح داده خواهد شد).
این دسترسی به صورت افزایشی است، یعنی اگر کاربر عضو چند گروه باشد، دسترسی های مختلف دریافتی از طریق هر گروه به دسترسی های قبلی اضافه میشود. به طور مثال اگر شخص عضو گروه a , b بوده و گروه a دسترسی مشاهده کارمندان را داشته باشد، این کاربر دسترسی مشاهده را دریافت خواهد کرد. حال اگر دسترسی ایجاد کارمند را به گروه b بدهیم با توجه به عضویت کاربر در گروه b این دسترسی نیز به دسترسی قبلی کاربر اضافه می شود و کاربر می تواند اطلاعات کارمندان را مشاهده و همچنین کاربر جدید ایجاد نماید.
بهتر است دقت شود، اگر هیچ گروه دسترسی در مدل تعریف نشود، همه کاربران به مدل دسترسی خواهند داشت. ولی در صورتی که گروه دسترسی تعریف شده باشد، فقط دسترسی به اعضای گروه های تعریف شده اعطا خواهد شد.
دسترسی های قابل تعریف برای هر گروه عبارتند از: ایجاد (perm_create)، جستجو و مشاهده (perm_read)، تغییر و بروزآوری اطلاعات موجود (perm_write) و حذف رکورد (perm_unlink).
Record Rules
یکی دیگر از مکانیزمهای بسیار کارآمد سازمان یار (odoo) برای پیاده سازی امنیت، قوانین رکورد میباشد. این قوانین در واقع شرایطی هستند که توسط سیستم بر روی رکوردها اعمال و امکان دسترسی (ایجاد، مشاهده، ویرایش و حذف) را فقط روی رکوردهایی که در این شرایط قرار بگیرند به کاربر می دهند.
یک قانون رکورد (record rule) شامل موارد زیر است:
یک مدل (موجودیت یا جدول اطلاعاتی) که باید بر روی آن اعمال شود.
مجموعه ای از دسترسی ها که می خواهیم اعمال شود (به طور مثال وقتی دسترسی خواندن یا مشاهده (perm_read) تنظیم شود، قانون تعریف شده فقط در هنگام خواندن یا مشاهده اطلاعات اعمال خواهد شد).
مجموعهای از گروه های کاربری که می خواهیم این قانون برای آنها اعمال شود. اگر گروهی تعریف نشود، این دسترسی سراسری (global) بوده و برای همه کاربران اعمال خواهد شد.
یک دامنه (domain) که برای چک کردن شامل شدن یا نشدن قانون اعمال شده بر روی رکورد استفاده میشود. در این دامنه میتوان از دو متغیر سیستمی کاربر (user) که شامل رکورد اطلاعاتی کاربر جاری است و زمان (time) برای ایجاد شرایط پویاتر استفاده کرد.
اما نکته بسیار کلیدی و حیاتی در تعریف قوانین توجه به گروهی یا سراسری بودن قانون است. قوانینی که روی گروه کاربران تعریف شده با قوانینی که به صورت سراسری تعریف شدهاند، کاربرد کاملا متفاوتی دارند:
قوانین سراسری نسبت به همدیگر حالت کاهنده دارند. یعنی تمام قوانین سراسری بر روی یک رکورد باید تطابق داشته باشند، تا آن رکورد قابل دسترس باشد.
قوانین گروه کاربری اما نسبت به یکدیگر حالت افزاینده دارند. یعنی اگر حداقل یکی از قوانین گروه های کاری با رکورد مد نظر تطابق داشته باشد، رکورد قابل دسترس است. دقت شود که حداقل یک قانون و در صورت تطابق بیش از یک قانون هم دسترسی برقرار است.
این بدان معنی است که اولین قانون گروهی دسترسی را محدود کرده و قوانین گروهی بعدی می توانند باعث افزایش دسترسی کاربر شوند، این در حالی است که قوانین سراسری فقط منجر به محدودیت بیشتر و کاهش دسترسی های کاربر خواند شد.
توجه داشته باشید که هیچ قانونی برای کاربر administratorاعمال نخواهد شد.
Field Access
یکی دیگر از مکانیزمها که از نسخه ۷ به بعد اضافه شده است، امکان کنترل دسترسی بر روی فیلدهای اطلاعاتی است. این مکانیزم از طریق برنامه نویسی و با اضافه کردن گروهها به تعریف فیلد در مدل مربوط فقط کاربران گروه های ذکر شده امکان دسترسی به فیلد مربوطه را خواهند داشت.
امنیت Odoo (سازمان یار)