Seguridad Y Acceso A Oracle

  • Uploaded by: Filonela Placida Neira Rivera
  • 0
  • 0
  • February 2021
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Seguridad Y Acceso A Oracle as PDF for free.

More details

  • Words: 2,854
  • Pages: 17
Loading documents preview...
SEGURIDAD Y ACCESO A ORACLE

UD – PLANIFICACIÓN Y GESTIÓN DEL DESARROLLO DE SOFTWARE

SEGURIDAD Y ACCESO A ORACLE Una de las tareas al administrar Oracle es permitir el acceso a bases de datos y asignar permisos sobre los objetos que conforman una base de datos. Para conectarnos con un servidor Oracle necesitamos un modo de acceso que incluye los permisos que dispondremos durante la conexión; estos permisos se definen a partir de un nombre de usuario. Un USUARIO es un identificador necesario para acceder a una base de datos. Un usuario es un conjunto de permisos que se aplican a una conexión de base de datos. Un usuario es además propietario de ciertos objetos. Los PRIVILEGIOS (permisos) especifican qué operaciones puede realizar un usuario y sobre qué objetos de la base de datos tiene autorización, es decir, qué tarea puede realizar con esos objetos y si puede emitir determinadas instrucciones. Estas operaciones pueden ser de dos tipos: de sistema y sobre objeto. Un rol de base de datos es una agrupación de permisos de sistema y de objeto. Un ROL (role) es un grupo de usuarios; permite agrupar usuarios para aplicarles permisos; así, al agregar un nuevo usuario a la base de datos, no es necesario concederle permiso para cada objeto, sino que lo agregamos a un rol; cuando asignamos permisos sobre un objeto al rol, automáticamente el permiso afectará a los usuarios que pertenezcan a tal rol. Los permisos controlan el acceso a los distintos objetos de una base de datos; pueden concederse a nivel de usuario (individualmente) o a nivel de rol (a todos los usuarios de un grupo).

USUARIOS (CREAR) Puede haber varios usuarios diferentes de la base de datos. Cada uno es propietario de sus objetos. Para crear un usuario debemos conectarnos a la base datos como administradores (por ejemplo "system"). Sintaxis básica para crear un usuario: create user NOMBREUSUARIO identified by CONTRASEÑA default tablespace NOMBRETABLESPACEPORDEFECTO quota CANTIDAD on TABLEESPACE; ** [default role ROLE, ALL]; La cláusula "identified by" permite indicar una contraseña. La cláusula "default tablespace" será el tablespace (espacio de tablas) por defecto en la creación de objetos del usuario. Si se omite se utilizará el tablespace SYSTEM. Los tablespaces son unidades lógicas en las cuales de divide una base de datos, en las cuales se almacenan los objetos (tablas, secuencias, etc.); todos los objetos están almacenados dentro de un tablespace. La cláusula "quota" permite configurar un espacio en bytes, Kb o Mb en la base de datos. Si no se especifica, por defecto es cero y no podrá crear objetos. La cláusula "default role" permite asignar roles de permisos durante la creación del usuario. Ejemplo: create user ana identified by anita; Con la sentencia anterior se crea un usuario denominado "ana" con la clave "anita", el tablespace por defecto es "system" porque no se especificó otro. Con la siguiente sentencia se crea un usuario denominado "juan" con la clave "juancito", se le asigna un espacio de 100 mb: create user juan identified by juancito default tablespace system quota 100M on system; Si intentamos crear un usuario que ya existe, Oracle muestra un mensaje de error indicando tal situación. El diccionario "dba_users" muestra información sobre todos los usuarios; el nombre de usuario

USUARIOS (CREAR) Problema: Sabemos que para crear un usuario debemos conectarnos a la base datos como administradores (por ejemplo "system"). Necesitamos crear un usuario "ana"; antes vamos a eliminarlo por si existe (luego veremos detenidamente cómo eliminar usuarios y explicaremos la siguiente sentencia): drop user ana cascade; Creamos un usuario denominado "ana" con la contraseña "anita": create user ana identified by anita; Aparece un mensaje indicando que el usuario "ana" ha sido creado. Necesitamos crear un usuario denominado "juan"; antes vamos a eliminarlo por si existe: drop user juan cascade; Creamos el usuario "juan" con la contraseña "juancito", le asignamos un espacio de 100 mb en "system": create user juan identified by juancito default tablespace system quota 100M on system; Si intentamos crear un usuario que ya existe, Oracle muestra un mensaje de error indicando tal situación. create user juan identified by juancito; Mensaje de error. Consultamos el diccionario "dba_users" y analizamos la información que nos muestra: select username, password, default_tablespace, created from dba_users; El resultado nos muestra el nombre de usuario, si tiene o no contraseña, el espacio asignado

USUARIOS (CREAR) Primer problema:  Una escuela necesita crear 2 usuarios diferentes en su base de datos. Uno denominado "director" y otro "profesor". Luego se les concederán diferentes permisos para retringir el acceso a los diferentes objetos. Conéctese como administrador (por ejemplo "system"). 1- Primero eliminamos el usuario "director", porque si existe, aparecerá un mensaje de error: drop user director cascade; 2- Cree un usuario "director", con contraseña "escuela" y 100M de espacio en "system" 3- Elimine el usuario "profesor": drop user profesor cascade; 4- Cree un usuario "profesor", con contraseña "maestro" y espacio en "system" 5- Consulte el diccionario "dba_users" y analice la información que nos muestra

PERMISO DE CONEXIÓN Los usuarios necesitan permisos para poder acceder a la base de datos y a los objetos de la misma. Los privilegios pueden ser de dos tipos: del sistema y sobre objetos. Como mínimo, un usuario debe tener permiso para conectarse. El permiso "create session" es un privilegio de sistema. Para conceder permiso de conexión a un usuario empleamos la instrucción "grant". Sintaxis básica: grant create session to USUARIO; En el siguiente ejemplo concedemos al usuario "juan" permiso para conectarse: grant create session to juan; Podemos consultar el diccionario "dba_sys_privs" para encontrar los privilegios concedidos a los usuarios. Nos mostrará el nombre del usuario (grantee) y el permiso (privilege), entre otra información que analizaremos próximamente. Luego de tener permiso para crear sesión, puede crear una sesión presionando el ícono "new connection" en la solapa "connections"; se abrirá una ventana en la cual deberá colocar un nombre de conexión ("connection name", puede ser el mismo nombre de usuario), el nombre del usuario ("username") y la contraseña ("password"), luego presionar el botón "connect"; se abrirá una nueva solapa (nueva conexión) con el nombre del usuario; no se abrirá la nueva conexión si: a) el usuario para quien quiere abrir una nueva sesión no existe, b) la contraseña es incorrecta o c) el usuario existe pero no tiene permiso "create session". Si consultamos el diccionario "user_sys_privs" obtendremos la misma información que "dba_sys_privs" pero únicamente del usuario actual. Podemos averiguar el nombre del usuario conectado con la siguiente sentencia: select user from dual;

PERMISO DE CONEXIÓN Problema: Creamos un usuario denominado "ana", con contraseña "anita", le asignamos espacio en "system" (100M). Antes lo eliminamos por si existe: drop user ana cascade; create user ana identified by anita default tablespace system quota 100M on system; Creamos un usuario denominado "juan", con contraseña "juancito", le asignamos espacio en "system" (100M). Antes lo eliminamos por si existe: drop user juan cascade; create user juan identified by juancito default tablespace system quota 100M on system; Consultamos el diccionario "dba_users" y analizamos la información que nos muestra: select username, password, default_tablespace, created from dba_users; Verificamos que los usuarios "ana" y "juan" existen. Consultamos el diccionario "dba_sys_privs" para encontrar los privilegios concedidos a nuestros usuarios. Nos mostrará el nombre del usuario (grantee) y el permiso (si lo tiene): select grantee, privilege from dba_sys_privs where GRANTEE='ANA' or grantee='JUAN'; Nos muestra que estos usuarios no tienen ningún privilegio concedido. Concedemos a "juan" permiso para conectarse: grant create session to juan; Consultamos el diccionario "dba_sys_privs" para encontrar los privilegios concedidos a "juan": select grantee,privilege from dba_sys_privs where grantee='JUAN';

PERMISO DE CONEXIÓN Tiene permiso "create session". Abrimos una nueva conexión para "juan": Presionamos el ícono "new connection" en la solapa "connections"; se abre una ventana en la cual colocamos: - "connection name" (nombre de la conexión): juan; - "username" (nombre del usuario): juan y - "password" (contraseña): juancito. Luego presionamos "connect"; se abre una nueva solapa (nueva conexión) con el nombre del usuario (juan). En la conexión de "juan" podemos consultar sus privilegios: select username, privilege from user_sys_privs; Note que únicamente aparecen los permisos del usuario actual. Para obtener el nombre del usuario conectado, empleamos la siguiente sentencia: select user from dual; Aparece Juan. Volvemos a la conexión "system" (la otra solapa). Comprobamos el usuario actual: select user from dual; Aparece System. Ya sabemos abrir una nueva sessión de usuario. Aprendimos que existen 3 razones por las cuales una nueva sesión no se pueda iniciar; una de ellas es que el usuario no exista. Intentemos abrir una nueva conexión para un usuario inexistente: Presionamos el ícono "new connection" en la solapa "connections"; se abre una ventana en la cual colocamos: - "connection name" (nombre de la conexión): pedro; - "username" (nombre del usuario): pedro y

PERMISO DE CONEXIÓN Otra razón por la cual la apertura de una nueva sesión puede fallar es que el usuario no tenga permiso de conexión. Intentemos abrir una nueva conexión para un usuario que no tenga tal permiso, caso de "ana": Presionamos el ícono "new connection" en la solapa "connections"; se abre una ventana en la cual colocamos: - "connection name" (nombre de la conexión): ana; - "username" (nombre del usuario): ana y - "password" (contraseña): anita. Luego presionamos "connect"; la sessión no se abre, un mensaje de error indica que el usuario "ana" no tiene permiso "create session" por lo cual se deniega la conexión. Cancelamos. Concedemos a "ana" permiso de conexión: grant create session to ana; Consultamos el diccionario "dba_sys_privs" para encontrar los privilegios concedidos a "ana": select grantee,privilege from dba_sys_privs where grantee='ANA'; Tiene permiso "create session". La tercera razón por la cual puede no iniciarse una nueva sesión es que coloquemos la contraseña incorrecta. Intentemos abrir una nueva conexión para un usuario que tenga permiso, pero le demos una contraseña incorrecta: Presionamos el ícono "new connection" en la solapa "connections"; se abre una ventana en la cual colocamos: - "connection name" (nombre de la conexión): ana; - "username" (nombre del usuario): ana y - "password" (contraseña): ana. Luego presionamos "connect"; la sessión no se abre, un mensaje de error indica que el nombre de

PERMISO DE CONEXIÓN Abramos una nueva conexión para "ana" colocando los datos correctos: Presionamos el ícono "new connection" en la solapa "connections"; se abre una ventana en la cual colocamos: - "connection name" (nombre de la conexión): ana; - "username" (nombre del usuario): ana y - "password" (contraseña): anita. Presionamos "connect"; se abre una nueva solapa (nueva conexión) con el nombre del usuario (ana). Consultamos el diccionario "user_sys_privs": select username,privilege from user_sys_privs; Note que únicamente aparecen los permisos del usuario actual. Comprobamos que estamos en la sesión de "ana": select user from dual;

PERMISO DE CONEXIÓN Primer problema:  Una escuela necesita crear 3 usuarios diferentes en su base de datos. Uno denominado "director", otro "profesor" y un tercero "alumno". Conéctese como administrador (por ejemplo "system"). 1- Elimine el usuario "director", porque si existe, aparecerá un mensaje de error: drop user director cascade; 2- Cree un usuario "director", con contraseña "dire" y 100M de espacio en "system" 3- Elimine el usuario "profesor": drop user profesor cascade; 4- Cree un usuario "profesor", con contraseña "profe" y espacio en "system" 5- Elimine el usuario "alumno" y luego créelo con contraseña "alu" y espacio en "system" 6- Consulte el diccionario "dba_users" y analice la información que nos muestra Deben aparecer los tres usuarios creados anteriormente. 7- Consulte el diccionario "dba_sys_privs" para encontrar los privilegios concedidos a nuestros tres usuarios Nos muestra que estos usuarios no tienen ningún privilegio concedido. 8- Conceda a "director" permiso para conectarse 9- Conceda a "profesor" permiso para conectarse 10- Consulte el diccionario "dba_sys_privs" para encontrar los privilegios concedidos a

PERMISO DE CONEXIÓN 11- Abra una nueva conexión para "director". Se debe abrir una nueva solapa (nueva conexión) con el nombre del usuario (director) 12- En la conexión de "director" consulte sus privilegios 13- Obtenga el nombre del usuario conectado 14- Vuelva a la conexión "system" (la otra solapa) y compruebe el usuario actual 15- Intente abrir una nueva conexión para el usuario inexistente. Debe aparecer un mensaje de error y denegarse la conexión. Cancele. 16- Intente abrir una nueva conexión para el usuario "profesor" colocando una contraseña incorrecta. Debe aparecer un mensaje de error y denegarse la conexión. Cancele. 17- Abra una nueva conexión para "profesor" colocando los datos correctos. Se debe abrir una nueva solapa (nueva conexión) con el nombre del usuario (profesor). 18- Intentemos abrir una nueva conexión para el usuario "alumno", el cual no tiene permiso. Un mensaje de error indica que el usuario "alumno" no tiene permiso "create session" por lo cual se deniega la conexión. Cancele. 19- Conceda a "alumno" permiso de conexión 20- Consulte el diccionario "dba_sys_privs" para encontrar los privilegios concedidos a "alumno" 21- Abra una nueva conexión para "ALUMNO". Se debe abrir una nueva solapa (nueva conexión) con el nombre del usuario (profesor) 22- Consulte el diccionario "user_sys_privs"

 PRIVILEGIOS DEL SISTEMA (CONCEDER) Aprendimos que los usuarios necesitan permisos para poder acceder a la base de datos y a los objetos de la misma. Dijimos que los privilegios pueden ser de dos tipos: a) del sistema y b) sobre objetos. Hemos aprendido a conceder un privilegio de sistema: "create session", que es necesario para poder conectarse a la base de datos, es decir, para iniciar una sesión. Pero teniendo únicamente este permiso, no podemos hacer mucho, solamente iniciar una sesión, pero no podemos crear tablas, ni ningún otro objeto; por ello son importantes los permisos de creación de objetos. Aprendamos más sobre los privilegios de sistema. Los privilegios de sistema son permisos para realizar ciertas operaciones en la base de datos. Los siguientes son algunos de los privilegios de sistema existentes: - create session: para conectarse a la base de datos; - create table: crear tablas; - create sequence: crear secuencias; - create view: crear vistas; - create trigger: crear disparadores en su propio esquema; - create procedure: crear procedimientos y funciones; - execute any procedure: ejecutar cualquier procedimiento en cualquier esquema; - create user: crear usuarios y especificar claves; - create role: crear roles;

 PRIVILEGIOS DEL SISTEMA (CONCEDER) - drop user: eliminar usuarios. Se asignan privilegios de sistema a un usuario mediante la instrucción "grant": Sintaxis básica: grant PERMISODESISTEMA to USUARIO; Oracle permite conceder múltiples privilegios a múltiples usuarios en una misma sentencia, debemos separarlos por comas. En el siguiente ejemplo se concede el permiso para crear sesión a los usuarios "juan" y "ana": grant create sesion to juan, ana; En el siguiente ejemplo se conceden los permisos para crear tablas y vistas al usuario "ana": grant create table, create view to ana; En el siguiente ejemplo se conceden 2 permisos a 2 usuarios en una sola sentencia: grant create trigger, create procedure to juan, ana; Consultando el diccionario "dba_sys_privs" encontramos los privilegios concedidos a los distintos usuarios; y consultando "user_sys_privs" obtendremos la misma información pero únicamente del usuario actual.

 PRIVILEGIOS DEL SISTEMA (CONCEDER) Problema: Creamos un usuario denominado "ana", con contraseña "anita", le asignamos espacio en "system" (100M). Antes lo eliminamos por si existe: drop user ana cascade; create user ana identified by anita default tablespace system quota 100M on system; Creamos un usuario denominado "juan", con contraseña "juancito", le asignamos espacio en "system" (100M). Antes lo eliminamos por si existe: drop user juan cascade; create user juan identified by juancito default tablespace system quota 100M on system; Concedemos a ambos usuarios permiso para conectarse: grant create session to ana, juan; Concedemos permiso para crear tablas y vistas al usuario "ana": grant create table, create view to ana; Concedemos permiso para crear disparadores y procedimientos a ambos usuarios: grant create trigger, create procedure to juan, ana; Consultamos el diccionario "dba_sys_privs" para ver los privilegios concedidos a "ana" y "juan": select grantee, privilege from dba_sys_privs where grantee='ANA' or grantee='JUAN' order by grantee; Obtenemos la siguiente información:

 PRIVILEGIOS DEL SISTEMA (CONCEDER) GRANTEE PRIVILEGE ------------------------------ANA CREATE VIEW ANA CREATE PROCEDURE ANA CREATE TRIGGER ANA CREATE SESSION ANA CREATE TABLE JUAN CREATE SESSION JUAN CREATE PROCEDURE JUAN CREATE TRIGGER Iniciamos una nueva sesión como "ana". Como "ana" creamos una tabla: create table prueba( nombre varchar2(30), apellido varchar2(30) ); La tabla ha sido creada, porque "ana" tiene pivilegio "create table". Podemos consultar el diccionario "user_sys_privs" para corroborar sus privilegios: select privilege from user_sys_privs;Obtenemos la siguiente información: PRIVILEGE --------CREATE TRIGGER CREATE TABLE CREATE SESSION CREATE VIEW CREATE PROCEDURE Iniciamos una nueva sesión como "juan". Como "juan" intentamos crear una tabla: create table prueba( nombre varchar2(30), apellido varchar2(30) );

 PRIVILEGIOS DEL SISTEMA (CONCEDER) Mensaje de error "privilegios insuficientes". Esto sucede porque "juan", no tiene permiso para crear tablas. Vemos los permisos de "juan": select privilege from user_sys_privs; No tiene permiso para crear tablas. Cambiamos a la conexión "system" y concedemos a "juan" permiso para crear tablas: grant create table to juan; Cambiamos a la solapa "juan" y creamos una tabla: create table prueba( nombre varchar2(30), apellido varchar2(30) ); Podemos hacerlo porque "juan" ahora tiene el permiso. Vemos los permisos de "juan": select privilege from user_sys_privs; Cambiamos a la conexión "system". Veamos todas las tablas denominadas "PRUEBA": select *from dba_objects where object_name='PRUEBA'; Note que hay una tabla propiedad de "ana" y otra que pertenece a "juan".

Related Documents


More Documents from "SoniaMF"

Seguridad Y Acceso A Oracle
February 2021 0
Cremas Cosmetica Natural
February 2021 0
January 2021 0
Bombas Centrifugas
February 2021 1
Cosmetica Natural 5
January 2021 1