M2 - Bases de dades / Continguts UF3: Privilegis i usuaris

De wikiserver
Dreceres ràpides: navegació, cerca

Crear Usuaris i assignar privilegis

A tenir en compte a l'hora de crear usuaris i els privilegis i rols a assignar:

  • El nom d'usuari no ha de superar 30 caràcters, no ha de tenir caràcters especials i ha d'iniciar amb una lletra.
  • Un mètode d'autenticació. El mes comú és una clau o password, però Oracle 10g suporta altres mètodes (com biomètric, certificat i autenticació per mitjà de token).
  • Un Tablespace default, el qual és on l'usuari va a poder crear els seus objectes per defecte, no obstant això, això no significa que pugui crear objectes, o que tingui una quota d'espai. Aquests permisos s'assignen de forma separada, excepte si utilitza el privilegi RESOURCE el que assigna una quota unlimited, fins i tot en el Tablespace SYSTEM! No obstant això si això ocorre, un. pot posteriorment moure els objectes creats en el SYSTEM a un altre Tablespace.
  • Un Tablespace temporal, on l'usuari crea els seus objectes temporals i fa els sort o ordenaments.
  • Un perfil o profile d'usuari, que són les restriccions que pot tenir el seu compte (opcional).

Per exemple, connectat com l'usuari SYS, pots crear un usuari i la seva clau així:

SQL> CREATE USER ahernandez IDENTIFIED BY ahz
DEFAULT TABLESPACE users;

Si no s'indica un Tablespace per defecte, l'usuari pren el que està definit en la BD (generalment el SYSTEM). Per modificar el Tablespace default d'un usuari es fa de la següent manera:

SQL> ALTER USER jperez DEFAULT TABLESPACE datos;

També podem assignar als usuaris un Tablespace temporal on s'emmagatzemen operacions d'ordenament. Aquestes inclouen les clàusules ORDER BY, GROUP BY, SELECT DISTINCT, MERGE JOIN, o CREATE INDEX (també és utilitzat quan es creen Taules temporals).

SQL> CREATE USER jperez IDENTIFIED BY jpz
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp;

Addicionalment, a cada usuari es pot assignar a un profile o perfil, que té dos propòsits principalment:

  • Limita l'ús de recursos, la qual cosa és recomanable, per exemple en ambients de Desenvolupament.
  • Garanteix i reforça regles de Seguretat a nivell de comptes.


Exemples, quan es crea l'usuari o assignar un perfil existent:

SQL> CREATE USER jperez IDENTIFIED BY jpz
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
PROFILE resource_profile;

SQL> ALTER USER jperez
PROFILE perfil_desa;

Modificar comptes d'Usuari

Per modificar un usuari creat, per exemple canviar la seva clau, tenim la sintaxis:

SQL> ALTER USER NOMBRE_USUARIO
IDENTIFIED BY CLAVE_ACCESO
[DEFAULT TABLESPACE ESPACIO_TABLA]
[TEMPORARY TABLESPACE ESPACIO_TABLA]
[QUOTA {ENTERO {K | M } | UNLIMITED } ON ESPACIO_TABLA
[PROFILE PERFIL];

Privilegis de Sistema i d'Objectes

En Oracle existeixen dos tipus de privilegis d'usuari.

  • System:
- permet a l'usuari fer certes tasques sobre la BD, com per exemple crear un Tablespace.
- atorgats per l'administrador o per algú que hagi rebut el permís per administrar aquest tipus de privilegi.

Exemples:

- create session: per connectar-se a la base de dades
- create table: per poder crear taules
- create sequence: per poder crear seqüències
- create view: per poder crear vistes
- create trigger: per poder crear disparadors dins del propi esquema
- create procedure: crear poder crear procediments i funcions
- execute any procedure: permet executar qualsevol procediment en qualsevol esquema
- create user: permet crear usuaris i especificar claus
- create role: permet crear rols
- drop user: permet eliminar usuaris
  • Oracle 11g té 208 privilegis de sistema els quals poden ser vists consultant la vista: SYSTEM_PRIVILEGE_MAP
  • Els privilegis de sistema: SYSDBA i SYSOPER. permeten que altres usuaris tinguin privilegis d'administradors de base de dades.
  • Atorgar diversos privilegis alhora:
SQL> GRANT CREATE USER, ALTER USER, DROP USER TO ahernandez;
  • Object:
- permet a l'usuari realitzar certes accions en objectes de la BD, com una Taula, Vista, un Procedure o Funció, etc.
- per defecte un usuari només pot accedir als seus propis objectes (USER_OBJECTS).
- atorgats pel propietari de l'objecte, l'administrador o algú que hagi rebut aquest privilegi explícitament (amb GRANT OPTION).

Per exemple, per atorgar permisos a una taula Vendes per a un usuari particular:

SQL> GRANT SELECT,INSERT,UPDATE ON analista.venta TO jperez;

Addicionalment:

- podem restringir els DML a una columna de la taula.
- podem donar el priveligi de poder donar el privilegi (amb WITH GRANT OPTION).

Exemple:

SQL> GRANT SELECT,INSERT,UPDATE,DELETE ON venta TO mgarcia WITH GRANT OPTION;

Assignar quotes a Usuaris

Per defecte cap usuari té assignada quota en els Tablespaces i es tenen tres opcions per poder proveir a un usuari d'una quota:

  • Sense límit, que permet a l'usuari usar tot l'espai disponible d'un Tablespace.
  • Per mitjà d'un valor, que pot ser en kilobytes o megabytes que l'usuari pot usar. Aquest valor pot ser major o menor que la grandària del Tablespace assignat a ell.
  • Per mitjà del privilegi UNLIMITED TABLESPACE, es té prioritat sobre qualsevol quota donada en un Tablespace pel que tenen disponibilitat de tot l'espai incloent en SYSTEM i SYSAUX.

No es recomana donar quotes als usuaris en els Tablespaces SYSTEM i SYSAUX, doncs normalment només els usuaris SYS i SYSTEM poden crear objectes en aquests. Tampoc donar quotes en els Tablespaces Temporal o del tipus Undo.

Rols

  • Conjunt de privilegis que es poden atorgar a un usuari o a un altre Rol.
  • Simplifiquen el treball dels DBA en l'assignació de privilegis.
  • Per defecte, quan es crea un usuari se li assigna el rol CONNECT, que permet que l'usuari pugui connectar-se a la BD i crear els seus propis objectes en el seu propi esquema. D'una altra manera, hem d'assignar-los en forma manual.

Exemple:

Creació del rol:

SQL> CREATE ROLE appl_dba;   

Opcionalment, es pot assignar una clau al Rol:

SQL> SET ROLE appl_dba IDENTIFIED BY app_pwd;

Per assignar aquest Rol a un usuari:

SQL> GRANT appl_dba TO jperez;

També es poden assignar als rols privilegis sobre Objectes, per exemple en una Taula de Factures on només volem que es puguin fer Consultes i insercions:

SQL> CREATE ROLE consulta;

SQL> GRANT SELECT,INSERT on analista.factura TO consulta;

I finalment assignem aquest rol amb aquest "perfil" a diferents usuaris finals:

SQL> GRANT consulta TO ahernandez;

Nota: Existeixen alguns rols predefinits, tals com:

CONNECT, RESOURCE, DBA, SELECT_CATALOG_ROLE, EXECUTE_CATALOG_ROLE, EXP_FULL_DATABASE, IMP_FULL_DATABASE, etc.

  • DBA: Té la majoria dels privilegis, no és recomanable assignar-ho a usuaris que no són administradors.
  • SELECT_CATALOG_ROLE: No té privilegis de sistema, però té prop de 1600 privilegis d'objecte.

Per consultar els rols definits i els privilegis atorgats a través d'ells, utilitzi les vistes:

SQL> select * from DBA_ROLES;

SQL> select * from DBA_ROLE_PRIVS order by GRANTEE;