Está en la página 1de 5

Seguridad en Oracle

Existen dos tipos de seguridad en un sistema gestor de base de datos. El


primero es el encaminado a la seguridad del sistema y el segundo el
encaminado a la seguridad de los datos.
Lo que hace tener una cierta seguridad en nuestros datos es la utilizacin de
usuarios.
Usuario
Es un nombre definido en la base de datos que se puede conectar a ella y
acceder a determinados objetos segn ciertas condiciones que establece el
administrador.
Los objetos del diccionario de datos a los que un usuario puede acceder se
encuentran en la vista DICTIONARY, que es propiedad del usuario SYS.
DESC DICTIONARY;
Con la orden:
SELECT TABLENAME FROM DICTIONARY;
Se visualizan los objetos del diccionario de datos a los que se puede acceder.
Creacin de usuarios:
CREATE USER NOMBRE_USUARIO
IDENTIFIED BY CLAVE_ACCESO
[DEFAULT TABLESPACE ESPACIO_TABLA]
[TEMPORARY TABLESPACE ESPACIO_TABLA]
[QUOTA {ENTERO {K | M} | UNLIMITED } ON ESPACIO_TABLA]
[PROFILE PERFIL];
DEFAULT TABLESPACE Asigna a un usuario el tablespace por defecto para
almacenar los objetos que cree. Si no se asigna ninguno, el tablespace por
defecto es SYSTEM.
TEMPORARY TABLESPACE Especifica el nombre del tablespace para
trabajar temporales. Si no se especifica ninguno, el tablespace por defecto es
SYSTEM.
QUOTA Asigna un espacio en megabites o kilobites en el tablespace asignado.
Si no se especifica esta clusula, el usuario no tiene cuota asignada y no podr
crear objetos en el tablespace. Para tener espacio y acceso ilimitad a un
tablespace es:
GRANT UNLIMITED TABLESPACE NOMBRE_TABLESPACE;

PROFILE Asigna un perfil a un usuario.


Modificacin de usuarios:
ALTER USER NOMBRE_USUARIO
IDENTIFIED BY CLAVE _ACCESO
[DEFAULT TABLESPACE ESPACIO_TABLA]
[TEMPORARY TABLESPACE ESPACIO_TABLA]
[QUOTA {ENTERO {K | M } | UNLIMITED } ON ESPACIO_TABLA
[PROFILE PERFIL];
Borrado de usuarios:
DROP USER USUARIO [CASCADE];
CASCADE Suprime todos los objetos del usuario antes de borrarlo.

Estos usuarios son nombres que definimos y a los cuales damos una
contrasea para acceder a la base de datos.
En Oracle cada usuario esta asignado a un esquema. Siendo un esquema una
coleccin lgica de objetos. Por defecto un usuario tiene acceso a todos los
objectos de su esquema y podra acceder a los objetos de otros esquemas
como los permisos necesarios.
Cuando instanciamos Oracle se crean por defecto dos usuarios importantes:
sys change_on_install: propietario del diccionario de datos de la base de datos
system manager: usuario para realizar las tareas de administracin de la base
de datos
La sintaxis para la creacin de un usuario es la siguiente:
create user nombre_usuario
identified by contraseas
[default tablespace nombre_tablespace]
[temporary tablespace nombre_tablespace]
[quota {entero {K|M} | unlimited} on nombre_tablespace]
[profile nombre_perfil];
Para modificar el usuario cambiaremos el create por el alter y para borrarlo tan
solo tendremos que poner drop user nombre_usuario cascade;
Cada usuario tiene ciertos privilegios, y dentro de esos privilegios podemos
hablar de:

privilegios de sistema: son los que nos dan derecho a realizar ciertas
operaciones sobre objetos de un tipo especificado.
privilegios sobre objetos: estos privilegios nos permiten realizar cambios en
los datos de los objetos de otros usuarios.
Cuando creamos un usuario es necesario darle privilegios, de lo contrario no
podra realizar ninguna accin.
Roles de usuario
Un rol es un conjunto de permisos que recibe un nombre comn y facilita la
tarea de dar permisos a los usuarios. Para crear un rol tan solo tenemos que
escribir lo siguiente:
create role nombre_role;
Oracle ofrece varios roles o funciones ya creadas que ofrecen ciertos
privilegios. Esos roles son los siguientes:
connect: Todos los permisos necesarios para iniciar una sesin en Oracle
resource: Todos los permisos necesarios para tener recursos para la creacin
de objetos
dba: posee todos los privilegios del sistema
La sentencia para privilegios sobre los objetos es la siguiente:
grant {privilegio_objeto[,privilegio_objeto]...| all [privileges]}
[(columna [,columna]...)]
on [usuario.]objeto}
to {usuario|rol| public [,{usuario|rol|public} ...]
[with grant option];
Mientras que la sentencia para crear privilegios de sistema es la siguiente:
grant {privilegio|rol} [,privilegio|rol}, ....]
to {usuario|rol| public [,{usuario|rol|public} ...]
[with admin option];
En ambos caso se utiliza la sentencia revoke para suprimir privilegios,
cambiando la sintaxis.
Para los privilegios de sistema:
revoke {privilegio|rol} [,privilegio|rol}] ...
from {usuario|rol|public} [,usuario|rol|public}] ...;
para los privilegios de objetos:
revoke {privilegio[,privilegio] ... | all [privileges]}
on [usuario.]objeto

from {usuario|rol|public}[ ,{usuario|rol|public}]...;


Con esto podramos empezar a gestionar una base de datos, siempre y cuando
tengamos algunos conocimientos de pl/sql.

SQL> create table programa(


2 codigo number(4) primary key,
3 nombre varchar2(5));
create table programa(
*
ERROR en lnea 1:
ORA-00955: este nombre ya lo est utilizando otro objeto existente
SQL> desc programa;
Nombre
Nulo? Tipo
----------------------------------------- -------- ---------------------------CODIGO
NOT NULL NUMBER(2)
NOMBRE
NOT NULL VARCHAR2(50)
SQL> create table calcio(
2 codigo number(2) primary key,
3 nombre varchar2(5));
Tabla creada.
SQL> create table dop(
2 codigo_calcio number(2) constraint dop_fk (FORANEA)
3 references calcio(codigo));
Tabla creada.
SQL> insert into calcio (PARA INSERTAR DATOS A UNA TABLA)
2 values('3','yesen');
1 fila creada.
SQL> select * from calcio;(PARA VER LOS DATOS INGRESADOS A LA
TABLA)
CODIGO NOMBR
---------- ----3 yesen
SQL> insert into dop
2 values('4');
insert into dop
*

ERROR en lnea 1:
ORA-02291: restriccin de integridad (SYSTEM.DOP_FK) violada - clave
principal
no encontrada
SQL> insert into dop
2 values('3');
1 fila creada.
SQL> select * from dop;
CODIGO_CALCIO
------------3
SQL> TRUNCATE TABLE DOP; (PARA BORRAR LO QUE SE INGRESO EN
LA TABLA)
Tabla truncada.
SQL> select * from dop;
ninguna fila seleccionada
describe (nombre tabla); (PARA VER LA TABLA)

select codigo, nombre from articulo;

También podría gustarte