Privilegis o permisos

Introducció

Els privilegis o permisos, especifiquen quines operacions pot fer un usuari (quines sentències SQL pot executar) i sobre quins objectes de la base de dades té autorització.

És important no excedir-se en la concessió de privilegis.

Els privilegis es poden assignar a usuaris (indivualment) o preferiblement a rols (a tots els usuaris del grup).

Els permisos que un usuari té en una base de dades depenen dels permisos de l’usuari i dels que tinguin els rols als qual pertanyen.

Com a mínim, un usuari ha de tenir permís per connectar-se CREATE SESSION.

Tipus de privilegis

Existeixen dos tipus de privilegis:

  • De sistema: Permeten realitzar determinades accions a la base de dades (connectar-se, crear usuaris, crear taules, crear vistes, eliminar taules, etc.).

  • Sobre objecte: Permeten a un usuari accedir i manipular o executar objectes concrets (taules, vistes, seqüències,...).

Assignació de privilegis

Sintaxi:

GRANT { <Privilegi1> [, < Privilegi2> ..] } | ALL
[ON [<usuari2>.]<Objecte> ]
TO {<usuari2> [, <usuari3> ...]} | PUBLIC 
[WITH GRANT OPTION]

Exemples:

GRANT CREATE SESSION TO batman;     //de sistema
GRANT SELECT ON profes TO batman;   //sobre un objecte

Treure privilegis

REVOKE {ALL | SELECT | INSERT | DELETE | INDEX | ALTER | UPDATE | UPDATE(<Columna1> [, <Columna2> ...])}
[ON [<usuari2>.]<Objecte> ]
FROM {PUBLIC | <Usuari1> [, <Usuari2> ...]}
[RESTRICT/CASCADE]

Exemples:

REVOKE CREATE SESSION TO batman;      //de sistema
REVOKE ALL ON proveidors TO batman;   //sobre un objecte

Consultar privilegis

Podem consultar la vista dba_sys_privs per veure els permisos concedits.

Ens mostrarà el nom usuari (grantee) i el permís (privilege), entre altres coses.

Si consultem el diccionari user_sys_privs obtenim el mateix, però de l’usuari actual.

Podem saber el nom de l’usuari connectat amb la comanda:

SHOW USER;

Si executem la següent comanda:

SELECT grantee, privilege
FROM dba_sys_privs
WHERE GRANTEE=batman' OR grantee=‘robin';

Veiem que no tenen permisos. En aquest moment no pot fer res, ni tant sols connectar-se a la base de dades. Per fer-ho:

GRANT CREATE SESSION TO batman;

Consultem la vista dba_sys_privs

SELECT grantee,privilege
FROM dba_sys_privs
WHERE grantee=batman';

Té permís "create session".

Per conèixer els privilegis dels usuaris o rols també podem consultar les següents vistes:

  • session_privs: privilegis de l'usauri actiu
  • dba_tab_privs: permisos sobre un objecte
  • dba_users: usuaris del sistema
  • dba_tables: taules del sistema
  • user_tables: taules de l'usuari

Privilegis de sistema

Privilegi del sistema Operacions autoritzades
CREATE SESSION Connectar a la bdd
CREATE TABLE Crear taules a l’esquema de l’usuari
ALTER TABLE Modificar l'estuctura de les taules a l’esquema de l’usuari
DROP TABLE Eliminar taules a l’esquema de l’usuari
CREATE VIEW Crear vistes a l’esquema de l’usuari
CREATE PROCEDURE Crear un paquet, una funció o un procediment en l’esquema de l’usuari
CREATE USER Crear un usuari

La clàusula ANY en qualsevol privilegi indica que els usuaris que se li concedeix tenen aquest dret en qualsevol esquema.

Exemple:

GRANT CREATE TABLE TO batman;        //Crear taules en el seu esquema.
GRANT CREATE ANY TABLE TO batman;    //Crear taules a qualsevol esquema.

Podem obtenir la llista dels permisos del sistema:

SELECT * FROM system_privilege_map;

Privilegis d'objecte

El propietari d’un objecte pot donar qualsevol privilegi sobre un objecte als altres usuaris.

El propietari té automàticament tots els privilegis sobre els seus objectes.

Qualsevol usuari podrà donar privilegis a un objecte si l'objecte està en el seu esquema o bé se li han donat els privilegis WITH GRANT OPTION.

Privilegi Taula Vista Procediment
INSERT X X
UPDATE X X
DELETE X X
SELECT X X
INDEX X
EXECUTE X

Permisos per consultar una taula:

GRAN select ON empleats TO batman, robin;

Permisos per actualitzar columnes específiques

GRANT update (dept_nom, dept_loc)
ON departaments
TO batman, robin;

Transferir privilegis

L’usuari al que se li dóna permís d’accés, el pot transferir, si es fa servir la paraula clau WITH GRANT OPTION.

Donar autoritat per transferir permisos:

GRANT select, insert ON departaments 
TO pere
WITH GRANT OPTION;

Els permisos d’objecte donats amb WITH GRANT OPTION es revoquen quan es revoca el permís a qui l’ha donat.

Assignar privilegis a tots els usuaris

Amb PUBLIC s’autoritza a tots els usuaris.

GRANT select ON departaments
TO PUBLIC;

Assignar tots els privilegis

Si especifiquem ALL PRIVILEGES s'atorguen tots els privilegis sobre l'objecte.

GRANT ALL PRIVILEGE ON departaments
TO batman;

results matching ""

    No results matching ""