BD Oracle
Unitat: Administració remota de la BD
Tema: Administració d'usuaris amb Security Manager
Administració de privilegis amb objectes Rol (funció)
-
Un Rol és un nom que identifica a un grup de privilegis
que podem assignar de forma conjunta als usuaris o fins i tot a altres
rols. Facilita l'asignació de privilegis en BD que tenen molts usuaris,
ja que podem definir-los per a grups d'usuaris en comptes d'un en un.
-
Per exemple podem crear un rol que agrupi els drets CREATE TABLE, CREATE
VIEW i CREATE PROCEDURE i anomenarlo rol_programador. Cada cop que
creem un usuari programador podem assignarli aquest rol de forma que disposarà
d'aquests privilegis.
-
Els privilegis del tipus CREATE objecte permeten als programadors
crear els seus propis objectes dintre del seu propi esquema. D'altre banda
els privilegis del tipus CREATE ANY objecte permeten crear objectes
en qualsevol esquema i normalment només el tindràn els DBA.
-
El rol DBA permet a un usuari administrar de forma remota la BD.
-
El rol CONNECT només permet conectarse a la BD i efectuar
consultes de selecció en SQL sobre les taules a les quals tiguin
drets d'accés. No permet crear taules ni modificar les dades de
les taules.
-
El rol RESOURCE permet a un usuari crear i modificar les seves taules.
És necessari per tal de poder tenir un esquema propi.
-
Al definir un rol podem utilitzar altres rols ja existents, de forma que
el nou rol hereda els drets dels rols que incorpora. Per exemple, en la
següent figura podeu veure els detalls d'un rol ALUMNE que hereda
els drets dels rols CONNECT i RESOURCE i a més a més disposa
d'una serie de privilegis de sistema per crear objectes cluster, Links,
llibreríes i procediments PL/SQL, links i sinònims públics,
seqüències, instantànies, disparadors, etc.
Detalls d'un rol ALUMNE
Administració de privilegis amb objectes profile (perfil)
-
Un perfil d'usuari és un objecte que agrupa uns drets d'utilització
dels recursos físics de la BD, com ara el temps màxim de
connexió, les connexions màximes simultànies o el
temps d'UCP.
-
Per defecte Oracle incorpora un únic perfil anomenat Default
que no imposa cap restricció sobre els recursos i que s'assigna
automàticament a cada usuari quan es crea.
Restriccions especials assignades als programadors sobre els
fitxers i l'UCP
-
Es freqüent que un programador mentre escriu una sentencia SQL o PL/SQL
s'equivoqui i generi "bucles infinits" de lectura o escriptura, la qual
cosa pot col.lapsar el sistema.
-
Si el programador treballa directament sobre la BD real i no sobre una
de proves serà important imposar-li restriccions d'ús de
l'espai per evitat que ompli els fitxers de dades "basura".
-
Per la mateix raó també és recomanable limitar-li
l'ús màxim de UCP del servidor.
-
Per tant serà recomenable crear un perfil programador que verifiqui
aquestes restriccions.
Administradors de seguretat d'aplicacions
-
En grans sistemes de BD on estàn instal.lades diverses aplicacions
amb molts usuaris pot ser convenient delegar part de les responsabilitats
del DBA en un Administrador d'aplicacions que s'encarregui de les
següents tasques:
-
Crear rols per cada aplicació i administrar els privilegis de cada
rol
-
Crear i administrar els objectes que usan les aplicacions de BD
-
Mantenir i actualitzar el codi de les aplicacions PL/SQL
-
Sovint, l'Administrador d'aplicacions és també la persona
que ha desenvolupat l'aplicació.
Validació de la complexitat de la password per Oracle
-
Oracle pot verificar que la password sigui prou complexa amb una rutina
escrita en PL/SQL anomenada utlpwdmg.sql que està a disposició
del DBA per si vol modificar-la.
-
Les comprobacions en aquesta rutina per defecte són:
-
Longitud mínima: 4
-
La passaword ha de ser diferent que el nom d'usuari
-
No estàn permeses paraules simples com ara user, database, i d'altres
(en anglés)
-
També podem modificar la rutina de verificació de complexitat
per algún grup d'usuaris. El següent exemple en SQL assigna
una rutina de verificació anomenada verif_comp al grup d'usuaris
clients:
ALTER PROFILE clients LIMIT
PASSWORD_VERIFY_FUNCTION verif_comp
-
Les rutines de verificació han de ser propietat de l'usuari SYS.
-
Per defecte la validació de la complexitat està desactivada.
Assignar el rol al connectar-se
Quan ens validem en Oracle, tenim tres nivells diferents d'entrada, podem dir
que són rols predefinits:
- normal: no afegim cap dret especial als que l'usuari ja té
definits
- sysoper: operador del sistema; si l'usuari té suficients drets
aleshores aquest nivell permet arrancar i aturar la BD, entre altres tasques
- sysdba: quan un administrador entra com a sysdba té total
libertat de gestió de la BD. Per defecte, només l'usuari sys
pot entrar com a sysdba
Exemple: en SQL per entrar com DBA amb drets totals utilitzant la cadena de
connexió s207 farem
introduzca el nombre de usuario:
sys@s207 as sysdba
contraseña: **********
Administració d'usuaris amb Security Manager
- El Security Manager permet crear, esborrar, modificar i administrar els
privilegis dels usuaris d'un BD.
- Per poder executar el Security Manager cal tenir drets d'administració.
Normalment només l'executa el DBA.
- En tot el tema d'administració remota d'Oracle utilitzareu una BD
en la qual sigueu administradors. Les dades de connexió a aquesta BD
són:
- Els objectes que presenta són: usuaris, rols i profiles (perfils).
- En la següent figura veiem l'aspecte de la finestra del Security Manager
desplegant els usuaris d'una BD i mostrant els detalls d'un d'ells (usuari
USER).
Finestra d'administració d'usuaris en Security
Manager
Creació bàsica d'un usuari
-
Les dades mínimes que cal proporcionar per a crear un usuari estàn
en la targeta de propietats "General" i són:
-
Nom de l'usuari
-
Perfil assignat. Per defecte s'asigna Default (sense restriccions)
-
Tipus d'autentificació: mètode que usa Oracle per
reconèixer a l'usuari. Hi han tres:
-
Password: l'usuari ha de escriure la seva password per a conectar-se
-
External: els usuaris utilitzen els mateixos noms i passwords dintre
d'Oracle i dintre del domini NT. Per tant un cop l'usuari accedeix al domini
NT de forma automàtica té entrada a la BD Oracle. Per tal
de que funcioni aquest mètode s'ha de configurar Oracle ajustant
uns paràmetres en el fitxer INIT.ORA del servidor.
-
Global: en una xarxa amb diverses BD, un dels servidors Oracle és
el que s'encarrega de validar als usuaris, de forma que podem usar un mateix
nom d'usuari en totes les BD de la xarxa.
-
Espai de taules per defecte: tablespace on es guardaran els objectes del
esquema de l'usuari
-
Espai de taules temporal: tablespace que usarà el sistema per escriure
de forma temporal dades auxiliars generades durant l'execució de
sentències SQL i PL/SQL, com ara ORDER BY o AVG.
-
Estat del compte: si l'usuari pot usar el compte (Unlocked) o per el contrari
està deshabilitat (Locked).
-
Optativament podem informar les dades de les altres targetes.
-
La targeta ROLES/Privileges permet assignar rols a l'usuari. Per
defecte només té asignat el rol CONNECT. Veure l'apartat
dedicat a Rols.
-
La targeta SYSTEM PRIVILEGES permet atorgar privilegis sobre objectes
concrets situats en altres esquemes. Els privilegis depenen del tipus d'objecte,
peró el més habituals són SELECT (només
consultar), INSERT (permet afegir dades), UPDATE (permet
modificar), DELETE (permet esborrar dades), ALTER (permet
modificar l'estructura de l'objecte).
-
La targeta Quotes permet limitar l'ús de l'espai en cada
espai de taules.
Creació d'un rol (funció d'usuari)
-
En la següent figura veiem la finestra del Security Manager mostrant
la llista de rols d'una BD i el detall de les propietats del rol DBA, que
proporciona drets d'administrador.
Finestra del Security Manager mostrant els rols i
el detall del rol DBA
Les dades necessàries per a crear un rol són:
-
Nom del rol
-
Mètode d'autentificació: per defecte no cal autentificació,
doncs l'usuari que té associat el rol ja s'ha de validar abans de
connectar-se.
-
Targeta Roles/Privileges: podem assignar al rol altres rols (per
tant heredarà els seus privilegis) i/o afegir directament privilegis
sobre objectes del sistema (opció System Privileges de la
llista desplegable). Per exemple el rol DBA hereda els drets dels
rols DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE i SELECT_CATALOG_ROLE
que en conjunt proporcionan accés als objectes interns de la BD
necesaris per l'administrador, i també els de IMP_FULL_DATABASE
i EXP_FULL_DATABASE que permeten realitzar còpies de seguretat
i importar dades externes a la BD. Obriu per exemple el rol EXECUTE_CATALOG_ROLE
i comprobeu que aquest rol dóna drets d'execució sobre una
col.lecció de rutines d'utilitat que són propietat de l'usuari
SYS.
-
Els privilegis de sistema no són pas sobre objectes concrets, sinò
genèrics. Per exemple si observeu els del rol DBA veureu que pot
modificar (ALTER ANY) practicament qualsevol tipus d'objecte de
la BD (CLUSTER, INDEX, LIBRARY, PROCEDURE, etc.) sigui quin sigui
el seu propietari, realitzar auditoríes (AUDIT ANY, AUDIT SYSTEM),
etc.
-
Targeta Object Privileges: adicionalment podem incloure en aquesta
targeta drets sobre objectes concrets no inclosos en l'anterior. En el
cas del rol DBA s'inclouen aquí drets d'execució específics
sobre rutines del sistema.
-
Columna Admin Option: si marquem un privilegi amb aquesta opció,
aleshores l'usuari podrà a la seva vegada concedir drets sobre els
objectes a altres usuaris.
Creació d'un perfil d'usuari
-
En la següent figura es mostren les propietats del perfil DEFAULT
d'una BD on s'han establert limitacions d'ús dels recursos físics.
Propietats d'un perfil d'usuari en el Security Manager
-
Descripció dels paràmetres de la targeta General:
-
CPU/Session: ús màxim de temps de l'UCP en total en
cada sessió (connexió) de treball de l'usuari. Cal tenir
en compte que aquest és el temps de dedicació exclusiu de
l'UCP a l'usuari i que normalment els usuaris necessiten molt temps d'accés
al disc i molt poc d'UCP, excepte per senténcies SQL extraordinariament
compelxes. En l'exemple el temps de dedicació en exclusiva està
limitat a 10 segons.
-
CPU/Call: ús màxim de temps de l'UCP en cada crida
(execució de sentència SQL).
-
Connect Time: temps màxim que l'usuari pot estar connectat.
-
Idle Time: Temps màxim que l'usuari pot estar connectat peró
inactiu.
-
Concurrent Sessions: màxim de connexions simultànies
que podem efectuar amb un únic nom d'usuari.
-
Reads/Session, Reads/Call: lectures al disc màximes per sessió
i per execució d'instruccions.
-
Private SGA: part de la memòria comú SGA reservada
com a màxim per l'usuari
-
Descripció dels paràmetres de la Targeta Password:
-
Expire Password: podem fer que l'usuari hagi de canviar la password
periòdicament i que si no ho fa, el compte quedi inhabilitat després
d'un període de temps.
-
Keep Password History: Oracle pot enmagatzemar en uns fitxers Log
específics cada intent de connexió.
-
Enforce Password Complexity: podem habilitar la validació
de la complexitat de la password .
-
Lock Account on Failed Logon: permet inhabilitar un compte d'usuari
quan ens equivoquem repetits cops en introduïr la seva password. La
inhabilitació pot ser temporal o indefinida.
Pràctiques
1. Crear un usuari anomenat Admin que tindrà els Tablespace
per defecte SYSTEM i TEMP. Tindrà els drets agrupats en
el rol DBA. Crear a continuació l'usuari usuari amb TB
per defecte USER_DATA i TEMP amb els drets del rol CONNECT.
Proveu a connectar-vos a SQL amb els dos usuaris. Connecteu-vos a l'Schema Manager
amb usuari i intenteu de crear una taula. Què passa i perquè?
Feu el mateix amb Admin. Pot Admin crear una taula en l'esquema
d'usuari? Perquè? Com ho solucionaríes?
2. Crear un perfil anomenat PERFILusuari amb les següents
limitacions d'ús del sistema:
-
temps de connexió: 1 minut
-
sessions concurrents: una
-
Password: el compte d'usuari queda inhabilitat indefinidament després
de 3 intents errònis de identificació
3. Assigneu el perfil PERFILusuari al usuari USUARI i comprobeu
que les limitacions introduïdes en el perfil afecten a l'usuari.
4. Crea un rol anomenat ROL_programador amb els següents
paràmetres:
- Drets de sistema: execució de qualsevol llibrería i procediment
(EXECUTE ANY PROCEDURE, LIBRARY)
- Rols: RESOURCE, JAVAADMIN
- Drets sobre objectes: SELECT sobre la taula de l'usuari USUARI
6. Crea ara un usuari programador al que li asignaras el rol ROL_programador.
Comproba que té dret de lectura sobre la taula de l'usuari usuari
peró no pot ni afegir ni modificar les dades.