Recherche…


Introduction

Oracle Real Application Security a été introduit dans Oracle 12c. Il résume de nombreux sujets de sécurité tels que le modèle de rôle d'utilisateur, le contrôle d'accès, l'application vs la base de données, la sécurité de l'utilisateur final ou le niveau de ligne et de colonne.

Application

Pour associer une application à quelque chose dans la base de données, il y a trois parties principales:

Privilège d'application: un privilège d'application décrit des privilèges tels que SELECT , INSERT , UPDATE , DELETE , ... Les privilèges d'application peuvent être résumés en tant que privilège d'agrégation.

XS$PRIVILEGE(
    name=>'privilege_name'
    [, implied_priv_list=>XS$NAME_LIST('"SELECT"', '"INSERT"', '"UPDATE"', '"DELETE"')]
)

XS$PRIVILEGE_LIST(
    XS$PRIVILEGE(...),
    XS$PRIVILEGE(...),
    ...
);

Utilisateur de l'application:

Utilisateur d'application simple:

BEGIN 
    SYS.XS_PRINCIPAL.CREATE_USER('user_name'); 
END;

Utilisateur d'application de connexion directe:

BEGIN 
    SYS.XS_PRINCIPAL.CREATE_USER(name => 'user_name', schema => 'schema_name');
END;

BEGIN 
    SYS.XS_PRINCIPAL.SET_PASSWORD('user_name', 'password'); 
END;
CREATE PROFILE prof LIMIT 
    PASSWORD_REUSE_TIME 1/4440 
    PASSWORD_REUSE_MAX 3 
    PASSWORD_VERIFY_FUNCTION Verify_Pass;

BEGIN 
    SYS.XS_PRINCIPAL.SET_PROFILE('user_name', 'prof'); 
END;

BEGIN 
    SYS.XS_PRINCIPAL.GRANT_ROLES('user_name', 'XSONNCENT');
END;

(optionnel:)

BEGIN 
    SYS.XS_PRINCIPAL.SET_VERIFIER('user_name', '6DFF060084ECE67F', XS_PRINCIPAL.XS_SHA512“); 
END;

Rôle d'application:

Rôle d'application régulière:

DECLARE
    st_date TIMESTAMP WITH TIME ZONE;
    ed_date TIMESTAMP WITH TIME ZONE;
BEGIN
    st_date := SYSTIMESTAMP;
    ed_date := TO_TIMESTAMP_TZ('2013-06-18 11:00:00 -5:00','YYYY-MM-DD HH:MI:SS');
    SYS.XS_PRINCIPAL.CREATE_ROLE
        (name => 'app_regular_role',
        enabled => TRUE,
        start_date => st_date,
        end_date => ed_date);
END;

Rôle d'application dynamique: (activé dynamiquement en fonction de l'état d'authenatication)

BEGIN
    SYS.XS_PRINCIPAL.CREATE_DYNAMIC_ROLE
        (name => 'app_dynamic_role',
        duration => 40,
        scope => XS_PRINCIPAL.SESSION_SCOPE);
END;

Rôles d'application prédéfinis:

Ordinaire:

  • XSPUBLIC
  • XSBYPASS
  • XSSESSIONADMIN
  • XSNAMESPACEADMIN
  • XSPROVISIONER
  • XSCACHEADMIN
  • XSDISPATCHER

Dynamique: (dépend de l'état d'authentification de l'utilisateur de l'application)

  • DBMS_AUTH : (connexion directe ou autre méthode d'authentification de base de données)
  • EXTERNAL_DBMS_AUTH : (connexion directe ou autre méthode d'authentification de base de données et utilisateur externe)
  • DBMS_PASSWD : (connexion directe avec mot de passe)
  • MIDTIER_AUTH : (authentification via une application de niveau intermédiaire)
  • XSAUTHENTICATED : (application directe ou intermédiaire)
  • XSSWITCH : (l'utilisateur est passé de l'utilisateur proxy à l'utilisateur de l'application)


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow