در مدیریت کاربران دیتابیس اوراکل، یکی از ابزارهای کلیدی برای اعمال سیاستهای امنیتی، Profile است. با استفاده از پروفایل میتوان محدودیتهای مشخصی مانند پیچیدگی رمز عبور، تعداد تلاش ناموفق برای ورود، زمان انقضای رمز و محدودیتهای مصرفی را روی کاربران اعمال کرد.
در این مقاله، ما کاربران را در سه دسته اصلی تقسیم کردهایم و برای هر دسته، تنظیمات متفاوتی در نظر میگیریم تا هم امنیت رعایت شود، هم کارایی سیستم حفظ گردد:
کاربران اپلیکیشن (Application Users)
کاربران سرویسگرا که از طریق اپلیکیشن یا واسطهای API به دیتابیس متصل میشوند.
اهداف:
-
جلوگیری از توقف اپلیکیشن در اثر قفل شدن کاربر
-
مدیریت دستی رمزها توسط تیم DBA
پارامتر | مقدار پیشنهادی | توضیح |
PASSWORD_REUSE_TIME | 365 | جلوگیری از استفاده مجدد زودهنگام رمز |
PASSWORD_REUSE_MAX | 3 | اجبار به تغییر چندباره رمز پیش از امکان استفاده مجدد |
PASSWORD_VERIFY_FUNCTION | ORA12C_VERIFY_FUNCTION یا نسخه سفارشی |
اطمینان از رمز قوی |
در مورد پیچیدگی پسورد می توانیم به مقاله ای که به همین منظور تهیه شده است مراجعه کنید.
دستور ساخت پروفایل کاربران اپلیکیشن:
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 ابزار قدرتمندی برای پیادهسازی سیاستهای امنیتی متناسب با نقش کاربر هستند. با تفکیک پروفایل به سه دستهی اپلیکیشن، کاربران انسانی و ادمینها میتوان:
امنیت را افزایش داد
مدیریت کاربران را استاندارد کرد
خطاهای انسانی یا نفوذ را به حداقل رساند