Auditoría Granular dbms_fga.add_policy

Auditoría Granular
Fine Grained Auditing (FGA), desde la 9i, es una auditoria basada en políticas. A diferencia de la funcionalidad estándar de auditoría con el comando AUDIT. FGA permite especificar las condiciones necesarias para que un registro de auditoría se genere:
Las políticas FGA están vinculadas al objeto (tabla, vista) utilizando el paquete ‘dbms_fga’. Te permite crear cualquier condición deseada, por ejemplo: Auditoría sólo cuando las siguientes condiciones se cumplan:

  • Se accede a una tabla entre las 6 PM y 6 AM, los sábados y domingos.
  • Se utiliza una dirección IP desde fuera de la red corporativa.
  • Una columna especificada ha sido seleccionado o actualizada.
  • Un valor determinado para esta columna se ha utilizado.

FGA admite todas las combinaciones de ‘select’, ‘insert’, ‘update’, ‘delete’, condiciones ‘where’ o selección de una o varias columnas en particular. Solo se generarán condiciones de auditoria cuando se cumplan estas condiciones, todas o alguna de ellas, según se desee.

 

 

Activar Auditoría Granular, para controlar consultas en una tabla sobre salary y comision_pct.

1. Dar permisos al usuario que va a utilizar la tabla empleados con auditoria.

 

SQL> @permi.sql
SQL> GRANT select ON hr.employees TO sh;
Grant succeeded.
2. Crear FGA policy, columnas y condiciones

 

Es necesario GRANT EXECUTE on DBMS_FGA TO SH;

audit_column lists cuando tenga mas de una columna, usamos audit_column_opts para especificar cuando la auditoria será ejecutada. Por ejemplo: Si no se especifica una columna relevante, entonces la auditoría se aplica a todas las columnas.

 

audit_column_opts   => DBMS_FGA.ANY_COLUMNS,  //Cualquiera de las columnas referencias
audit_column_opts   => DBMS_FGA.ALL_COLUMNS,   //Cuando sean referenciadas todas

 

//Para borrar la auditoria truncar la tabla fga_log$
SQL> connect sh/sh
Connected.
SQL> BEGIN
  2  DBMS_FGA.DROP_POLICY(
  3    object_schema      => 'HR',
  4    object_name        => 'EMPLOYEES',
  5    policy_name        => 'ck_au_employees');
  6  END;
  7  /
PL/SQL procedure successfully completed.
//Crear la Auditoria para insert, update, select, delete cuando el filtro sea el departamento 50 y tenga comisión y quieran verse el salario y la comisión y sean referenciadas todas 
SQL> BEGIN
  2     dbms_fga.add_policy(
  3     object_schema=>'HR',
  4     object_name=> 'EMPLOYEES',
  5     policy_name=> 'chk_hr_employees',
  6   audit_condition  => 'DEPARTMENT_ID = 50 and COMMISSION_PCT > 0',
  7     audit_column     => 'SALARY,COMMISSION_PCT',
  8     enable => TRUE,
  9     statement_types => 'INSERT, UPDATE, SELECT, DELETE',
 10     audit_trail => DBMS_FGA.DB,
 11     audit_column_opts => dbms_fga.all_columns);
 12  END;
 13  /
PL/SQL procedure successfully completed

3. Ver la Auditoria

 

SQL> @ver_auditoria
SQL> set linesize 121
SQL> column timestamp format a14
SQL> column SQL_TEXT format a9
SQL> column object_schema format a4
SQL> column object_name format a7
SQL> column sql_bind format a10
SQL> select to_char(timestamp,'YYYYMMDDHH24MI') as timestamp,
  2  sql_text,  object_schema, object_name, policy_name, scn, sql_bind
  3  from dba_fga_audit_trail;

 

  • Deshabilitar una política de Auditoría Granular

 

DBMS_FGA.DISABLE_POLICY(
  object_schema        => 'HR',
  object_name          => 'EMPLOYEES',
  policy_name          => 'chk_hr_employees');
/

 

  • Habilitar una política de Auditoria Granular

 

DBMS_FGA.ENABLE_POLICY(
  object_schema        => 'HR',
  object_name          => 'EMPLOYEES',
  policy_name          => 'chk_hr_employees',
  enable               => TRUE);

 

 

 

 

, , ,

Post navigation

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Follow Me