Seguridad SQL (Structured Query Language)

Anuncio
Concepto de USUARIO

Un usuario es un nombre definido en la base de datos que
puede conectarse a ella y acceder a determinada información
según los permisos que tenga asignados por el administrador

El objetivo de la creación de usuarios es establecer una cuenta
segura y útil, que tenga los privilegios adecuados y los valores
por defecto apropiados. En Oracle se puede especificar todo lo
necesario para abrir una cuenta con el comando CREATE
USER

Asociado a cada usuario existe un esquema con el mismo
nombre, que contiene una colección lógica de objetos. Por
defecto el usuario sólo tiene acceso a los objetos de su
esquema, a no ser que otro le de privilegios para acceder al
suyo.
Creación de Usuarios
En la instalación de Oracle se crean por defecto dos usuarios
con privilegios de administración, estos son:
- SYS: Propietario de las tablas del diccionario de datos
- SYSTEM: Puede crear usuarios, aunque no en su tablespace.


Sintaxis para la creación de usuarios:
CREATE USER nombre_usuario
IDENTIFIED BY clave
[DEFAULT TABLESPACE espacio_tabla ]
[TEMPORARY TABLESPACE espacio_tabla]
[QUOTA{entero{K|M}|UNLIMITED ON espacio_tabla ]
[PROFILE perfil]
Modificación y borrado de usuarios


MODIFICACION:
Cada usuario sólo puede cambiar su clave, a no ser que tenga
el privilegio ALTER USER.
ALTER USER nombre_usuario
IDENTIFIED BY clave_acceso
[DEFAULT ROLE nombrerol]
BORRADO:
Podemos borrar un usuario de la BD, incluidos sus objetos. El
privilegio que capacita para borrar usuarios es DROP USER.
DROP USER usuario [CASCADE];
PRIVILEGIOS


Son atributos que permiten a un usuario realizar determinadas
operaciones dentro de una BD o acceder a objetos de otros
usuarios.
Existen dos tipos de privilegios:
-
Privilegios sobre los objetos
Privilegios del sistema
Privilegios sobre los objetos

Derecho a ejecutar una acción sobre una tabla, vista,
secuencia, disparador o procedimiento almacenado específico.
Nos permiten acceder y realizar cambios en los datos de otros
usuarios.

Puede incluir permisos para pasar privilegios de uno a otro
usuario (with grant option).

Los privilegios son: alter, execute, delete, index, insert,
references, select, update, all.
Privilegios del sistema

Derecho a ejecutar un tipo de comando SQL sobre objetos de
un esquema, objetos de un tipo especificado, sobre el sistema o
sobre un usuario.

El administrador de la base de datos puede tener cualquier
variedad de privilegios del sistema.
Existen unos 80 privilegios distintos disponibles.

Sintaxis para otorgar privilegios:
GRANT
{privilegio1
[,
privilegio2
..]
|
rol}|ALL [privileges] [(columna1[, columna2])]
ON [usuario] objeto
TO {usuario| rol | public} [,{usuario| rol |
public}]
[WITH GRANT OPTION]|[WITH ADMIN OPTION]
Retirada de privilegios

De objetos a los usuarios o roles:
REVOKE {priv_objeto[,priv_objeto]...|ALL [privileges]}
ON [usuario.] objeto
FROM {usuario|rol|PUBLIC} [,{usuario|rol|PUBLIC}]...;

De sistema o roles a usuarios o a roles:
REVOKE {priv_sistema|rol} [, {priv_sistema|rol} ]...
FROM {usuario|rol|PUBLIC} [,{usuario|rol|PUBLIC}]...;
ROLES BASICOS

Es un objeto creado para simplificar el manejo de los privilegios en la
Base de Datos

Consiste en agrupar una serie de privilegios en un objeto llamado rol,
para que posteriormente este objeto sea otorgado a diferentes
usuarios o a otros roles.

Algunas propiedades de los roles son:






Una vez creados no tienen propietario.
Pueden ser asignados a algún usuario de la base de datos o a otro rol.
Pueden ser habilitados o deshabilitados por un usuario que tenga el
privilegio CREATE ROLE.
Se puede dar acceso a cualquier usuario a un rol excepto a uno mismo
(reflexiva).
Las definiciones de roles son almacenadas en el diccionario de datos.
Un rol puede decidir el acceso de un usuario a un objeto, pero no
puede permitir la creación de objetos.
Operaciones con roles
 Creación de un rol:
CREATE ROLE nombre_rol
 Modificación de un rol:
ALTER ROLE nombre_rol
 Borrado de un rol:
DROP ROLE nombre_rol
 Activar, desactivar un rol:
SET ROLE nombre_rol
 Conceder un permiso o un rol a un rol:
GRANT privilegio[,privilegio,...] ON nombre_tabla TO
nombre_rol
 Denegar un permiso o un rol a un rol:
REVOKE privilegio FROM nombre_rol
PERFILES

Son límites que permiten compartir recursos en la BD entre los
usuarios y restringen la cantidad de recursos del sistema y de la BD
disponible para un usuario.

Los recursos que pueden ser limitados por perfil son los siguientes:
RECURSO
SESSIONES_PER_USER
DESCRIPCION
El número de sesiones concurrentes que un usuario puede tener en una instancia.
CPU_PER_SESSION
El tiempo de CPU, en centenas de segundos, que una sesión puede utilizar.
CONNECT_TIME
El número de minutos que una sesión puede permanecer activa.
IDLE_TIME
El número de minutos que una sesión puede permanecer sin que sea utilizada de manera
activa.
LOGICAL_READS_PER_
SESSION
El número de bloques de datos que se pueden leer en una sesión.
LOGICAL_READS_PER_
CALL
El número de bloques de datos que se pueden leer en una operación.
PRIVATE_SGA
La cantidad de espacio privado que una sesión puede reservar en la zona de SQL compartido
de la SGA.
COMPOSITE_LIMIT
El número de total de recursos por sesión, en unidades de servicio. Esto resulta de un cálculo
ponderado de CPU_PER_SESSION, CONNECT_TIME, LOGICAL_READS_PER_SESSION y
PRIVATE_SGA, cuyos pesos se pueden variar con el comando ALTER RESOURCE COST.
Descargar