M2 - Bases de dades / Continguts UF3: Administració d'usuaris

De wikiserver
Dreceres ràpides: navegació, cerca

Creació d'Usuaris

Una de les més bàsiques tasques d'un administrador de base de dades és identificar els usuaris. Cada usuari que connecta en la base de dades deu tenir un compte. En els comptes compartits són difícils d'aplicar una auditoria. Per crear un usuari utilitzem la sentència CREATE USER. Quan creguis un compte com a mínim has d'assignar un únic nom (username) i una contrasenya per poder autenticar-se.

Per canviar algun dels atributs que se li ha afegit a l'usuari creat s'utilitza la sentència ALTER USER.

Autenticació

Quan un es connecta amb una instància d'una base de dades el compte d'usuari deu estar autenticada. ORACLE proveeix tres mètodes d'autenticació per al nostre compte d'usuari.


AUTENTICACIÓ MITJANÇANT PASSWORD

Quan un usuari connecta amb una base de dades verifica que aquest usuari i la contrasenya introduïda emmagatzemada en la base de dades, sigui correcta. Les contrasenyes es guarden encriptades en la base de dades (en el data dictionary).

SQL > CREATE USER david IDENTIFIED BY tititus;

En aquest cas tititus és la contrasenya de david que serà guardada encriptada en la base de dades.

Autenticació Externa

Quan un usuari connecta amb la base de dades es verifica que el nom d'usuari és el mateix que el nom d'usuari del sistema operatiu per permetre la validació.

No s'emmagatzemen els comptes en la base de dades de cap manera. Aquests comptes estan sempre referides amb OPS$ .A partir de la versió 10g pots configurar OS_AUTHENT_PREFIX en el spfile

SQL > CREATE USER ops$david IDENTIFIED BY tititus;

Mitjançant IDENTIFIED EXTERNALLY diem a la base de dades que el nostre compte és externa i ha de ser validada amb el sistema operatiu.

Autenticació Global

Quan un usuari es connecta amb la base de dades es verifica globalment quan la informació passa per una opció avançada de seguretat (ADVANCED SECURITY OPTION) per a l'autenticació tal com Kerberos, RADIUS.

Per als comptes globals no s'emmagatzema tampoc gens en la base de dades.

SQL > CREATE USER david IDENTIFIED GLOBALLY AS 'CN=alumnes,OU=campus...'

Mitjançant IDENTIFIED GLOBALLY diem a la base de dades que nostre compte s'autentica globalment, mitjançant una altra opció de seguretat avançada.

Assignacions als Usuaris

Assignació d'un usuari a un tablespace ( DEFAULT TABLESPACE )

Mitjançant aquesta sentencia assignem un usuari a un tablespace per defecte en la seva creació:

SQL > CREATE USER david IDENTIFIED BY tititus DEFAULT TABLESPACE users;

Mitjançant aquesta sentencia assignem un usuari a un tablespace per defecte després de la seva creació:

SQL > ALTER USER david DEFAULT TABLESPACE users;

La base de dades té definit un tablespace per defecte, en cas de voler-lo canviar utilitzarem la següent sentencia:

SQL > ALTER DATABASE DEFAULT TABLESPACE users;

Assignació d'un usuari a un tablespace temporal

Un tablespace temporal s'utilitza per emmagatzemar "segments" temporals que són creats durant operacions com ORDER BY,SELECT DISTINCT, MERGE JOIN o CREATE INDEX. De vegades als usuaris se'ls associa un tablespace temporal per realitzar aquest tipus d'operacions, quan aquestes operacions finalitzen aquest segment temporal que s'ha creat exclusivament per a l'operació desapareix.

SQL > CREATE USER david IDENTIFIED BY tititus DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp;

Mitjançant TEMPORARY TABLESPACE assignem com tablespace temporal temp a l'usuari david.

En cas que l'usuari estigui creat si volem assignar-li un tablespace temporal utilitzem ALTER USER.

SQL > ALTER USER david TEMPORARY TABLESPACE Temp;

La base de dades pren un tablespace per defecte, en cas de voler canviar aquest tablespace utilitzem la següent sentència

SQL > ALTER DATABASE DEFAULT TABLESPACE users;

Assignació d'un perfil a un usuari

Igual que podem assignar un tablespace a un usuari, també podem assignar-li un perfil (profile). El principal perfil ( profile ) per defecte es denomina default. Si l'usuari no està el podem crear de la següent forma:

SQL > CREATE USER david IDENTIFIED BY tititus
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
PROFILE resource_profile;

En cas que l'usuari ja estigui creat igual que en els anteriors casos utilitzem la sentència ALTER USER.

SQL > ALTER USER david PROFILE resource_profile;

Esborrat d'un usuari

Per esborrar un usuari utilitzem la sentència DROP USER, podem opcionalment incloure l'opció CASCADE, s'utilitza per esborrar recursivament els objectes de l'usuari que es pretén esborrar.

SQL > DROP USER david CASCADE

Atorgant privilegis (GRANTING)

A un usuari podem atorgar-li una sèrie de privilegis. Un privilegi permet a un usuari accedir a certs objectes o realitzar certes accions:

  • Privilegis sobre Objectes ( Object privileges ). Permisos sobre vistes, taules, seqüències, procediments, paquets.
  • Privilegis del Sistema ( System privileges ). Permisos sobre "nivells de la base de dades" com poden ser connexió a la base de dades, creació d'usuaris, limitar comptes.
  • Privilegis sobre Rols ( Role privileges ). Molts permisos són atorgats mitjançant rols agrupant un conjunt de privilegis. Per atorgar privilegis utilitzem la sentencia GRANT, per llevar un privilegi o permís a un usuari utilitzem la sentència REVOKE

EXEMPLES

Privilegi sobre una taula:

SQL > GRANT ALL ON taula_alumnes TO david

Sent taula_alumnes una taula de la nostra base de dades i david un usuari d'aquesta, hem assignat mitjançant GRANT ALL,tots els permisos a l'usuari david sobre aquesta taula.

GRANT ALL = permisos SELECT, INSERT, UPDATE, DELETE

Si volem assignar només un d'aquests permisos utilitzem la mateixa sentència però amb el permís que vulguem atorgar.

SQL > GRANT SELECT ON taula_alumnes TO david

SQL > GRANT SELECT,INSERT ON taula_alumnes TO david

Privilegi sobre una vista:

Per al cas de les vistes podem a un usuari atorgar permisos SELECT, INSERT, UPDATE, DELETE, DEBUG, REFERENCES. Sent vesteixi_alumnes una vista de la nostra base de dades i david un usuari d'aquesta: Atorguem a l'usuari david tots els permisos sobre la vista vista_alumnes.

SQL > GRANT ALL ON vista_alumnes TO david

Atorguem a l'usuari david alguns permisos sobre la vista_alumnes

SQL > GRANT SELECT ON vista_alumnes TO david

SQL > GRANT SELECT,INSERT ON vista_alumnes TO david

Privilegi sobre una seqüència:

Amb les seqüències passa el mateix que amb els anteriors objectes vists, per atorgar permisos s'utilitza GRANT. Els permisos que podem atorgar a una seqüència és SELECT o ALTER.

Privilegi sobre un paquet,funció o procediment:

Els permisos que podem atorgar a les funcions, paquets o procediments emmagatzemats en la nostra base de dades són els següents: EXECUTE, DEBUG.

LLevant privilegis

Si volem llevar un privilegi a un d'aquests objectes farem el mateix que amb GRANT però utilitzant la sentència REVOKE.