Oracle Database
Sécurité des applications réelles
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)