=====Eine "Secure Application Role" in der Oracle Datenbank verwenden===== Eine Secure Application Roles wird mit "**CREATE ROLE** **IDENTIFIED USING** " 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: {{ :dba:18c:oracle_18c_secure_application_role.png | Oracle Secure Application Role}} ===Ablauf:=== - Rolle anlegencreate role myAPPRole identified using checkMyAppRules; - Rolle dem User zuweisen grant myAPPRole to MyAPPUser; - Logik für die Rolle erstellenCREATE OR REPLACE PROCEDURE secadmin.checkMyAppRules AUTHID CURRENT_USER AS BEGIN IF (SYS_CONTEXT ('userenv','ip_address') BETWEEN '192.0.2.10' and '192.0.2.20' AND TO_CHAR (SYSDATE, 'HH24') BETWEEN 8 AND 17) THEN EXECUTE IMMEDIATE 'SET ROLE myAPPRole '; END IF; END; / - Recht auf die Routine dem User zuweisen Grant execute on secadmin.checkMyAppRules 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; => https://docs.oracle.com/en/database/oracle/oracle-database/18/refrn/DBA_APPLICATION_ROLES.html#GUID-C553C8EE-6EAC-4E1C-8A6A-2BDE17921910 ---- ==== 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