پیاده‌سازی سیاست‌های امنیتی با استفاده از Oracle Profiles

در مدیریت کاربران دیتابیس اوراکل، یکی از ابزارهای کلیدی برای اعمال سیاست‌های امنیتی، Profile است. با استفاده از پروفایل می‌توان محدودیت‌های مشخصی مانند پیچیدگی رمز عبور، تعداد تلاش ناموفق برای ورود، زمان انقضای رمز و محدودیت‌های مصرفی را روی کاربران اعمال کرد.

در این مقاله، ما کاربران را در سه دسته اصلی تقسیم کرده‌ایم و برای هر دسته، تنظیمات متفاوتی در نظر می‌گیریم تا هم امنیت رعایت شود، هم کارایی سیستم حفظ گردد:

 

کاربران اپلیکیشن (Application Users)

کاربران سرویس‌گرا که از طریق اپلیکیشن یا واسط‌های API به دیتابیس متصل می‌شوند.

اهداف:

  • جلوگیری از توقف اپلیکیشن در اثر قفل شدن کاربر

  • مدیریت دستی رمزها توسط تیم DBA

 

پارامتر مقدار پیشنهادی توضیح
PASSWORD_REUSE_TIME 365 جلوگیری از استفاده مجدد زودهنگام رمز
PASSWORD_REUSE_MAX 3 اجبار به تغییر چندباره رمز پیش از امکان استفاده مجدد
PASSWORD_VERIFY_FUNCTION ORA12C_VERIFY_FUNCTION یا نسخه سفارشی اطمینان از رمز قوی

 

در مورد پیچیدگی پسورد می توانیم به مقاله ای که به همین منظور تهیه شده است مراجعه کنید.

https://vahiddb.com/fa/oracle/database-security/customizing-and-enforcing-password-complexity-policies-in-oracle-fa

دستور ساخت پروفایل کاربران اپلیکیشن:

CREATE PROFILE app_profile LIMIT
  PASSWORD_VERIFY_FUNCTION       vahiddb_19c_verify_function
  PASSWORD_REUSE_TIME            365
  PASSWORD_REUSE_MAX             5
  FAILED_LOGIN_ATTEMPTS          UNLIMITED
  PASSWORD_LIFE_TIME             UNLIMITED
  PASSWORD_GRACE_TIME            UNLIMITED
  PASSWORD_LOCK_TIME             UNLIMITED
  INACTIVE_ACCOUNT_TIME          UNLIMITED
  IDLE_TIME                      UNLIMITED
  SESSIONS_PER_USER              UNLIMITED;

 نکته: FAILED_LOGIN_ATTEMPTS و PASSWORD_LIFE_TIME عمداً نامحدود گذاشته شده‌اند تا باعث اختلال در اپلیکیشن نشوند. چرخش رمزها باید دستی و با هماهنگی انجام شود.

عدم تنظیم این موارد عمداً انجام شده:

  • PASSWORD_LIFE_TIME → چون باید با تیم اپلیکیشن هماهنگ شود و ممکن است باعث اختلال شود.

  • FAILED_LOGIN_ATTEMPTS → می‌تواند منجر به توقف کل اپلیکیشن شود. در عوض، از audit برای شناسایی تلاش‌های ناموفق استفاده می‌کنیم.

 

کاربران عادی (Normal / Human Users)

کاربرانی مانند تحلیل‌گرها، توسعه‌دهندگان، گزارش‌گیرها و غیره که به‌صورت مستقیم به دیتابیس متصل می‌شوند.

 اهداف:

  • رمزهای قوی و قابل تعویض

  • مدیریت فعالیت کاربران غیرفعال یا دارای خطاهای زیاد

 

پارامتر مقدار توضیح
PASSWORD_LIFE_TIME 90 رمز باید هر 90 روز تغییر کند
PASSWORD_GRACE_TIME 5 بعد از انقضای رمز، 5 روز مهلت برای تغییر وجود دارد
PASSWORD_REUSE_TIME 365 رمز قدیمی تا یک سال قابل استفاده مجدد نیست
PASSWORD_REUSE_MAX 10 حداقل 10 بار تغییر رمز قبل از اجازه استفاده مجدد
PASSWORD_VERIFY_FUNCTION ORA12C_VERIFY_FUNCTION یا نسخه سفارشی الزامات پیچیدگی رمز
FAILED_LOGIN_ATTEMPTS 5 بعد از 5 تلاش ناموفق، حساب قفل می‌شود
PASSWORD_LOCK_TIME 1 حساب قفل‌شده به مدت 1 روز قفل می‌ماند
INACTIVE_ACCOUNT_TIME 60 اگر کاربر تا 60 روز login نکند، حساب غیرفعال می‌شود
IDLE_TIME 30 اگر کاربر 30 دقیقه بدون فعالیت بماند، session بسته می‌شود
SESSIONS_PER_USER 3 جلوگیری از باز شدن تعداد زیاد session هم‌زمان

 

دستور ساخت پروفایل کاربران عادی:

 

CREATE PROFILE user_profile LIMIT
  PASSWORD_VERIFY_FUNCTION       vahiddb_19c_verify_function
  PASSWORD_REUSE_TIME            365
  PASSWORD_REUSE_MAX             10
  PASSWORD_LIFE_TIME             90
  PASSWORD_GRACE_TIME            5
  FAILED_LOGIN_ATTEMPTS          5
  PASSWORD_LOCK_TIME             1
  INACTIVE_ACCOUNT_TIME          60
  IDLE_TIME                      30
  SESSIONS_PER_USER              3;

این پروفایل برای توسعه‌دهنده‌ها، تحلیل‌گرها یا کاربرانی که مستقیم به دیتابیس متصل می‌شن مناسبه.

 

 کاربران ادمین (Admin / DBA Users)

کاربرانی با سطح دسترسی بالا (مانند DBA, SEC_ADMIN, SYSOPER) که نیاز به کنترل امنیتی شدید دارند.

 اهداف:

  • رمزهای بسیار قوی و چرخش سریع‌تر

  • محافظت در برابر حملات هدف‌دار

 تنظیمات پیشنهادی:

 

پارامتر مقدار توضیح
PASSWORD_LIFE_TIME 30 رمز باید هر 30 روز تغییر کند
PASSWORD_GRACE_TIME 5 بعد از انقضای رمز، 5 روز مهلت برای تغییر وجود دارد
PASSWORD_REUSE_TIME 365 رمز قدیمی تا یک سال قابل استفاده مجدد نیست
PASSWORD_REUSE_MAX 15 حداقل 15بار تغییر رمز قبل از اجازه استفاده مجدد
PASSWORD_VERIFY_FUNCTION ORA12C_VERIFY_FUNCTION یا نسخه سفارشی الزامات پیچیدگی رمز
FAILED_LOGIN_ATTEMPTS 3 بعد از 5 تلاش ناموفق، حساب قفل می‌شود
PASSWORD_LOCK_TIME 1 حساب قفل‌شده به مدت 1 روز قفل می‌ماند
INACTIVE_ACCOUNT_TIME 30 حساب‌های غیرفعال بعد از 30 روز قفل می‌شوند

 

دستور ساخت پروفایل کاربران ادمین:

 

CREATE PROFILE admin_profile LIMIT
  PASSWORD_VERIFY_FUNCTION       ORA12C_STIG_VERIFY_FUNCTION
  PASSWORD_REUSE_TIME            365
  PASSWORD_REUSE_MAX             15
  PASSWORD_LIFE_TIME             60
  PASSWORD_GRACE_TIME            5
  FAILED_LOGIN_ATTEMPTS          3
  PASSWORD_LOCK_TIME             1
  INACTIVE_ACCOUNT_TIME          30
  IDLE_TIME                      UNLIMITED
  SESSIONS_PER_USER              UNLIMITED;

تابع پیچیدگی در اینجا از نوع STIG استفاده شده که سخت‌گیرانه‌تر است. این پروفایل برای کاربران با دسترسی DBA و SYS مناسب است.

 

Oracle Profiles ابزار قدرتمندی برای پیاده‌سازی سیاست‌های امنیتی متناسب با نقش کاربر هستند. با تفکیک پروفایل به سه دسته‌ی اپلیکیشن، کاربران انسانی و ادمین‌ها می‌توان:

 امنیت را افزایش داد
 مدیریت کاربران را استاندارد کرد
 خطاهای انسانی یا نفوذ را به حداقل رساند