Está en la página 1de 14

Parcial III: 5 Lección 13

Controlando el acceso a usuarios


Objetivos del capítulo
Después de finalizar este capítulo, será capaz de hacer lo siguiente:
• Crear usuarios
• Crear roles para facilitar la configuración y mantenimiento del modelo de
seguridad
• Usar las sentencias GRANT y REVOKE para otorgar y quitar privilegios
a los objetos
• Crear ligas a bases de datos y accederlas

Controlando el acceso a usuarios


En ambientes de múltiples usuarios, se requiere mantener seguridad en el
acceso y uso de la base de datos. Con la seguridad de la base de datos del
servidor de Oracle, se puede hacer lo siguiente:
• Controlar el acceso a la base de datos
• Otorgar acceso a objetos específicos de la base de datos
• Confirmar los privilegios proporcionados y recibidos con el diccionario de
datos de Oracle
• Crear sinónimos para objetos de la base de datos

La seguridad de la base de datos puede ser clasificada en dos categorías:


seguridad del sistema y seguridad de los datos. La seguridad del sistema cubre
el acceso y uso de la base de datos a nivel del sistema, como el nombre de
usuario y password, el espacio en disco destinado a los usuarios, y las
operaciones del sistema que los usuarios pueden ejecutar. La seguridad de la
base de datos cubre el acceso y uso de los objetos de la base de datos y las
acciones que estos usuarios pueden tener en los objetos.
Parcial III: 5 Lección 13

Privilegios
Los privilegios son la correcta ejecución de una sentencia SQL en particular. El
administrador de la base de datos (DBA) es un usuario de alto nivel con la
posibilidad de otorgar acceso a la base de datos y sus objetos a los usuarios.
Los usuarios requieren privilegios de sistema para otorgar acceso a la base de
datos y privilegios de objeto para manipular el contenido de los objetos en la
base de datos. Los usuarios también pueden otorgar los privilegios que les han
sido otorgados a otros usuarios o roles, el cuál es llamado grupos de privilegios
relacionados.

Esquemas
Un esquema es una colección de objetos, como tablas, vistas y secuencias. El
esquema es propiedad de un usuario de la base de datos y tiene el mismo
nombre que el usuario.

Privilegios del sistema


Más de 100 privilegios de sistema distintos están disponibles para usuarios y
roles. Los privilegios de sistema típicamente son proporcionados por el
administrador de la base de datos.

Privilegios típicos del DBA

Privilegios del sistema Operaciones autorizadas


CREATE USER Puede crear otros usuarios de Oracle (un privilegio
requerido para el rol DBA)
DROP USER Puede eliminar a otro usuario

DROP ANY TABLE Puede borrar una tabla en cualquier esquema

BACKUP ANY TABLE Puede respaldar cualquier tabla en cualquier


esquema con la utilidad export
SELECT ANY TABLE Puede consultar tablas, vistas o snapshots en
cualquier esquema
CREATE ANY TABLE Puede crear tablas en cualquier esquema
Parcial III: 5 Lección 13

Creando usuarios
El DBA crea usuarios con la ejecución de la sentencia CREATE USERS. El
usuario no tiene ningún privilegio en este punto. El DBA puede otorgar
privilegios al usuario. Estos privilegios determinan lo que el usuario puede
hacer a nivel base de datos.
En el ejemplo anterior se resumen la sintaxis para crear un usuario.

Donde:
user es el nombre del usuario a ser creado
password especifica el password con el que el usuario puede
registrarse
Parcial III: 5 Lección 13

Privilegios típicos del usuario


Ahora que el DBA ha creado un usuario, el DBA puede asignar privilegios al
usuario.

Privilegios del sistema Operaciones autorizadas


CREATE SESSION Permite conectarse a la base de datos
CREATE TABLE Permite crear tablas en el esquema del usuario

CREATE SEQUENCE Permite crear secuencias en el esquema del


usuario
CREATE VIEW Permite crear vistas en el esquema del usuario

CREATE PROCEDURE Permite crear procedimientos en el esquema del


usuario

Donde:
privilege es el privilegio del sistema que ha sido
otorgado
user | role | PUBLIC es el nombre del usuario, nombre del rol o
designación publica a quien se le otorga el
privilegio

Nota: Los privilegios del sistema otorgados pueden encontrarse en la vista del
diccionario de datos SESSION_PRIVS.
Parcial III: 5 Lección 13

Otorgando privilegios de sistema


El DBA usa la sentencia GRANT para asignar privilegios de sistema a usuarios.
Una vez que al usuario le han sido otorgados los privilegios, el usuario puede
inmediatamente usarlos.
En el ejemplo de la imagen anterior, al usuario Scout le han sido asignados los
privilegios para crear sesiones, tablas, secuencias y vistas.

¿Qué es un rol?
Un rol es el nombre de un grupo de privilegios asociados que pueden ser
otorgados a los usuarios. Este método hace más fácil el quitar y administrar los
privilegios.
Parcial III: 5 Lección 13

Un usuario puede tener acceso a varios roles, y varios usuarios pueden ser
asignados al mismo rol. Los roles son típicamente creados por una aplicación
de la base de datos.

Creando y asignando un rol


Primero, el DBA debe crear un rol. Entonces el DBA puede asignar privilegios
al rol y usuarios al rol.

Sintaxis
CREATE ROLE role;

Donde:
role es el nombre del rol a ser creado

Ahora que el rol ha sido creado, el DBA puede usar la sentencia GRANT para
asignar usuarios al rol como se asignaron los privilegios al rol.

En el ejemplo anterior se crea el rol manager y se le asignan los permisos para


crear tablas y vistas. Los Usuarios DeHaan y Kochhar son asignados al rol
manager, por lo que ahora estos usuarios pueden crear vistas y tablas.
Si los usuarios tienen múltiples roles, ellos reciben todos los privilegios
asociados con los roles asignados.
Parcial III: 5 Lección 13

Cambiando tu password
El DBA crea una cuenta e inicializa el password para cada usuario. Se puede
cambiar el password utilizando la sentencia ALTER USER.

Sintaxis:

Donde:
user es el nombre del usuario
password especifica el nuevo password

Aunque esta sentencia puede se usada para cambiar su password, existen


muchas otras opciones. Puedes tener el privilegio ALTER USER para cambiar
cualquier otra opción.

Privilegios de los objetos


Un privilegio de objeto es una distinción o una correcta ejecución de una acción
en particular en una especifica tabla, vista, secuencia o procedimiento. Cada
objeto tiene un particular conjunto de privilegios a ser otorgados. La tabla de la
imagen anterior muestra los privilegios para varios objetos. Note que los
privilegios que aplican a una secuencia son SELECT y ALTER. UPDATE,
REFERENCES e INSERT pueden ser restringidos para un específico
subconjunto de columnas actualizables. El privilegio SELECT puede ser
restringido para la creación de una vista con un subconjunto de columnas
otorgando el privilegio SELECT solo a la vista. Un privilegio otorgado a un
Parcial III: 5 Lección 13

sinónimo es convertido en un privilegio en la tabla base referenciado por el


sinónimo.

Otorgando privilegios de objeto

Diferentes privilegios de objetos están disponibles para diferentes tipos de


objetos en un esquema. Un usuario automáticamente tiene todos los privilegios
para los objetos contenidos en su esquema. Un usuario puede otorgar
cualquier privilegio de objeto en cualquier esquema al que el usuario
pertenezca o a cualquier otro usuario o rol. Si el privilegio incluye la opción
WITH GRANT OPTION, entonces el usuario que recibe el privilegio puede
otorgar esos privilegios a otros usuarios. De otra manera sin la opción WITH
GRANT OPTION, el usuario no puede asignar a otros usuarios los privilegios
concedidos.

Donde:
object_priv es un privilegio de objeto a ser otorgado
ALL especifica todos los privilegios del objeto
columns especifica la columna de una tabla o vista en
donde los privilegios son otorgados
ON object es el objeto en el cual los privilegios se
encuentran
TO identifica a quien se le otorgan los privilegios
PUBLIC otorga los privilegios del objeto a todos los
usuarios
WITH GRANT OPTION permite que el concesionario de los privilegios
pueda asignárselos a otros
Parcial III: 5 Lección 13

Normas a seguir
• Para otorgar privilegios de un objeto, el objeto debe estar en tu esquema
o deben ser otorgados los privilegios con la opción WITH GRANT
OPTION
• El propietario de un objeto automáticamente adquiere todos los
privilegios del objeto
• Un propietario de un objeto puede otorgar todos los privilegios del objeto
a cualquier otro usuario o rol de la base de datos

En el primer ejemplo de la imagen anterior se otorga a los usuarios Sue y Rich


el privilegio para consultar la tabla EMPLOYEES del esquema Scott. En el
segundo ejemplo se otorgan los permisos para actualizar columnas específicas
de la tabla DEPARTMENTS al usuario Scout y al rol Manager.

Si Sue o Rich ahora quieren consultar los datos de la tabla EMPLOYEES, la


sintaxis a usar es:

De modo alternativo, se puede crear un sinónimo para la tabla y seleccionar el


sinónimo.

Nota: Los DBAs generalmente tiene los privilegios de sistema; cualquier


usuario que posea un objeto puede otorgar privilegios del objeto.
Parcial III: 5 Lección 13

WITH GRANT OPTION


Un privilegio que es otorgado con la cláusula WITH GRANT OPTION puede ser
pasado entre usuarios y roles para seguir siendo otorgado. Cuando los
privilegios de objeto otorgados con la clausula WITH GRANT OPTION son
revocados por el propietario todos los privilegios asignados por a otros usuarios
también son revocados.
En el ejemplo anterior al usuario Scott se le otorgan privilegios a la tabla
DEPARTMENTS del usuario Alice para consultarla e insertar filas. En el
segundo ejemplo se muestra como el usuario Scott otorga los privilegios que
antes fueron concedidos a otros usuarios.

Palabra reservada PUBLIC


Un propietario de una tabla puede otorgar acceso a todos los usuarios con el
uso de la palabra reservada PUBLIC. En el segundo ejemplo se permite a
todos los usuarios del sistema consultar los datos de la tabla DEPARTMENTS
de Alice.

Confirmando privilegios otorgados


Si intentas ejecutar una operación no autorizada, como borrar una fila de una
tabla a la que no se tiene el privilegio DELETE, el servidor de Oracle no permite
la operación tomando el lugar.

Si recibes el mensaje de error del servidor de Oracle “table or view does not
exist (la tabla o vista no existe)” tienes dos caminos a seguir:
• El Nombre de la tabla o vista no existe
• Estas Intentando ejecutar una operación en una tabla o vista en la cual
no tienes un privilegio apropiado
Parcial III: 5 Lección 13

Puedes acceder el diccionario de datos para ver los privilegios que tienes. La
tabla siguiente describe varias vistas del diccionario de datos.

Vista del diccionario de Descripción


datos
ROLE_SYS_PRIVS Privilegios del sistema otorgados a los roles
ROLE_TAB_PRIVS Tabla de privilegios otorgados a los roles

USER_ROLE_PRIVS Roles accesibles al usuario

USER_TAB_PRIVS_MADE Privilegios de objeto otorgados en los objetos del


usuario
USER_TAB_PRIVS_RECD Privilegios de objeto otorgados al usuario

USER_COL_PRIVS_MADE Privilegios de objeto otorgados en las columnas


de objetos de usuario
USER_COL_PRIVS_RECD Privilegios de objeto otorgados al usuario en
columnas específicas
USER_SYS_PRIVS Lista de privilegios de sistema otorgados al
usuario

Revocando privilegios de objeto

Se pueden remover los privilegios otorgados a otros usuarios con el uso de la


sentencia REVOKE, Cuando se usa la sentencia REVOKE, los privilegios
especificados son quitados de los usuarios nombrados y de cualquier otro
usuario cuyos privilegios fueron otorgados mediante la cláusula WITH GRANT
OPTION.

Donde:
CASCADE CONSTRAINTS es requerido para remover cualquier
constraint de integridad referencial
hecha al objeto por el privilegio
REFERENCES

En el ejemplo anterior se revocan los privilegios SELECT e INSERT otorgados


al usuario Scott en la tabla DEPARTMENTS.
Parcial III: 5 Lección 13

Ligas a bases de datos


Una comunicación o liga a una base de datos es un apuntador que define una
ruta de comunicación de un servidor de base de datos a otro. La liga del
apuntador es actualmente definida como una entrada o acceso en una tabla del
diccionario de datos. Para acceder esta liga, debes estar conectado a una base
de datos local que contenga el acceso al diccionario de datos.
Una liga o comunicación de conexión a una base de datos es un camino en el
sentido de que un cliente esta conectado a una base de datos local A que
puede usar una liga almacenada en la base de datos A para acceder
información de una base de datos remota B, pero los usuarios de la base de
datos B no pueden usar la misma liga para acceder a la base de datos A. Si los
usuarios locales de la base de datos B quieren acceder los datos de la base de
datos A, ellos deben definir una liga o comunicación que sea almacenada en el
diccionario de datos de la base de datos B.
Una conexión ligada a una base de datos toma a usuarios locales para acceder
datos de una base de datos remota, Para que esta conexión pueda ocurrir,
cada base de datos en un sistema distribuido debe tener un nombre global
único de base de datos. El nombre único de base de datos identifica al servidor
de base de datos en un sistema distribuido.
La gran ventaja de las comunicaciones o ligas de base de datos es que ello
permite acceder a los usuarios a otros objetos de usuarios en una base de
datos remota teniendo los privilegios de los objetos. En otras palabras, un
usuario local puede acceder una base de datos remota sin tener que ser un
usuario de la base de datos remota.

En el ejemplo se muestra al usuario Scott accediendo la tabla EMP en una


base de datos remota con un nombre global HQ.ACME.COM.

Nota: Típicamente, el DBA es el responsable de crear las ligas o


comunicaciones a una base de datos. La vista del diccionario
Parcial III: 5 Lección 13

USER_DB_LINKS contiene información de las ligas que el usuario puede


acceder.

Usando Ligas a bases de datos


En el ejemplo anterior se crea una liga a una base de datos. La cláusula
USING identifica el nombre del servicio de una base de datos remota.

Una vez creada la liga o canal de comunicación a la base de datos, se pueden


escribir sentencias contra los datos en el sitio remoto. Si un sinónimo es
establecido, se pueden usar sentencias usando el sinónimo.

Por ejemplo:

Entonces puede escribir una sentencia para usar el sinónimo

No puedes otorgar privilegios en objetos remotos.

Resumen

El DBA establece la seguridad inicial de la base de datos para los usuarios y


asigna los privilegios a los mismos.

• El DBA crea usuarios con un password. El DBA es el responsable de


establecer los privilegios iniciales de sistema a los usuarios.
• Una vez que el usuario ha creado un objeto, el usuario puede pasar
todos los privilegios del objeto a otro usuario o a todos los usuarios con
el uso de la sentencia GRANT.
• Un DBA puede crear roles con el uso de la sentencia CREATE ROLE
para pasar una colección de privilegios de sistema o de objeto a
Parcial III: 5 Lección 13

múltiples usuarios. Los roles hacen la asignación y revocación de


privilegios fácil de mantener.
• Los usuarios pueden cambiar su password con el uso de la sentencia
ALTER USER.
• Puede remover privilegios de usuarios con el uso de la sentencia
REVOKE
• Con las vistas del diccionario de datos, los usuarios pueden ver los
privilegios que les han sido otorgados y los que han otorgado.
• Con las ligas de base de datos, se puede acceder datos de una base de
datos remota. Los privilegios no pueden ser otorgados a objetos
remotos.

También podría gustarte