jueves, 4 de agosto de 2022

5.SISTEMA DE PRIVILEGIOS Y ROLES

 


En Oracle aparece también el sistema de roles mediante el cual se permite solo a ciertos usuarios gestionar datos así como imponer restricciones de acceso o acciones concretas sobre objetos como bases de datos, tablas, filas e incluso recursos como tiempo de CPU. 
Los roles agrupan privilegios u otros roles bajo un mismo nombre para facilitar su asignación a muchos usuarios. Oracle distingue dos tipos de privilegios en este sentido:
 Privilegios de sistema para permitir realizar acciones administrativas de carácter general en la base de n datos. 
Están registrados en la tabla DBA_SYS_PRIVS del diccionario de datos. Privilegios asociados con objetos del servidor. 

 Gestión de privilegios

 Podemos dar y quitar privilegios a usuarios y roles con GRANT y REVOKE. GRANT { grant_system_privileges
 | grant_object_privileges 
} ; 
{ system_privilege 
| role 
| ALL PRIVILEGES } grant_system_privileges::=
 [, { system_privilege | role | ALL PRIVILEGES 
]... 
TO grantee_clause 
[ WITH ADMIN OPTION ] 
grant_object_privileges::= { object_privilege | ALL [ PRIVILEGES ] } [ (column [, column ]...) ] [, { object_privilege | ALL [ PRIVILEGES] } [  (column [, column ]...) ] 
]... 
on_object_clause
 TO grantee_clause 
[ WITH HIERARCHY OPTION ]
[ WITH GRANT OPTION ] 
on_object_clause ::= 
{ [ schema. ] object 
| { DIRECTORY directory_name
 | JAVA { SOURCE | RESOURCE } [ schema. ] object

system_privilege n : nombre del privilegio concedido. 
role n : nombre del rol concedido. 
IDENTIFIED BY n : cuando se concede un privilegio de sistema debe incluirse el usuario (si no existe) y password. 
WITH ADMIN OPTION n : para permitir al usuario conceder el mismo privilegio a otros usuarios. 
grantee_clause n : indica los usuarios o roles a los que se concede el privilegio. 
grant_object_privileges n : cláusulas para privilegios de objetos. object_privilege n : nombre del privilegio de objeto. 
ALL [PRIVILEGES] n : todos los privilegios sobre el objeto. 
Column n : columna de la tabla o vista sobre la que se concede el privilegio. on_object_clause n : identifica el objeto sobre el que se conceden los privilegios. 
WITH GRANT OPTION n : permite al usuario conceder y revocar el privilegio a otros. 
WITH HIERARCHY OPTION n : Permite conceder el privilegio en todos los subobjetos, como subvistas. 
Object n : nombre del objeto sobre el que se conceden los privilegios. Pueden ser tablas y vistas, secuencias, procedimientos, funciones o paquetes (funciones agrupadas), tipos de datos definidos por el usuario, alias de los objetos anteriores, directorios, librerías, operadores o índices, código fuente de Java y clases de Java.

Gestión de roles de usuarios

Normalmente los roles sirven para facilitar la gestión de aplicaciones de bases de datos utilizando los llamados roles de aplicación y de privilegios para grupos de usuarios con similares requerimientos. 
Crear un rol Para ello usamos el comando 
CREATE ROLE:
 create_role::= 
CREATE ROLE role
 [ NOT IDENTIFIED 
| IDENTIFIED { BY password
 | USING [ schema. ] package

role n : nombre del rol a crear. 
NOT n IDENTIFIED: no se requiere una contraseña para activar el rol. IDENTIFIED n : para indicar que un usuario debe ser autorizado por el método especificado antes de que se active el rol con el comando SET ROLE
BY password n : indica el password necesario para poder activar el rol por parte del usuario. Por ejemplo, para crear un rol director con un password: 
CREATE ROLE ebanca_director IDENTIFIED BY warehouse; 
Así los usuarios a los que se conceda el rol deben especificar el password para activar el rol. 

Activar un rol 

Con el comando SET ROLE podemos activar o desactivar un rol (cuando iniciamos sesión todos salvo los activos por defecto están inactivos). 

SET ROLE 
( role_name [ IDENTIFIED BY password ]
 | ALL [EXCEPT role1, role2, ... ]
| NONE );

role_name n : nombre del rol a activar. 
IDENTIFIED BY password n : contraseña para activarlo si es que se creó con contraseña. 
ALL n : indica que todos los roles deben activarse para dicho usuario y sesión salvo los iniciados por EXCEPT. 
NONE n : desactiva todos los roles incluidos los activos por defecto.

Modificar un rol 

El comando es muy similar así como el significado de las distintas cláusulas. 
ALTER ROLE clerk IDENTIFIED EXTERNALLY; 
ALTER ROLE role 
{ NOT IDENTIFIED 
| IDENTIFIED 
{ BY password | USING [ schema. ] package } } ; 

Eliminar roles

DROP ROLE role ;


CREAR LISTAS DE CONTROL DE ACCESO
 
Oracle permite crear listas de control de acceso para restringir los equipos a los que ciertos usuarios tienen acceso. Para tal fin dispone de un paquete (conjunto de funciones) llamado DBMS_NETWORK_ACL_ADMIN con las funciones necesarias.

Creando la lista de control 
Con el procedimiento DBMS_NETWORK_ACL_ADMIN.CREATE_ACL pasándole los parámetros correspondientes según la sintaxis siguiente: 

BEGIN 
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL ( 
acl => ‘file_name.xml’, 
description => ‘file description’, 
principal => ‘user_or_role’,
 is_grant => TRUE|FALSE, privilege => ‘connect|resolve’,
start_date => null|timestamp_with_time_zone, 
end_date => null|timestamp_with_time_zone); 
END;

acl n : nombre del fichero xml generado con los datos de la acl. 
description n : breve descripción del objeto de esta acl. 
principal n : la cuenta principal de usuario al que se concede o deniega el permiso. 
is_grant n : para especificar si se concede o no el permiso. 
privilege n : el permiso es connect para permitir al usuario conecta ra servicios en equipos externos (cuando el usuario hace uso de los paquetes UTL_TCP, UTL_HTTP, UTL_SMTP y UTL_MAIL) o resolve para permitir resolver direcciones IP (cuando se hace uso del paquete UTIL_INADDR). 
start_date/end_date n : (opcional) fecha de comienzo/fin de la lista.

Asignar los hosts

Tras crear la lista se requiere incluir los hosts para los que se creó la lista, para lo cual usamos el procedimiento almacenado:

DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL
BEGIN 
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL ( 
acl => ‘file_name.xml’, 
host => ‘network_host’, 
lower_port => null|port_number, 
upper_port => null|port_number); 
END;
 /
acl n : nombre de la acl. 
host n : nombre del equipo. 
lower_port/upper_port n : (opcional) el rango de puertos permitido.




 

No hay comentarios:

Publicar un comentario

10. ARQUITECTURA DE SQL SERVER

   10. ARQUITECTURA DE SQL SERVER Los componentes de SQL se dividen en dos amplios grupos: el motor relacional y las utilidades externas. SQ...