|
| ||||||||||||||||||||||||||||||||||
AuditoriaJoan Puigcerver Ibáñez Introducció¶L'auditoria d'una base de dades consisteix a registrar les operacions que duen a terme els usuaris dins del sistema gestor. Gràcies a això, l'administrador de la base de dades pot conéixer amb detall com s'utilitza la informació i quines accions fa cada usuari. Es tracta d'una mesura de seguretat passiva, ja que normalment s'utilitza quan ja s'ha produït un accés indegut o una operació incorrecta, per identificar el responsable o determinar quina acció ha provocat l'error. És a dir, l'auditoria no impedeix aquests accessos o operacions no autoritzades, sinó que permet analitzar què ha ocorregut per aplicar les mesures correctores adequades. Mitjançant l'auditoria és possible detectar diversos tipus d'anomalies, com ara:
Segons el detall de la informació que es registra, es distingeixen dos nivells d'auditoria:
La informació d'auditoria es pot guardar tant en fitxers com en taules del diccionari de dades del mateix sistema gestor. Quan s'emmagatzema en el diccionari de dades, cada accés a un objecte auditat es registra com una fila en una taula, cosa que facilita la consulta i la revisió de la informació. No obstant això, aquest mètode implica una càrrega més gran per al sistema gestor i un consum elevat d'espai, especialment si la política d'auditoria és molt restrictiva. Per això, és recomanable limitar els objectes auditats per no comprometre el rendiment ni els recursos del sistema. La informació generada per l'auditoria no s'ha d'emmagatzemar mai en el mateix disc on es troben el sistema operatiu del servidor o el SGBD. Si el sistema gestor patira un atac i registrara tots els intents d'accés, podria arribar a ocupar tot l'espai disponible en el disc. En aquest cas, fins i tot seria impossible iniciar sessió al servidor per dur a terme les tasques de correcció necessàries. L'opció més segura és utilitzar un disc independent per emmagatzemar la informació d'auditoria o bé sistemes d'emmagatzematge en xarxa. Auditoria en Oracle DB¶L'auditoria tradicional d'Oracle DB s'activa mitjançant el paràmetre Valors de
|
| Valor | Significat |
|---|---|
NONE |
L'auditoria està desactivada |
OS |
Els esdeveniments es redirigeixen al sistema operatiu, que s'encarrega de gestionar-los |
DB |
Els registres es guarden en la taula del diccionari de dades SYS.AUD$ |
XML |
Els registres es guarden en fitxers XML en el directori indicat pel paràmetre AUDIT_FILE_DEST |
Com que és un paràmetre estàtic, es modifica amb SCOPE=SPFILE i cal reiniciar la base de dades
perquè tinga efecte:
Les accions de l'usuari SYS no es registren en els registres d'auditoria.
Oracle DB ofereix tres ferramentes principals per gestionar l'auditoria:
AUDIT: permet auditar els accessos al sistema, les accions de la base de dades i les operacions sobre objectes. A més, distingeix entre operacions correctes i incorrectes, de manera que es poden registrar, per exemple, només els intents fallits d'inici de sessió.- Paquet
DBMS_FGA(Fine Grained Auditing): permet una auditoria més detallada, a nivell de fila i de columna. És especialment útil per auditar dades sensibles, ja que permet definir regles específiques per a cada taula o columna. - Auditoria unificada: introduïda en Oracle 12c, permet crear polítiques d'auditoria que es poden aplicar a múltiples objectes i operacions. Simplifica la gestió de l'auditoria i millora el rendiment del sistema.
Documentació oficial: Introduction to Auditing – Oracle DB
Auditoria tradicional (AUDIT i NOAUDIT)¶
L'ordre AUDIT activa l'auditoria tradicional per a tres tipus diferents d'accions: els inicis
de sessió, les accions generals sobre un tipus d'objecte i les operacions sobre objectes concrets.
Per utilitzar les ordres AUDIT i NOAUDIT, l'usuari ha de tindre el privilegi AUDIT SYSTEM.
A més, per auditar operacions sobre objectes concrets, l'usuari ha de ser propietari de l'objecte
o tindre el privilegi AUDIT ANY.
Documentació oficial: AUDIT (Traditional Auditing) – Oracle DB
Els exemples d'aquesta secció continuen l'un a l'altre: utilitzen el mateix usuari audit_test
i la mateixa taula audit_table_test.
Inici de sessió al sistema¶
Per auditar els intents d'inici de sessió, s'utilitza AUDIT SESSION. Es poden limitar
a un usuari concret o només als accessos correctes o incorrectes:
Exemple: AUDIT SESSION
-
Es crea un usuari de prova:
-
S'auditen tots els intents d'inici de sessió, tant correctes com incorrectes:
-
Es comproven les regles d'auditoria configurades:
-
S'inicia sessió amb l'usuari
AUDIT_TEST: -
Es consulten els registres d'auditoria a la vista
DBA_AUDIT_SESSION:
S'observa que l'inici de sessió s'ha registrat amb RETURNCODE 0, és a dir, correcte.
Accions de la base de dades¶
També es poden auditar accions generals de la base de dades que afecten un tipus d'objecte, com ara la creació de qualsevol taula:
<action>: acció que es vol auditar (CREATE,DROP,ALTER,SELECT,INSERT,UPDATE,DELETE…).<object_type>: tipus d'objecte de la base de dades (TABLE,VIEW,INDEX,PROCEDURE…).[BY <user>]: (opcional) usuari al qual s'aplica l'auditoria. Si no s'especifica, s'aplica a tots els usuaris.[WHENEVER [NOT] SUCCESSFUL]: (opcional) indica si s'auditen només les operacions correctes o només les incorrectes. Si no s'especifica, s'auditen totes dues.
Exemple: AUDIT CREATE TABLE
-
S'auditen totes les operacions de creació de taules:
-
Es comproven les regles d'auditoria configurades:
-
Es dona permís de creació de taules a l'usuari
AUDIT_TEST: -
Es connecta amb l'usuari
AUDIT_TEST: -
Es crea una taula amb l'usuari
AUDIT_TEST: -
Es consulten els registres d'auditoria a la vista
DBA_AUDIT_TRAIL:
S'observa que s'ha registrat la creació de la taula AUDIT_TABLE_TEST.
Operacions sobre objectes¶
Finalment, es poden auditar operacions concretes sobre un objecte determinat, com una taula o una vista:
<operation>: operació que es vol auditar (SELECT,INSERT,UPDATE,DELETEoALL).<object_name>: nom de l'objecte de la base de dades, com ara una taula o una vista.[BY <user>]i[WHENEVER [NOT] SUCCESSFUL]: (opcionals) igual que en les accions de la base de dades.
Exemple: AUDIT INSERT ON audit_table_test
-
S'auditen totes les operacions d'inserció a la taula
AUDIT_TABLE_TEST:Aquesta operació l'ha de realitzar un usuari amb permisos sobre
audit_table_test. -
Es comproven les regles d'auditoria configurades:
SELECT OWNER, OBJECT_NAME, OBJECT_TYPE, INS FROM DBA_OBJ_AUDIT_OPTS WHERE object_name = 'AUDIT_TABLE_TEST';A/Aindica Audit All, tant per a operacions correctes com incorrectes. -
Es connecta amb l'usuari
AUDIT_TEST: -
S'insereix una fila a la taula
AUDIT_TABLE_TEST: -
Es consulten els registres d'auditoria a la vista
DBA_AUDIT_TRAIL:
S'observa que s'ha registrat la inserció, amb l'usuari que l'ha feta i el moment exacte.
Desactivació de l'auditoria (NOAUDIT)¶
Per desactivar l'auditoria, s'utilitza l'ordre NOAUDIT amb la mateixa sintaxi que AUDIT:
NOAUDIT SESSION [BY <user>] [WHENEVER [NOT] SUCCESSFUL];
NOAUDIT <action> ON <object_type> [BY <user>] [WHENEVER [NOT] SUCCESSFUL];
NOAUDIT <operation> ON <object_name> [BY <user>] [WHENEVER [NOT] SUCCESSFUL];
Les regles d'auditoria configurades es poden consultar a la vista DBA_STMT_AUDIT_OPTS:
Auditoria de gra fi (Fine Grained Auditing)¶
El paquet DBMS_FGA permet crear polítiques d'auditoria amb condicions específiques per auditar
operacions sobre taules concretes. Aquestes polítiques poden incloure filtres basats en els valors
de les columnes, de manera que només s'auditen les operacions que compleixen certs criteris,
com ara els accessos a una taula entre les 21:00 i les 06:00 o en cap de setmana, els accessos
des d'una IP de fora de la xarxa corporativa o les consultes sobre una columna amb dades sensibles.
Documentació oficial: Auditing Specific Activities with Fine-Grained Auditing – Oracle DB
Per crear una política d'auditoria de gra fi, s'utilitza el procediment DBMS_FGA.ADD_POLICY:
DBMS_FGA.ADD_POLICY (
object_schema IN VARCHAR2,
object_name IN VARCHAR2,
policy_name IN VARCHAR2,
audit_condition IN VARCHAR2,
audit_column IN VARCHAR2,
statement_types IN VARCHAR2,
audit_trail IN VARCHAR2
);
object_schema: esquema on es troba la taula a auditar.object_name: nom de la taula a auditar.policy_name: nom de la política d'auditoria.audit_condition: condició SQL que determina quan s'ha d'auditar l'operació.audit_column: llista de columnes, separades per comes, que s'han d'auditar.statement_types: llista d'operacions a auditar (SELECT,INSERT,UPDATE,DELETE).audit_trail: on s'emmagatzemaran els registres d'auditoria (DB,OS,XML).
Documentació oficial: Creating a Fine-Grained Audit Policy – Oracle DB
Exemple: Auditoria de gra fi amb DBMS_FGA
-
Es crea una taula de prova des de l'usuari
audit_test: -
S'afig una política d'auditoria que registre totes les operacions
SELECTque accedisquen a la columnasensitive_data: -
Es comprova que la política s'ha creat correctament:
-
Es fa una consulta
SELECTsobre la taulaFGA_AUDIT_TEST: -
Es consulten els registres d'auditoria a la vista
DBA_FGA_AUDIT_TRAIL:
Les regles d'auditoria de gra fi es poden consultar a la vista DBA_AUDIT_POLICIES:
Les regles es poden eliminar amb el procediment DBMS_FGA.DROP_POLICY. A més, es poden desactivar
i reactivar amb els procediments DBMS_FGA.DISABLE_POLICY i DBMS_FGA.ENABLE_POLICY, respectivament.
Auditoria unificada¶
L'auditoria unificada permet crear polítiques d'auditoria que inclouen diverses accions
i que es poden aplicar a múltiples objectes o usuaris. D'aquesta manera, en lloc de gestionar
moltes regles AUDIT soltes, s'agrupen en una sola política amb nom.
Per crear una política d'auditoria unificada, s'utilitza l'ordre CREATE AUDIT POLICY:
CREATE AUDIT POLICY <policy_name>
ACTIONS <action_list>
[WHENEVER [NOT] SUCCESSFUL]
[ROLES <role_list>];
<policy_name>: nom de la política d'auditoria.<action_list>: llista d'accions a auditar (CREATE TABLE,DROP TABLE,SELECT ON schema.table…).[ROLES <role_list>]: (opcional) llista de rols als quals s'aplica la política.
Una vegada creada la política, cal activar-la amb l'ordre AUDIT POLICY:
[WHENEVER [NOT] SUCCESSFUL]: (opcional) indica si s'auditen només les operacions correctes o només les incorrectes.[BY USER]: (opcional) indica l'usuari sobre el qual s'aplicarà la política.
Exemple: Auditoria unificada
-
Es crea una política d'auditoria unificada que registre totes les operacions de creació i eliminació de taules:
-
S'activa la política d'auditoria per a tots els usuaris:
-
Es comproven les regles d'auditoria configurades:
-
Es connecta amb l'usuari
AUDIT_TEST: -
Es crea i s'elimina una taula per generar registres d'auditoria:
-
Es consulten els registres d'auditoria a la vista
UNIFIED_AUDIT_TRAIL:
S'observa que la política registra tant la creació com l'eliminació de la taula.
Per eliminar una política d'auditoria unificada, s'utilitza l'ordre DROP AUDIT POLICY:
Les polítiques d'auditoria unificada es poden consultar a la vista AUDIT_UNIFIED_POLICIES:
Resum: registres d'auditoria en el diccionari de dades¶
Els registres d'auditoria en Oracle DB es poden consultar a través de diverses vistes del diccionari de dades, segons el tipus d'auditoria que s'haja configurat.
AUDIT i NOAUDIT¶
| Vista | Descripció |
|---|---|
DBA_STMT_AUDIT_OPTS |
Regles d'auditoria configurades amb AUDIT i NOAUDIT. |
DBA_OBJ_AUDIT_OPTS |
Regles d'auditoria sobre objectes específics. |
DBA_AUDIT_SESSION |
Registres d'inici de sessió i tancament de sessió. |
DBA_AUDIT_OBJECT |
Registres d'operacions sobre objectes específics. |
DBA_AUDIT_TRAIL |
Registres generals d'auditoria. |
Auditoria de gra fi (Fine Grained Auditing)¶
| Vista | Descripció |
|---|---|
DBA_AUDIT_POLICIES |
Polítiques d'auditoria de gra fi configurades. |
DBA_FGA_AUDIT_TRAIL |
Registres d'auditoria de gra fi. |
Auditoria unificada¶
| Vista | Descripció |
|---|---|
AUDIT_UNIFIED_POLICIES |
Polítiques d'auditoria unificada configurades. |
UNIFIED_AUDIT_TRAIL |
Registres d'auditoria unificada |