DataSunrise Logra el Estado de Competencia en AWS DevOps en AWS DevSecOps y Monitoreo, Registro, Rendimiento

Oracle's native RBAC

Dominando el RBAC Nativo de Oracle – Parte 2

RBAC nativo de Oracle - Parte 2 Avanzado

4. Conceptos Avanzados del RBAC Nativo de Oracle

La implementación RBAC de Oracle ofrece características avanzadas que proporcionan mayor flexibilidad y granularidad en la gestión del control de acceso. Exploremos algunos de estos conceptos avanzados.

4.1 Jerarquías de Roles

Las jerarquías de roles permiten establecer relaciones de padre-hijo entre roles. Un rol hijo tiene los mismos privilegios que su rol padre. Además, el rol hijo recibe cualquier privilegio adicional otorgado específicamente a él. Esto permite la creación de una estructura jerárquica de roles, simplificando la gestión de políticas de control de acceso complejas.

Para crear una jerarquía de roles en Oracle, se utiliza la instrucción GRANT para otorgar un rol a otro rol. Por ejemplo:

-- Crear un rol padre llamado "manager"
CREATE ROLE manager;
-- Otorgar privilegios al rol "manager"
GRANT SELECT, INSERT, UPDATE ON employees TO manager;
-- Crear un rol hijo llamado "sales_manager"
CREATE ROLE sales_manager;
-- Otorgar el rol "manager" al rol "sales_manager"
GRANT manager TO sales_manager;
-- Otorgar privilegios adicionales específicos para el rol "sales_manager"
GRANT SELECT ON sales TO sales_manager;

En este ejemplo, creamos un rol padre llamado “manager” y le otorgamos privilegios en la tabla “employees”. Luego, creamos un rol hijo llamado “sales_manager” y le otorgamos el rol “manager”. El “sales_manager” tiene todos los mismos privilegios que el “manager”, más privilegios adicionales relacionados con las ventas.

Las jerarquías de roles simplifican la gestión de privilegios al establecer privilegios básicos en niveles superiores y personalizarlos en niveles inferiores. Esto reduce la redundancia y facilita el mantenimiento y la actualización de las políticas de control de acceso.

4.2 Roles de Aplicación Seguros

Estos roles seguro dependen típicamente de la ejecución exitosa de un paquete o función PL/SQL.

Para crear un rol de aplicación seguro en Oracle, use la instrucción CREATE ROLE con la cláusula IDENTIFIED USING. Este paquete o función especifica qué rol debe ser habilitado. Por ejemplo:

-- Crear un paquete PL/SQL para verificar condiciones
CREATE OR REPLACE PACKAGE security_pkg IS
FUNCTION check_access RETURN BOOLEAN;
END security_pkg;
/
-- Crear un rol de aplicación seguro
CREATE ROLE secure_role IDENTIFIED USING security_pkg.check_access;
-- Otorgar privilegios al rol de aplicación seguro
GRANT SELECT ON sensitive_data TO secure_role;

En este ejemplo, creamos un paquete PL/SQL llamado “security_pkg” que contiene una función “check_access”. Esta función determina si el rol de aplicación seguro debe activarse. Considera factores como la dirección IP del usuario, la hora actual y reglas específicas de la aplicación.

A continuación, creamos un rol seguro llamado “secure_role” usando la cláusula IDENTIFIED USING y la especificación “security_pkg.check_access”. El rol solo se habilita cuando la función “check_access” devuelve TRUE.

Otorgamos acceso especial al rol de aplicación seguro, por lo que los usuarios con el rol y que cumplen los requisitos pueden ver datos sensibles.

Los roles de aplicación seguros mejoran las medidas generales de seguridad al activar los roles solo cuando se cumplen ciertas condiciones, añadiendo una capa extra de control. Esto evita el acceso no autorizado y añade un nivel adicional de control más allá de los métodos tradicionales de acceso basado en roles.

4.3 Control de Acceso de Granularidad Fina

El control de acceso de granularidad fina en el RBAC nativo de Oracle permite decidir quién puede acceder a los datos en función de condiciones o atributos específicos en detalle. Esto significa que puede controlar el acceso a los datos a un nivel extremadamente granular.

Puede especificar exactamente quién tiene permiso para ver o modificar ciertos datos. El control de acceso de granularidad fina le da la capacidad de restringir el acceso en función de criterios o atributos específicos. Oracle ofrece herramientas como VPD y OLS para un control de acceso preciso en bases de datos.

VPD le permite agregar reglas de seguridad a las consultas SQL para una tabla o vista. Estas políticas pueden imponer seguridad a nivel de fila en función de los atributos del usuario o el contexto de la aplicación. Por ejemplo:

-- Crear una función de política VPD
CREATE OR REPLACE FUNCTION policy_func (
schema_var IN VARCHAR2,
table_var IN VARCHAR2
)
RETURN VARCHAR2
IS
BEGIN
RETURN 'department_id = SYS_CONTEXT(''USERENV'', ''DEPARTMENT_ID'')';
END;
/
-- Aplicar la política VPD a una tabla
BEGIN
DBMS_RLS.ADD_POLICY (
object_schema => 'HR',
object_name => 'EMPLOYEES',
policy_name => 'EMP_POLICY',
function_schema => 'HR',
policy_function => 'POLICY_FUNC',
statement_types => 'SELECT,UPDATE,DELETE',
update_check => TRUE
);
END;
/

En este ejemplo, creamos una función de política VPD llamada “policy_func”. Esta función genera una regla según el ID de departamento del usuario. La función devuelve una condición que asegura que los usuarios solo pueden acceder a los registros que pertenecen a su propio departamento.

A continuación, aplicamos la política VPD a la tabla “EMPLOYEES” con el procedimiento DBMS_RLS.ADD_POLICY. Especificamos la función de la política y los tipos de instrucciones a las que se aplica.

La política VPD permite a los usuarios acceder y modificar registros que coincidan con su ID de departamento. Esto proporciona un control preciso sobre el acceso a nivel de fila.

Oracle Label Security (OLS) es otra característica que permite el control de acceso de granularidad fina basado en etiquetas de clasificación de datos. OLS permite etiquetar filas de datos y controlar el acceso en función de las etiquetas del usuario. Esto es particularmente útil en entornos con datos sensibles que requieren estricta confidencialidad y segregación de datos.

El control de acceso de granularidad fina mejora el RBAC al agregar niveles adicionales de seguridad. Permite imponer reglas de acceso basadas en atributos o condiciones de datos específicos.

Control de Acceso Basado en Atributos (ABAC)

ABAC es una forma de controlar el acceso considerando los atributos del usuario, los atributos del recurso y el entorno para determinar los permisos de acceso. ABAC proporciona un enfoque más dinámico y flexible en comparación con el RBAC tradicional.

En ABAC, las políticas de control de acceso se definen en función de atributos en lugar de roles. Los atributos son características que pueden incluir detalles del usuario, detalles del recurso y detalles del entorno.

Los detalles del usuario pueden incluir título del puesto o departamento. Los detalles del recurso pueden incluir clasificación de datos o nivel de sensibilidad. Los detalles del entorno pueden incluir la hora del día o la ubicación.

Oracle admite ABAC a través de diversas características y tecnologías, como Oracle Entitlements Server (OES) y Oracle Access Manager (OAM). Estas soluciones permiten definir políticas basadas en atributos y hacerlas cumplir en diferentes aplicaciones y recursos.

A continuación, se muestra un ejemplo de cómo se puede implementar ABAC utilizando Oracle Entitlements Server:

-- Definir atributos de usuario
CREATE ATTRIBUTE USER_ATTRIBUTES.JOB_TITLE VARCHAR(255);
CREATE ATTRIBUTE USER_ATTRIBUTES.DEPARTMENT VARCHAR(255);
CREATE ATTRIBUTE USER_ATTRIBUTES.SECURITY_CLEARANCE VARCHAR(255);
-- Definir atributos de recurso
CREATE ATTRIBUTE RESOURCE_ATTRIBUTES.CLASSIFICATION VARCHAR(255);
CREATE ATTRIBUTE RESOURCE_ATTRIBUTES.SENSITIVITY_LEVEL VARCHAR(255);
-- Definir una política ABAC
CREATE POLICY ACCESS_POLICY
GRANT VIEW ON RESOURCE
WHERE RESOURCE_ATTRIBUTES.CLASSIFICATION = 'CONFIDENTIAL'
AND USER_ATTRIBUTES.SECURITY_CLEARANCE >= 'SECRET'
AND USER_ATTRIBUTES.DEPARTMENT = 'FINANCE';

En este ejemplo, hablamos sobre títulos de trabajo y departamentos de los usuarios, así como sobre clasificaciones y niveles de sensibilidad de los recursos.

Tenemos una política llamada “ACCESS_POLICY”. Esta política solo permite a los usuarios con autorización de seguridad ‘SECRET’ y en el departamento de ‘FINANCE’ ver recursos ‘CONFIDENTIAL’.

Las políticas ABAC pueden ser más complejas e incluir múltiples atributos y condiciones. El motor de evaluación de políticas examina los detalles del usuario, recurso y entorno para determinar si se debe otorgar acceso.

ABAC complementa al RBAC al proporcionar un enfoque más dinámico y detallado para el control de acceso. Permite decisiones de control de acceso más flexibles y conscientes del contexto basadas en una combinación de atributos.

6. Listas de Control de Acceso (ACLs)

Las Listas de Control de Acceso (ACLs) son otro mecanismo para controlar el acceso a recursos. Las ACLs se utilizan para especificar permisos para usuarios individuales o grupos en objetos o recursos específicos.

En Oracle, las ACLs se utilizan a menudo para gestionar el acceso a recursos de red externos como servicios web o bases de datos remotas. Oracle proporciona un mecanismo de ACL incorporado a través del paquete DBMS_NETWORK_ACL_ADMIN.

A continuación, se muestra un ejemplo de cómo crear una ACL y otorgar permisos usando el paquete DBMS_NETWORK_ACL_ADMIN:

-- Crear una ACL
BEGIN
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL (
acl => 'my_acl.xml',
description => 'ACL para acceder a un servicio web externo',
principal => 'HR_USER',
is_grant => TRUE,
privilege => 'connect'
);
END;
/ -- Asignar la ACL a un host de red BEGIN
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL (
acl => 'my_acl.xml',
host => 'www.example.com',
lower_port => 80,
upper_port => 80
);
END;
/

En este ejemplo, creamos una ACL llamada “my_acl.xml” utilizando el procedimiento DBMS_NETWORK_ACL_ADMIN.CREATE_ACL. Especificamos el principal (usuario o rol) al que se aplica la ACL, en este caso, ‘HR_USER’. También establecemos el permiso a ‘connect’, lo que permite al principal establecer una conexión con el recurso externo.

A continuación, asignamos la ACL a un host de red específico utilizando el procedimiento DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL. Especificamos el nombre de la ACL, el nombre del host o la dirección IP, y el rango de puertos al que se aplica la ACL.

Con esta ACL en su lugar, el ‘HR_USER’ podrá conectarse al host de red específico en el rango de puertos designado.

Las ACLs ayudan a controlar el acceso a recursos externos en detalle, trabajando junto con los mecanismos de control de acceso de la base de datos. Son útiles para gestionar recursos de red y garantizar que solo usuarios o aplicaciones autorizadas puedan acceder a ellos.

Esto concluye la Parte 2. En la última Parte 3 cubriremos los Roles en más detalle.

¿Busca soluciones profesionales de seguridad de bases de datos? Únase a nosotros en línea para una sesión demo completa sobre la gestión de Usuarios y Roles en DataSunrise, que ofrece soluciones avanzadas para bases de datos Oracle. Descubra cómo simplificar el control de acceso y mejorar la seguridad con nuestra plataforma intuitiva.

Siguiente

Dominando el RBAC Nativo de Oracle: Una Guía Completa – Parte 3

Dominando el RBAC Nativo de Oracle: Una Guía Completa – Parte 3

Más información

¿Necesita la ayuda de nuestro equipo de soporte?

Nuestros expertos estarán encantados de responder a sus preguntas.

Countryx
United States
United Kingdom
France
Germany
Australia
Afghanistan
Islands
Albania
Algeria
American Samoa
Andorra
Angola
Anguilla
Antarctica
Antigua and Barbuda
Argentina
Armenia
Aruba
Austria
Azerbaijan
Bahamas
Bahrain
Bangladesh
Barbados
Belarus
Belgium
Belize
Benin
Bermuda
Bhutan
Bolivia
Bosnia and Herzegovina
Botswana
Bouvet
Brazil
British Indian Ocean Territory
Brunei Darussalam
Bulgaria
Burkina Faso
Burundi
Cambodia
Cameroon
Canada
Cape Verde
Cayman Islands
Central African Republic
Chad
Chile
China
Christmas Island
Cocos (Keeling) Islands
Colombia
Comoros
Congo, Republic of the
Congo, The Democratic Republic of the
Cook Islands
Costa Rica
Cote D'Ivoire
Croatia
Cuba
Cyprus
Czech Republic
Denmark
Djibouti
Dominica
Dominican Republic
Ecuador
Egypt
El Salvador
Equatorial Guinea
Eritrea
Estonia
Ethiopia
Falkland Islands (Malvinas)
Faroe Islands
Fiji
Finland
French Guiana
French Polynesia
French Southern Territories
Gabon
Gambia
Georgia
Ghana
Gibraltar
Greece
Greenland
Grenada
Guadeloupe
Guam
Guatemala
Guernsey
Guinea
Guinea-Bissau
Guyana
Haiti
Heard Island and Mcdonald Islands
Holy See (Vatican City State)
Honduras
Hong Kong
Hungary
Iceland
India
Indonesia
Iran, Islamic Republic Of
Iraq
Ireland
Isle of Man
Israel
Italy
Jamaica
Japan
Jersey
Jordan
Kazakhstan
Kenya
Kiribati
Korea, Democratic People's Republic of
Korea, Republic of
Kuwait
Kyrgyzstan
Lao People's Democratic Republic
Latvia
Lebanon
Lesotho
Liberia
Libyan Arab Jamahiriya
Liechtenstein
Lithuania
Luxembourg
Macao
Madagascar
Malawi
Malaysia
Maldives
Mali
Malta
Marshall Islands
Martinique
Mauritania
Mauritius
Mayotte
Mexico
Micronesia, Federated States of
Moldova, Republic of
Monaco
Mongolia
Montserrat
Morocco
Mozambique
Myanmar
Namibia
Nauru
Nepal
Netherlands
Netherlands Antilles
New Caledonia
New Zealand
Nicaragua
Niger
Nigeria
Niue
Norfolk Island
North Macedonia, Republic of
Northern Mariana Islands
Norway
Oman
Pakistan
Palau
Palestinian Territory, Occupied
Panama
Papua New Guinea
Paraguay
Peru
Philippines
Pitcairn
Poland
Portugal
Puerto Rico
Qatar
Reunion
Romania
Russian Federation
Rwanda
Saint Helena
Saint Kitts and Nevis
Saint Lucia
Saint Pierre and Miquelon
Saint Vincent and the Grenadines
Samoa
San Marino
Sao Tome and Principe
Saudi Arabia
Senegal
Serbia and Montenegro
Seychelles
Sierra Leone
Singapore
Slovakia
Slovenia
Solomon Islands
Somalia
South Africa
South Georgia and the South Sandwich Islands
Spain
Sri Lanka
Sudan
Suriname
Svalbard and Jan Mayen
Swaziland
Sweden
Switzerland
Syrian Arab Republic
Taiwan, Province of China
Tajikistan
Tanzania, United Republic of
Thailand
Timor-Leste
Togo
Tokelau
Tonga
Trinidad and Tobago
Tunisia
Turkey
Turkmenistan
Turks and Caicos Islands
Tuvalu
Uganda
Ukraine
United Arab Emirates
United States Minor Outlying Islands
Uruguay
Uzbekistan
Vanuatu
Venezuela
Viet Nam
Virgin Islands, British
Virgin Islands, U.S.
Wallis and Futuna
Western Sahara
Yemen
Zambia
Zimbabwe
Choose a topicx
Información General
Ventas
Servicio al Cliente y Soporte Técnico
Consultas sobre Asociaciones y Alianzas
Información general:
info@datasunrise.com
Servicio al Cliente y Soporte Técnico:
support.datasunrise.com
Consultas sobre Asociaciones y Alianzas:
partner@datasunrise.com