Common Mandatory Profiles  در پایگاه داده اوراکل 21C

مقدمه:با استفاده از Profle ها در سطح پایگاه داده اوراکل، می توان برخی از موارد کاربر مانند داشتن idle session و موارد مربوط به Password آن را کنترل کرد. در ارواکل 21c یک قابلیت جدیدی معرفی شده که با آن شما در سطح CDB یک Mandatory Profile ایجاد می کنید که فقط مقدار password_verify_function آن قابل تنظیم خواهد بود به وسیله آن پیچیدگی Password را درسطح همه PDB ها اعمال خواهید کرد.در این حالت password_verify_function که به وسیله Mandatory Profile ایجاد می شود بر password_verify_function همه Profile ها مقدم خواهد بود.ارائه خدمات پایگاه داده اوراکل در آرتارادنصب و راه اندازی :یک کاربر با دسترسی DBA در سطح CDB و یک کاربر با همان دسترسی در PDB ایجاد می کنیم.-- CDBconn sys/SysPassword1@//localhost:1521/cdb1 as sysdbacreate user c##my_dba_user identified by DbaPassword1 container=all;grant create session, dba, pdb_dba to c##my_dba_user container=all;-- PDBconn sys/SysPassword1@//localhost:1521/pdb1 as sysdbacreate user my_dba_user identified by DbaPassword1;grant create session, dba, pdb_dba to my_dba_user;Profile کاربر :در PDB یک تابع برای اعتبارستجی Password می سازیم که کنترل کند طول Password ها بیشتر از 8 حرف باشد.conn sys/SysPassword1@//localhost:1521/pdb1 as sysdbacreate or replace function user_pwd_verify_function (username varchar2,password varchar2,old_password varchar2)return boolean isbeginif not ora_complexity_check(password,chars => 8)thenreturn(false);end if;return(true);end;/در ادامه یک Profile معمولی ایجاد می کنیم واز تابع فوق استفاده می کنیم.create profile user_profilelimit password_verify_function user_pwd_verify_function;alter user my_dba_user profile user_profile;در ادامه عملکرد این Profile را بررسی می کنیم.conn my_dba_user/DbaPassword1@//localhost:1521/pdb1alter user my_dba_user identified by short;*ERROR at line 1:ORA-28003: password verification for the specified password failedORA-20000: password length less than 8 charactersalter user my_dba_user identified by DbaPassword1;User altered.SQLMandatory Profilesبرای این مورد ابتدا یک تابع برای سنجش پیچیدگی Password در سطح CDB ایجاد می کنیم.conn sys/SysPassword1@//localhost:1521/cdb1 as sysdbacreate or replace function c##cdb_pwd_verify_function (username varchar2,password varchar2,old_password varchar2)return boolean isbeginif not ora_complexity_check(password,chars => 16,uppercase => 1,lowercase => 1,digit => 1,special => 1)thenreturn(false);end if;return(true);end;/در ادامه در سطح CDB یک Mandatory Profile ایجاد می کنیم.باید به این نکته اشاره کرد که در Mandatory Profile فقط می توان password_verify_function را تنظیم کرد.create mandatory profile c##cdb_manadatory_profilelimitpassword_verify_function cdb_pwd_verify_functioncontainer = all;دقت کنید در هنگام ساخت باید از کلمه Mandatory استفاده شود.فعال کردن :برای فعال کردن این قابلیت باید پارمتر MADATORY_USER_PROFILE در سطح CDB را مقدار دهی کنیمalter system set mandatory_user_profile=c##cdb_manadatory_profile;show parameter mandatory_user_profileNAME TYPE VALUE---------------------- ------ -------------------------mandatory_user_profile string C##CDB_MANADATORY_PROFILESQL>به مثال های زیر برای ارزیابی توجه کنید.-- CDBconn c##my_dba_user/DbaPassword1@//localhost:1521/cdb1show parameter mandatory_user_profileNAME TYPE VALUE------------------------------------ ----------- ------------------------------mandatory_user_profile string C##CDB_MANADATORY_PROFILESQL>alter user c##my_dba_user identified by DbaPassword1 container=all;*ERROR at line 1:ORA-28219: password verification failed for mandatory profileORA-20000: password length less than 16 characters-- PDBconn my_dba_user/DbaPassword1@//localhost:1521/pdb1show parameter mandatory_user_profileNAME TYPE VALUE------------------------------------ ----------- ------------------------------mandatory_user_profile string C##CDB_MANADATORY_PROFILESQL>alter user my_dba_user identified by DbaPassword1;*ERROR at line 1:ORA-28219: password verification failed for mandatory profileORA-20000: password length less than 16 charactersنکته مهم : برای غیر فعال کردن آن کافیه مقدار پارامتر را تغییر دهید. اما این تغییر تا پایگاه داده ریستارت نشود، اعمال نمی گردد .!!!!!conn sys/SysPassword1@//localhost:1521/cdb1 as sysdbaalter system reset mandatory_user_profile;show parameter mandatory_user_profileNAME TYPE VALUE---------------------- ------ -------------------------mandatory_user_profile string C##CDB_MANADATORY_PROFILESQL>conn / as sysdbashutdown immediate;startup;show parameter mandatory_user_profileNAME TYPE VALUE------------------------------------ ----------- ------------------------------mandatory_user_profile stringSQL>تنظیم پارامتر در سطح PDBمی توان این پارامتر را فقط در سطح PDB تنظیم کرد. به مثال زیر توجه کنید .conn sys/SysPassword1@//localhost:1521/pdb1 as sysdbaalter system set mandatory_user_profile=c##cdb_manadatory_profile;show parameter mandatory_user_profileNAME TYPE VALUE------------------------------------ ----------- ------------------------------mandatory_user_profile string C##CDB_MANADATORY_PROFILESQL>-- CDBconn c##my_dba_user/DbaPassword1@//localhost:1521/cdb1show parameter mandatory_user_profileNAME TYPE VALUE------------------------------------ ----------- ------------------------------mandatory_user_profile stringSQL>alter user c##my_dba_user identified by DbaPassword1 container=all;User altered.SQL>-- PDBconn my_dba_user/DbaPassword1@//localhost:1521/pdb1show parameter mandatory_user_profileNAME TYPE VALUE------------------------------------ ----------- ------------------------------mandatory_user_profile string C##CDB_MANADATORY_PROFILESQL>alter user my_dba_user identified by DbaPassword1;*ERROR at line 1:ORA-28219: password verification failed for mandatory profileORA-20000: password length less than 16 characters