Está en la página 1de 24

Schedule: Timing Topic

xx minutes Lecture
xx minutes Practice
xx minutes Total
Objetivo de la lección
En esta lección, aprenderá cómo controlar el acceso a la base de datos a objetos específicos y agregar
nuevos usuarios con diferentes niveles de privilegios de acceso.

Introduction to Oracle9i: SQL 13-2


Controlando el Acceso de los usuarios
En un entorno de múltiples usuarios, usted desea mantener la seguridad del acceso y uso de la base de
datos. Con la seguridad de la base de datos del servidor Oracle, puede hacer lo siguiente:
• Controlar el acceso a la base de datos
• Dar acceso a objetos específicos en la base de datos
• Confirme los privilegios dados y recibidos con el diccionario de datos de Oracle
• Crear sinónimos para objetos de base de datos
La seguridad de la base de datos se puede clasificar en dos categorías: seguridad del sistema y
seguridad de datos. La seguridad del sistema cubre el acceso y el uso de la base de datos a nivel del
sistema, como el nombre de usuario y la contraseña, el espacio en disco asignado a los usuarios y las
operaciones del sistema que los usuarios pueden realizar. La seguridad de la base de datos cubre el
acceso y el uso de los objetos de la base de datos y las acciones que esos usuarios pueden tener en los
objetos.

Introduction to Oracle9i: SQL 13-3


Privilegios
Los privilegios son el derecho de ejecutar sentencias SQL particulares. El administrador de la base de
datos (DBA) es un usuario de alto nivel con la capacidad de otorgar a los usuarios acceso a la base de
datos y sus objetos. Los usuarios requieren privilegios del sistema para obtener acceso a la base de
datos y privilegios sobre objetos para manipular el contenido de los objetos en la base de datos. Los
usuarios también pueden tener el privilegio de otorgar privilegios adicionales a otros usuarios o roles,
que se denominan 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 ese usuario.
Para obtener más información, consulte la Guía del desarrollador de aplicaciones Oracle9i -
Fundamentos, sección "Establecimiento de una política de seguridad" y Conceptos de Oracle, tema
"Seguridad de la base de datos".

Introduction to Oracle9i: SQL 13-4


Privilegios del Sistema
Más de 100 privilegios distintos del sistema están disponibles para usuarios y roles. Los privilegios del
sistema generalmente son proporcionados por el administrador de la base de datos.

System Privilege Operations Authorized


CREATE USER Grantee can create other Oracle users (a privilege required
for a DBA role).
DROP USER Grantee can drop another user.
DROP ANY TABLE Grantee can drop a table in any schema.
BACKUP ANY TABLE Grantee can back up any table in any schema with the
export utility.
SELECT ANY TABLE Grantee can query tables, views, or snapshots in any
schema.
CREATE ANY TABLE Grantee can create tables in any schema.

Typical DBA Privileges


ALTER ANY TABLE
CREATE ANY PROCEDURE

Introduction to Oracle9i: SQL 13-5


CREATE ANY VIEW
DROP ANY MATERIALIZED VIEW
Entre otros
Precaución:
Los privilegios del sistema pueden ser muy poderosos y solo deben otorgarse
cuando sea necesario a roles y usuarios confiables de la base de datos.

Introduction to Oracle9i: SQL 13-‹#›


Creando un Usuario
El DBA crea al usuario ejecutando la instrucción CREATE USER. El usuario no tiene ningún
privilegio en este momento. El DBA puede otorgar privilegios a ese usuario. Estos privilegios
determinan lo que el usuario puede hacer a nivel de base de datos.

La diapositiva proporciona la sintaxis abreviada para crear un usuario.

Sintaxis:
user Es el nombre de la usuario que se creará.

password especifica que el usuario debe iniciar sesión con esta contraseña

Para obtener más información, consulte Oracle SQL Reference, "GRANT" y "CREATE USER".

Instructor Note
For information on DROP USER, refer to Oracle9i SQL Reference, “DROP USER.”

Introduction to Oracle9i: SQL 13-6


Privilegios de Usuario Tipicos
Ahora que el DBA ha creado un usuario, el DBA puede asignar privilegios a ese usuario.
System Privilege Operations Authorized
CREATE SESSION Connect to the database
CREATE TABLE Create tables in the user’s schema
CREATE SEQUENCE Create a sequence in the user’s schema
CREATE VIEW Create a view in the user’s schema
CREATE PROCEDURE Create a stored procedure, function, or package in the user’s
schema

Sintaxis:
privilege es el privilegio del sistema que se otorgará
user |role|PUBLIC es el nombre del usuario, el nombre del rol o PUBLIC,
designa que a cada usuario se le concede el privilegio.

Nota: Los privilegios actuales del sistema se pueden encontrar en la vista de diccionario
SESSION_PRIVS.
La sintaxis que se muestra para el comando GRANT no es la sintaxis completa de la instrucción.

Introduction to Oracle9i: SQL 13-7


Dando Privilegios del Sistema
El DBA utiliza la declaración GRANT para asignar privilegios del sistema al usuario. Una vez que el
usuario ha obtenido los privilegios, el usuario puede usarlos inmediatamente.
En el ejemplo de la diapositiva, al usuario Scott se le han asignado los privilegios para crear sesiones,
tablas, secuencias y vistas.

Instructor Note
Un usuario necesita tener la cuota de espacio requerida para crear tablas.

Introduction to Oracle9i: SQL 13-8


¿Que es un Role?
Un rol es un grupo de privilegios relacionados con un nombre especifico, que se pueden otorgar al
usuario. Este método facilita la revocación y el mantenimiento de privilegios.
Un usuario puede tener acceso a varios roles, y a varios usuarios se les puede asignar el mismo rol. Los
roles generalmente se crean para una aplicación de base de datos.
Crear y asignar un rol
Primero, el DBA debe crear el rol. Luego, el DBA puede asignar privilegios al rol y usuarios al rol.
Sintaxis
CREATE ROLE role;
En la sintaxis:
role es el nombre del rol que se creará

Ahora que se creó el rol, el DBA puede usar la instrucción GRANT para asignar usuarios al rol y
asignar privilegios al rol.

Instructor Note
Discuta los siguientes cuatro puntos sobre los roles:

Introduction to Oracle9i: SQL 13-9


• Se nombran grupos de privilegios relacionados
• Se puede otorgar a los usuarios
• Simplifique el proceso de otorgar y revocar privilegios
• Son creados por un DBA

Introduction to Oracle9i: SQL 13-‹#›


Creando un Role
El ejemplo en la diapositiva crea un rol manager y luego permite a los administradores crear tablas y
vistas. Luego le otorga a DeHaan y Kochhar el role de manager.
Ahora DeHaan y Kochhar pueden crear tablas y vistas.
Si los usuarios tienen múltiples roles otorgados, reciben todos los privilegios asociados con todos los
roles.

Introduction to Oracle9i: SQL 13-10


Cambiando tu contraseña
El DBA crea una cuenta e inicializa una contraseña para cada usuario. Puede cambiar su contraseña
utilizando la instrucción ALTER USER.
Sintaxis
ALTER USER user IDENTIFIED BY password;
En la syntaxis:
user Es el nombre del usuario.
password especifica la nueva contraseña

Aunque esta declaración se puede usar para cambiar su contraseña, hay muchas otras opciones. Debe
tener el privilegio ALTER USER para cambiar cualquier otra opción.
Para obtener más información, consulte la Referencia SQL de Oracle, "ALTER USER".

Introduction to Oracle9i: SQL 13-11


Privilegios sobre Objetos
Un privilegio de objeto es un privilegio o derecho para realizar una acción particular en una tabla,
vista, secuencia o procedimiento específico. Cada objeto tiene un conjunto particular de privilegios
concedibles. La tabla en la diapositiva enumera los privilegios para varios objetos. Tenga en cuenta
que los únicos privilegios que se aplican a una secuencia son SELECT y ALTER. ACTUALIZAR,
REFERENCE e INSERTAR pueden restringirse especificando un subconjunto de columnas
actualizables. Se puede restringir un privilegio SELECT creando una vista con un subconjunto de
columnas y otorgando el privilegio SELECT solo en la vista. Un privilegio otorgado a un sinónimo se
convierte en un privilegio en la tabla base a la que hace referencia el sinónimo.

Instructor Note
Puede usar los comandos ALTER VIEW y ALTER PROCEDURE para recompilar vistas y
procedimientos, funciones y paquetes PL / SQL.

Introduction to Oracle9i: SQL 13-12


Privilegios sobre Objetos
Existen diferentes privilegios de objeto para diferentes tipos de objetos de esquema. Un usuario tiene
automáticamente todos los privilegios de objeto para los objetos de esquema contenidos en el esquema
del usuario. Un usuario puede otorgar cualquier privilegio de objeto sobre cualquier objeto de
esquema que el usuario posee a cualquier otro usuario o rol. Si la concesión incluye WITH GRANT
OPTION, el concesionario puede otorgar el privilegio de objeto a otros usuarios; de lo contrario, el
concesionario puede usar el privilegio pero no puede otorgarlo a otros usuarios.

Sintaxis:
object_priv es un privilegio de objeto para ser otorgado
ALL specifies all object privileges
columns especifica la columna de una tabla o vista en la que se otorgan
privilegios
ON object es el objeto sobre el cual se otorgan los privilegios
TO identifica a quién se le otorga el privilegio
PUBLIC Otorga privilegios de objeto a todos los usuarios.
WITH GRANT OPTION permite al concesionario otorgar privilegios de objeto a otros
usuarios y roles

Introduction to Oracle9i: SQL 13-13


Pautas
• Para otorgar privilegios sobre un objeto, el objeto debe estar en su propio esquema, o se le deben
haber otorgado los privilegios de objeto con WITH GRANT OPTION.
• El propietario de un objeto puede otorgar cualquier privilegio de objeto sobre cualquier otro usuario o
rol de la base de datos.
• El propietario de un objeto adquiere automáticamente todos los privilegios de objeto sobre ese objeto.
El primer ejemplo en la diapositiva otorga a los usuarios Sue y Rich el privilegio de consultar su tabla
EMPLOYEES. El segundo ejemplo otorga privilegios de UPDATE en columnas específicas de la tabla
DEPARTMENTS a Scott y al rol de administrador.
Si Sue o Rich ahora quieren SELECT datos de la tabla de empleados, la sintaxis que deben usar es:
SELECT *
FROM scott.employees;
Alternativamente, pueden crear un sinónimo para la tabla y SELECT desde el sinónimo:
CREATE SYNONYM emp FOR scott.employees;
SELECT * FROM emp;
Nota: DBAs generalmente asigna privilegios del sistema; cualquier usuario que posea un objeto puede
otorgar privilegios de objeto.
Nota para el Instructor
Lea la Nota para el instructor al final de esta lección.

Introduction to Oracle9i: SQL 13-14


La opción WITH GRANT OPTION
El concesionario puede pasar un privilegio otorgado con la cláusula WITH GRANT OPTION a otros
usuarios y roles. Los privilegios de objeto otorgados con la cláusula WITH GRANT OPTION se
revocan cuando se revoca el privilegio del otorgante.
El ejemplo en la diapositiva le da al usuario Scott acceso a su tabla DEPARTMENTS con los
privilegios para consultar la tabla y agregar filas a la tabla. El ejemplo también le permite a Scott dar a
otros estos privilegios.
The PUBLIC Keyword
El propietario de una tabla puede otorgar acceso a todos los usuarios utilizando la palabra clave
PUBLIC.
El segundo ejemplo permite a todos los usuarios del sistema consultar datos de la tabla
DEPARTMENTS de Alice.

Nota para el Instructor


Si una declaración no usa el nombre completo de un objeto, el servidor Oracle implícitamente
antepone el nombre del objeto con el nombre (o esquema) del usuario actual. Si el usuario Scott
consulta la tabla DEPARTMENTS, por ejemplo, el sistema selecciona de la tabla
SCOTT.DEPARTMENTS.
Si una declaración no usa el nombre completo de un objeto, y el usuario actual no posee un objeto con

Introduction to Oracle9i: SQL 13-15


ese nombre, el sistema antepone el nombre del objeto con PUBLIC. Por ejemplo, si el
usuario Scott consulta la tabla USER_OBJECTS y Scott no posee dicha tabla, el sistema
selecciona desde la vista del diccionario de datos mediante el sinónimo público
PUBLIC.USER_OBJECTS.

Introduction to Oracle9i: SQL 13-‹#›


Confirmación de Privilegios Otorgados
Si intenta realizar una operación no autorizada, como eliminar una fila de una tabla para la que no
tiene el privilegio DELETE, el servidor Oracle no permite que la operación se lleve a cabo.
Si recibe el mensaje de error del servidor Oracle "la tabla o la vista no existe", ha realizado una de las
siguientes acciones:
• Nombrado una tabla o vista que no existe
• Intentó realizar una operación en una tabla o vista para la cual no tiene el privilegio apropiado
Puede acceder al diccionario de datos para ver los privilegios que tiene. El gráfico en la diapositiva
describe varias vistas del diccionario de datos.

Introduction to Oracle9i: SQL 13-16


Revocación de Privilegios de Objeto
Puede eliminar los privilegios otorgados a otros usuarios utilizando la instrucción REVOKE. Cuando
utiliza la instrucción REVOKE, los privilegios que especifique se revocan de los usuarios que nombre
y de cualquier otro usuario a quien se otorguen dichos privilegios mediante la cláusula WITH
GRANT OPTION.
En la sintaxis:
Se requiere CASCADE para eliminar cualquier restricción de
integridad referencial hecha al objeto CONSTRAINTS por medio del
privilegio REFERENCES
Para más información, vaya a Oracle SQL Reference, “REVOKE.”

Introduction to Oracle9i: SQL 13-17


Revocación de Privilegios de Objeto (continuación)
El ejemplo en la diapositiva revoca los privilegios SELECT e INSERT otorgados al usuario Scott en
la tabla DEPARTMENTS.
Nota: Si a un usuario se le otorga un privilegio con la cláusula WITH GRANT OPTION, ese usuario
también puede otorgar el privilegio con la cláusula WITH GRANT OPTION, de modo que es posible
una larga cadena de beneficiarios, pero no se permiten concesiones circulares. Si el propietario revoca
un privilegio de un usuario que otorgó el privilegio a otros usuarios, la revocación se aplica en cascada
a todos los privilegios otorgados.
Por ejemplo, si el usuario A concede el privilegio SELECT en una tabla al usuario B, incluida la
cláusula WITH GRANT OPTION, el usuario B puede otorgar al usuario C el privilegio SELECT con
la cláusula WITH GRANT OPTION, y el usuario C puede otorgar al usuario D El privilegio
SELECT. Si el usuario A revoca el privilegio del usuario B, los privilegios otorgados a los usuarios C
y D también se revocan.

Nota para el Instructor


Revocar los privilegios del sistema no está dentro del alcance de esta lección. Para obtener

Introduction to Oracle9i: SQL 13-18


información sobre este tema, consulte: "Oracle9i SQL Reference, “REVOKE
system_privileges_and_roles. ”

Introduction to Oracle9i: SQL 13-‹#›


Resumen
Los DBA establecen la seguridad inicial de la base de datos para los usuarios mediante la asignación
de privilegios a los usuarios.
• El DBA crea usuarios que deben tener una contraseña. El DBA también es responsable de
establecer los privilegios iniciales del sistema para un usuario.
• Una vez que el usuario ha creado un objeto, puede transferir cualquiera de los privilegios de
objeto disponibles a otros usuarios o a todos los usuarios mediante la instrucción GRANT.
• Un DBA puede crear roles utilizando la instrucción CREATE ROLE para pasar una colección
de privilegios de sistema u objeto a múltiples usuarios. Los roles hacen que la concesión y
revocación de privilegios sea más fácil de mantener.
• Los usuarios pueden cambiar su contraseña utilizando la declaración ALTER USER.
• Puede eliminar privilegios de los usuarios utilizando la instrucción REVOKE.
• Con las vistas del diccionario de datos, los usuarios pueden ver los privilegios que se les otorgan
y los que se otorgan en sus objetos.
• Con enlaces a bases de datos, puede acceder a datos en bases de datos remotas. No se pueden
otorgar privilegios en objetos remotos.

Introduction to Oracle9i: SQL 13-19


Practica 13 Overview
Forme un equipo con otros estudiantes para este ejercicio sobre el control del acceso a los objetos de
la base de datos.

Nota para el Instructor


Para esta práctica, divida a los estudiantes en equipos, y luego empareje los equipos para que la
mitad sean del Equipo 1 y la otra mitad sean del Equipo 2.

Introduction to Oracle9i: SQL 13-20

También podría gustarte