Inhaltsverzeichnis
Eine "Secure Application Role" in der Oracle Datenbank verwenden
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:
Ablauf:
- Rolle anlegen
CREATE role myAPPRole identified using checkMyAppRules;
- Rolle dem User zuweisen
grant myAPPRole TO MyAPPUser;
- Als App User die Routine zum Setzen der Rolle aufrufen
exec secadmin.checkMyAppRules;
- Der User kann nun die Rolle verwenden, bzw. hat die Rechte an der Rolle
Secure Application Role - ORA-28201 Fehler
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!
Überwachen / Kontrollieren
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;
Set Role Verhalten beachten!
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!
Quellen
- Creating Secure Application Roles to Control Access to Applications Oracle 18c ⇒ https://docs.oracle.com/en/database/oracle/oracle-database/18/dbseg/managing-security-for-application-developers.html#GUID-AA09D0FE-7B88-43E8-B76D-7A6C50AA99E8
- Controlling Access to Applications with Secure Application Roles 18c ⇒ https://docs.oracle.com/en/database/oracle/oracle-database/12.2/tdpsg/managing-user-privileges.html#GUID-B779D8DB-48E6-4268-9B87-20E49122E87E