Oracle Database
Seguridad de aplicación real
Buscar..
Introducción
Oracle Real Application Security se introdujo en Oracle 12c. Resume muchos temas de seguridad, como el modelo de rol del usuario, el control de acceso, la aplicación frente a la base de datos, la seguridad del usuario final o la seguridad a nivel de fila y columna.
Solicitud
Para asociar una aplicación con algo en la base de datos hay tres partes principales:
Privilegio de la aplicación: un privilegio de la aplicación describe privilegios como SELECT
, INSERT
, UPDATE
, DELETE
, ... Los privilegios de la aplicación se pueden resumir como un privilegio agregado.
XS$PRIVILEGE(
name=>'privilege_name'
[, implied_priv_list=>XS$NAME_LIST('"SELECT"', '"INSERT"', '"UPDATE"', '"DELETE"')]
)
XS$PRIVILEGE_LIST(
XS$PRIVILEGE(...),
XS$PRIVILEGE(...),
...
);
Usuario de la aplicación:
Usuario de aplicación simple:
BEGIN
SYS.XS_PRINCIPAL.CREATE_USER('user_name');
END;
Usuario de la aplicación de inicio de sesión directo:
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;
(Opcional:)
BEGIN
SYS.XS_PRINCIPAL.SET_VERIFIER('user_name', '6DFF060084ECE67F', XS_PRINCIPAL.XS_SHA512“);
END;
Papel de la aplicación:
Rol de aplicación regular:
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;
Rol de aplicación dinámica: (se habilita dinámicamente en función del estado de autenticación)
BEGIN
SYS.XS_PRINCIPAL.CREATE_DYNAMIC_ROLE
(name => 'app_dynamic_role',
duration => 40,
scope => XS_PRINCIPAL.SESSION_SCOPE);
END;
Roles de aplicación predefinidos:
Regular:
-
XSPUBLIC
-
XSBYPASS
-
XSSESSIONADMIN
-
XSNAMESPACEADMIN
-
XSPROVISIONER
-
XSCACHEADMIN
-
XSDISPATCHER
Dinámico: (depende del estado de autenticación del usuario de la aplicación)
-
DBMS_AUTH
: (inicio de sesión directo u otro método de autenticación de base de datos) -
EXTERNAL_DBMS_AUTH
: (inicio de sesión directo u otro método de autenticación de base de datos y el usuario es externo) -
DBMS_PASSWD
: (inicio de sesión directo con contraseña) -
MIDTIER_AUTH
: (autenticación a través de la aplicación de nivel medio) -
XSAUTHENTICATED
: (aplicación de nivel directo o medio) -
XSSWITCH
: (usuario cambiado de usuario proxy a usuario de aplicación)