Benutzer-Werkzeuge

Webseiten-Werkzeuge


dba:secure_application_role

Eine "Secure Application Role" in der Oracle Datenbank verwenden

Eine Secure Application Roles wird mit „CREATE ROLE <name of the role> IDENTIFIED USING <fc #800000><plssql></fc>“ 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:

 Oracle Secure Application Role

Ablauf:

  1. Rolle anlegen
    CREATE role myAPPRole identified using checkMyAppRules;
  2. Rolle dem User zuweisen
     grant myAPPRole TO MyAPPUser;
  3. Logik für die Rolle erstellen
    CREATE 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;
    /
  4. Recht auf die Routine dem User zuweisen
    Grant EXECUTE ON secadmin.checkMyAppRules TO MyAPPUser;
  5. Als App User die Routine zum Setzen der Rolle aufrufen
    exec secadmin.checkMyAppRules;
  6. 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

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
"Autor: Gunther Pipperr"
dba/secure_application_role.txt · Zuletzt geändert: 2018/11/19 11:53 von gpipperr