Oracle Audit: differenze tra le versioni

Da Emigar.
Jump to navigation Jump to search
 
(15 versioni intermedie di uno stesso utente non sono mostrate)
Riga 9: Riga 9:
ALTER SYSTEM SET AUDIT_SYS_OPERATIONS=TRUE SCOPE=SPFILE;
ALTER SYSTEM SET AUDIT_SYS_OPERATIONS=TRUE SCOPE=SPFILE;
ALTER SYSTEM SET AUDIT_SYSLOG_LEVEL='SYSLOG.INFO' SCOPE=SPFILE;
ALTER SYSTEM SET AUDIT_SYSLOG_LEVEL='SYSLOG.INFO' SCOPE=SPFILE;

==Vedere cosa viene tracciato==
Per verificare quali eventi sono tracciati:

set linesize 200 pagesize 200
col user_name for a20
col proxy_name for a20
SELECT * FROM ALL_DEF_AUDIT_OPTS;
SELECT * FROM DBA_STMT_AUDIT_OPTS ORDER BY AUDIT_OPTION;
SELECT * FROM DBA_PRIV_AUDIT_OPTS ORDER BY PRIVILEGE;

Privilegi sugli oggetti soggetti a tracciatura:
col owner for a20
col object_name for a20
SELECT * FROM DBA_OBJ_AUDIT_OPTS ORDER BY OWNER,OBJECT_NAME;



==Configurare regole di tracciamento==
==Configurare regole di tracciamento==
Riga 14: Riga 30:
Tracciare chi si connette:
Tracciare chi si connette:
AUDIT SESSION BY ACCESS;
AUDIT SESSION BY ACCESS;
Tracciare le operazioni privilegiate:
Tracciare tutte le operazioni privilegiate (sconsigliato perché molto oneroso e prolisso):
AUDIT DBA BY ACCESS;
AUDIT DBA BY ACCESS;
oppure, con logica per utente:
oppure, con logica per utente:
Riga 27: Riga 43:
Attivare tracciamento solo sui privilegi distruttivi, come <code>DROP ANY</code>,<code>UPDATE ANY</code>,<code>DELETE ANY</code>.
Attivare tracciamento solo sui privilegi distruttivi, come <code>DROP ANY</code>,<code>UPDATE ANY</code>,<code>DELETE ANY</code>.


audit delete table,update table,insert table,index,procedure by <username> by access;
==Vedere cosa viene tracciato==
Per verificare quali eventi sono tracciati:


AUDIT TABLE,INDEX,PROCEDURE BY <username> BY ACCESS;
set linesize 200 pagesize 200
col user_name for a20
col proxy_name for a20
SELECT * FROM ALL_DEF_AUDIT_OPTS;
SELECT * FROM DBA_STMT_AUDIT_OPTS ORDER BY PRIVILEGE;
SELECT * FROM DBA_PRIV_AUDIT_OPTS ORDER BY PRIVILEGE;


Per avere un elenco degli statement:
Privilegi sugli oggetti soggetti a tracciatura:
create user bubba identified by bubba;
col owner for a20
audit all statements by bubba by access;
col object_name for a20
select * from dba_stmt_audit_opts where user_name='BUBBA';
SELECT * FROM DBA_OBJ_AUDIT_OPTS ORDER BY OWNER,OBJECT_NAME;
noaudit all statements by bubba;
drop user bubba cascade;


==Cancellare regole di tracciamento==
==Cancellare regole di tracciamento==
Riga 50: Riga 62:


Con questi comandi vengono cancellate alche le regole di audit di default. Per ripristinarle è necessario lanciare:
Con questi comandi vengono cancellate alche le regole di audit di default. Per ripristinarle è necessario lanciare:
@'?/rdbms/admin/secconf
@?/rdbms/admin/secconf


=Unified Audit=
=Unified Audit=
https://oracle-base.com/articles/12c/auditing-enhancements-12cr1


Può essere rediretto sul syslog solo dalle versione 18.0 in avanti. Nella 12.2 esiste, ma scrive solo nel database.
Può essere rediretto sul syslog solo dalle versione 18.0 in avanti. Nella 12.2 esiste, ma scrive solo nel database.

==abilitare unified audit==
How To Enable The New Unified Auditing In 12c ? (Doc ID 1567006.1)

SQL> SELECT VALUE FROM V$OPTION WHERE PARAMETER = 'Unified Auditing';

VALUE
----------------------------------------------------------------
FALSE

Da sistema operativo come utente oracle:

cd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk uniaud_on ioracle

SQL> SELECT VALUE FROM V$OPTION WHERE PARAMETER = 'Unified Auditing';

VALUE
----------------------------------------------------------------
TRUE

==configurazione minima verso rsyslog==
alter session set unified_audit_systemlog='SYSLOG.INFO' scope=spfile sid='*';
alter session set unified_audit_common_systemlog='SYSLOG.INFO' scope=spfile sid='*';

==prime regole di audit==
https://www.oracle.com/it/a/tech/docs/dbsec/unified-audit-best-practice-guidelines.pdf

CREATE AUDIT POLICY table_pol PRIVILEGES CREATE ANY TABLE, DROP ANY TABLE;
SELECT *
FROM audit_unified_policies
WHERE policy_name = 'TABLE_POL';

AUDIT POLICY table_pol;
SELECT policy_name, enabled_option, entity_name
FROM audit_unified_enabled_policies
WHERE policy_name = 'TABLE_POL';


[[Categoria:Oracle]]
[[Categoria:Oracle]]

Versione attuale delle 13:35, 3 nov 2022

Audit Classico

Da manualistica: "Oracle recommends that you include the BY ACCESS clause for all AUDIT statements, which results in a more detailed audit record."

Generalmente, tutto ciò che per essere fatto necessita di un privilegio, può essere tracciato. è conveniente redirigere tutti gli eventi di audit nel syslog:

ALTER SYSTEM SET AUDIT_TRAIL='OS' SCOPE=SPFILE;
ALTER SYSTEM SET AUDIT_SYS_OPERATIONS=TRUE SCOPE=SPFILE;
ALTER SYSTEM SET AUDIT_SYSLOG_LEVEL='SYSLOG.INFO' SCOPE=SPFILE;

Vedere cosa viene tracciato

Per verificare quali eventi sono tracciati:

set linesize 200 pagesize 200
col user_name for a20
col proxy_name for a20
SELECT * FROM ALL_DEF_AUDIT_OPTS;
SELECT * FROM DBA_STMT_AUDIT_OPTS ORDER BY AUDIT_OPTION;
SELECT * FROM DBA_PRIV_AUDIT_OPTS ORDER BY PRIVILEGE;

Privilegi sugli oggetti soggetti a tracciatura:

col owner for a20
col object_name for a20
SELECT * FROM DBA_OBJ_AUDIT_OPTS ORDER BY OWNER,OBJECT_NAME;


Configurare regole di tracciamento

Impostazioni minime (12.2) Tracciare chi si connette:

AUDIT SESSION BY ACCESS;

Tracciare tutte le operazioni privilegiate (sconsigliato perché molto oneroso e prolisso):

AUDIT DBA BY ACCESS;

oppure, con logica per utente:

AUDIT ALL PRIVILEGES BY <username> BY ACCESS;

tracciamento di tutto ciò che fa un utente:

AUDIT ALL STATEMENTS BY <username> BY ACCESS;

Con logica più granulare: Elencare tutti i privilegi:

select distinct  privilege from dba_sys_privs order by 1;

Attivare tracciamento solo sui privilegi distruttivi, come DROP ANY,UPDATE ANY,DELETE ANY.

audit delete table,update table,insert table,index,procedure by <username> by access;
AUDIT TABLE,INDEX,PROCEDURE BY <username> BY ACCESS;

Per avere un elenco degli statement:

create user bubba identified by bubba;
audit all statements by bubba by access;
select * from dba_stmt_audit_opts where user_name='BUBBA';
noaudit all statements by bubba;
drop user bubba cascade;

Cancellare regole di tracciamento

per disattivare auditing:

NOAUDIT ALL;
NOAUTID ALL STATEMENTS;
NOAUDIT ALL PRIVILEGES;

Con questi comandi vengono cancellate alche le regole di audit di default. Per ripristinarle è necessario lanciare:

@?/rdbms/admin/secconf

Unified Audit

https://oracle-base.com/articles/12c/auditing-enhancements-12cr1

Può essere rediretto sul syslog solo dalle versione 18.0 in avanti. Nella 12.2 esiste, ma scrive solo nel database.

abilitare unified audit

How To Enable The New Unified Auditing In 12c ? (Doc ID 1567006.1)

SQL> SELECT VALUE FROM V$OPTION WHERE PARAMETER = 'Unified Auditing';
VALUE
----------------------------------------------------------------
FALSE

Da sistema operativo come utente oracle:

cd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk uniaud_on ioracle
SQL> SELECT VALUE FROM V$OPTION WHERE PARAMETER = 'Unified Auditing';
VALUE
----------------------------------------------------------------
TRUE

configurazione minima verso rsyslog

alter session set unified_audit_systemlog='SYSLOG.INFO' scope=spfile sid='*';
alter session set unified_audit_common_systemlog='SYSLOG.INFO' scope=spfile sid='*';

prime regole di audit

https://www.oracle.com/it/a/tech/docs/dbsec/unified-audit-best-practice-guidelines.pdf

CREATE AUDIT POLICY table_pol PRIVILEGES CREATE ANY TABLE, DROP ANY TABLE;
SELECT *
 FROM audit_unified_policies
 WHERE policy_name = 'TABLE_POL';
AUDIT POLICY table_pol;
SELECT policy_name, enabled_option, entity_name
 FROM audit_unified_enabled_policies
 WHERE policy_name = 'TABLE_POL';