Conceptos básicos para la gestión de seguridad de una base de datos en Oracle.
- La seguridad del sistema: Se refiere a mecanismos que controlan el acceso y el uso de la base de datos. Lo que llamamos permisos del sistema.
- Seguridad de los datos: Son los mecanismos que controlan el acceso y uso de la base de datos a nivel del objectos (tablas, vistas, usuario, etc). Son lo que llamamos los permisos a nivel de objetos.
Seguridad del sistema
En lo referente a la seguridad del sistema es bastante importante saber que el administrador puede crear perfiles para limitar los recursos de la base de datos.Los factores más importantes que puede limitar son:
Recurso | Descripción |
SESSION_PER_USER | 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 calculo 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. |
La sintaxis para la creación de un perfil con varias limitaciones seria:
create profile nombre_perfil limit
{Entero [K|M] | unlimited | default};
Donde unlimited significa que no hay limite sobre un recurso particular y default significa que coge el limite del perfil DEFAULT
Para activar los perfiles el administrador debe ejecutar la siguiente orden:
alter system set resource_limit=true;
Para borrar un perfil tenemos que ejecutar la siguiente orden:
drop profile nombre_perfil [cascade];
Es importante saber si este perfil esta asignado a algún usuario ya que, si es así, tendremos que poner "cascade", para que lo elimine de esos usuarios también.
Otro factor importante en la seguridad a nivel de sistema es la gestión de tablespaces. Un tablespace es un espacio de la base de datos que contiene tablas o como su definición oficial nos dice, es una unidad lógica de almacenamiento de datos compuesta por uno o más archivos. En Oracle antes de introducir los datos en la base de datos tenemos que crear un tablespace para que nos deje trabajar.
Es importante tener un tablespace para cada tipo de datos es decir, un tablespace para cada aplicación.
La sintaxis de la creación de un tablespace es la siguiente:
create tablespace nombre_tablespace
datafile 'nombre_Archivo' [size entero [K|M]] [reuse]
[autoextend {off|on clausulas}]
[,'nombre_archivo' [size entero [K|M]] [reuse]
[autoextend {off|on clausulas}] ] ...
[ default storage
{
initial tamaño
next tamaño
minextents tamaño
maxextents tamaño
pctincrease valor
}]
[online|offline];
Donde:
- datafile: especifica el archivo/s de datos que constara el tablespace
- size: especifica el tamaño del tablesapce
- reuse: si el archivo ya existe lo reutiliza y sino lo crea.
- Dafault storage: define el almacenamiento por defecto para todos los objectos que se creen en ese tablespace
- initial: indica la extensión inicial del tablespace
- next: indica la extensión siguiente
- minextents: reserva extensiones adicionales a la extensión inicial y nos permite asignar gran cantidad de espacio cuando se crea un objeto. El valor por defecto es 1
- maxextents: es el número máximo de extensiones que se le asigna a un objecto
- pctincrease: factor de crecimiento para la extensión. Valor por defecto 50
- offline|online: nos indica si el tablespace esta operativo o no, después de su creación
Por defecto Oracle crea los siguientes tablespace:
- system: donde Oracle almacena toda la información para su propia gestión
- users: espacio de tablas donde se almacena la información personal de los usuarios
- temporary o temp: donde Oracle almacena las tablas temporales
- tools: espacio para hacer pruebas sobre la base de datos
- RBS: donde Oracle guarda la información al deshacer algún cambio.
Para modificar un tablespace cambiamos el create por el alter mientras que para borrarlo basta con hacer drop tablespace nombre_tablespace;