El control d'accés decideix qui es pot connectar a la base de dades i què hi pot fer.
El primer pas és identificar qui accedeix: cada persona o aplicació que es connecta ho fa
amb un compte propi, de manera que se li poden donar només els permisos que necessita
i es pot saber qui ha fet cada operació.
En Oracle DB, aquest control es basa en dos conceptes:
Usuari: compte amb què es connecta una persona o una aplicació. Cada usuari té associat
un esquema amb el mateix nom, on es guarden els objectes que crea.
Rol: conjunt de privilegis amb nom, que es pot assignar a diversos usuaris alhora.
Els usuaris s'han de crear dins de la PDB (XEPDB1), no en la CDB.
Els usuaris creats en l'arrel de la CDB són usuaris comuns, que existeixen en totes les PDB
i el nom dels quals ha de començar per C##. Els usuaris d'una aplicació, en canvi, són
usuaris locals de la seua PDB. Per això, abans de crear-los cal connectar-se a la PDB:
ALTERSESSIONSETCONTAINER=XEPDB1;
Preparació de l'entorn d'exemple
Els exemples d'aquests apunts s'executen en la PDB XEPDB1, connectat amb l'usuari SYS.
L'usuari botiga és el propietari de les taules que s'utilitzaran en els exemples:
Crear un usuari no li permet connectar-se: cal concedir-li el privilegi CREATE SESSION (vegeu Privilegis).
Exemple: Crear els usuaris ana i marc
Es creen dos usuaris amb el tablespaceusers per defecte. ana té una quota de 10 MB,
mentre que marc haurà de canviar la contrasenya en el primer inici de sessió:
USERNAME ACCOUNT_STATUS DEFAULT_TABLESPACE PROFILE CREATED
-------- -------------- ------------------ ------- ---------
ANA OPEN USERS DEFAULT 15-JAN-26
MARC EXPIRED USERS DEFAULT 15-JAN-26
S'observa que el compte de MARC apareix com a EXPIRED, ja que s'ha creat amb PASSWORD EXPIRE.
A més, la vista DBA_TS_QUOTAS mostra les quotes de cada usuari:
Cada vista DBA_ té una versió ALL_ (objectes accessibles) i una versió USER_ (objectes propis), que poden consultar els usuaris sense privilegis d'administració.
L'ordre ALTER USER permet canviar qualsevol de les opcions de CREATE USER. Els usos més habituals
són canviar la contrasenya, modificar la quota i bloquejar o desbloquejar el compte:
ALTERUSER<nom><opció>[...];
<opció>: qualsevol de les opcions de CREATE USER,
com IDENTIFIED BY, QUOTA, PROFILE, PASSWORD EXPIRE o ACCOUNT LOCK.
Si marc intenta connectar-se, obté l'error següent:
ORA-28000: The account is locked.
S'observa que el compte continua existint, amb tots els seus objectes i privilegis,
però no es pot utilitzar fins que es desbloqueja amb ACCOUNT UNLOCK.
Per als exemples següents, es torna a desbloquejar el compte:
Un perfil és un conjunt de límits que s'aplica als usuaris que el tenen assignat. Serveix per
aplicar polítiques de seguretat a les contrasenyes (caducitat, intents fallits…) i per limitar
els recursos que pot consumir cada sessió. Tots els usuaris tenen el perfil DEFAULT si no se n'indica
cap altre.
CREATEPROFILE<nom>LIMIT<límit><valor>[...];
<nom>: nom del perfil.
<límit> <valor>: cada límit que defineix el perfil. El valor pot ser un número, UNLIMITED
o DEFAULT (el valor del perfil DEFAULT).
Límits habituals de CREATE PROFILE
Límit
Significat
FAILED_LOGIN_ATTEMPTS
Intents fallits abans de bloquejar el compte
PASSWORD_LOCK_TIME
Dies que el compte roman bloquejat després dels intents fallits
PASSWORD_LIFE_TIME
Dies que dura la contrasenya abans de caducar
PASSWORD_GRACE_TIME
Dies de gràcia per canviar la contrasenya un cop caducada
PASSWORD_REUSE_MAX
Nombre de canvis abans de poder reutilitzar una contrasenya
Es crea un perfil que bloqueja el compte durant un dia després de tres intents fallits,
fa caducar la contrasenya cada 90 dies i limita cada usuari a dues sessions:
Assignar els privilegis un a un a cada usuari és difícil de mantindre. En canvi, si els privilegis
s'agrupen en un rol i el rol s'assigna als usuaris, n'hi ha prou amb modificar el rol perquè
el canvi afecte tots els usuaris alhora.
Quan un usuari inicia sessió, s'activen automàticament els seus rols per defecte, que inicialment
són tots els que té assignats. Es poden restringir amb ALTER USER ... DEFAULT ROLE, de manera que
alguns rols s'hagen d'activar explícitament amb SET ROLE:
ALTERUSERanaDEFAULTROLEALLEXCEPTrol_vendes;
SETROLErol_vendes;
Els rols actius de la sessió actual es poden consultar a la vista SESSION_ROLES:
SELECT*FROMsession_roles;
Modificació i eliminació d'un rol (ALTER ROLE i DROP ROLE)¶
L'ordre ALTER ROLE permet afegir o llevar la contrasenya d'un rol, i DROP ROLE l'elimina.
En eliminar un rol, tots els usuaris que el tenien assignat perden els seus privilegis: