Eine Secure Application Roles wird mit „CREATE ROLE <name of the role> IDENTIFIED USING <plssql>“ angelegt.
Nur über diese PL/SQL Routine kann dann die Rolle enabled werden!
In der PL/SQL Routine kann der Entwickler dann selber definieren, welche Randparameter überprüft werden sollen bis die Rolle enabled wird.
Übersicht:
CREATE role myAPPRole identified using checkMyAppRules;
grant myAPPRole TO MyAPPUser;
exec secadmin.checkMyAppRules;
Eine so definierte Rolle kann nicht direct enabled werden!
BEGIN dbms_session.set_role('myAPPRole'); END; ERROR at line 1: ORA-28201: invalid command TO enable secure application ROLE 'myAPPRole' ORA-06512: at "SYS.DBMS_SESSION", line 194 ORA-06512: at line 1 SET ROLE myAPPRole * ERROR at line 1: ORA-28201: invalid command TO enable secure application ROLE 'myAPPRole'
Immer nur über die dafür vorgesehen PL/SQL Routine setzen!
D.h. der Anwender benötigt auf dieses Stück PL/SQL auch die entsprechenden Rechte!
Welche Rollen sind gerade in meiner Session aktiv:
SELECT * FROM session_roles;
Welche Rollen wurde durch eine „authentication policy function“ geschützt:
SELECT * FROM DBA_APPLICATION_ROLES;
Ein „Set Role“ setzt alle bestehenden Rollenzuordnungen zurück und enabled nur die angebene Liste von Rollen.
Ein „Set Role all“ enabled alle zugewiesenen Rollen, allerdings nicht die „Secure Application Roles“ !
D.h. wenn die bestehenden Rollen beibehalten werden sollen, muss in das SET Role Kommandio die Liste der gerade aktvierten Rollen mit aufgenommen werden!