M2 - Bases de dades / Continguts UF3: Privilegis i usuaris
Contingut
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;