ORACLE_OCP之实施Oracle数据库审计

ORACLE_OCP之实施Oracle数据库审计

  • 文章目标:
    • 描述DBA的安全性和审计职责
    • 启用统一审计
    • 创建统一审计策略
    • 维护审计记录

一、数据库安全

  • 一个安全的系统可确保其中包含的数据的机密性。 安全性主要有以下几个方面:
    • 限制对数据和服务的访问
    • 验证用户
    • 监控可疑活动

二、监视的合规性

  • 监视和审计是安全过程钟不可缺少的一部分.
  • 请复查下列各项:
    • Mandatory auditing – 强制审计
    • Standard database auditing – 标准数据库审计
    • Value-based auditing – 基于值的审计
    • Fine-grained auditing (FGA) – 细粒度审计

三、需要审计的活动类型

  • 您可以在以下活动中进行审计:
    • User accounts, roles, and privileges –用户账号操作 角色和权限
    • Object actions – 对象操作
    • Application context values – 应用程序上下文的值
    • Oracle Data Pump – ORACLE数据泵
    • Oracle Database Real Application Security – RAC安全
    • Oracle Database Vault – 数据库加密系统
    • Oracle Label Security – OACLE标签安全
    • Oracle Recovery Manager – RMAN恢复管理
    • Oracle SQL*Loader direct path events – SQLLOADER直接路径事件
    • 。。。。。
SQL> show parameter audit;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest                      string      /u01/app/oracle/admin/orcl/adu
                                                 mp
audit_sys_operations                 boolean     TRUE
audit_syslog_level                   string
audit_trail                          string      DB
unified_audit_sga_queue_size         integer     1048576

四、强制审计

  • 强制审计会审计以下内容:
    • CREATE/ALTER/DROP AUDIT POLICY
    • AUDIT/NOAUDIT
    • EXECUTE of:
      • DBMS_FGA
      • DBMS_AUDIT_MGMT
    • ALTER TABLE against AUDSYS audit trail table
    • Top-level statements by administrative users (SYS, SYSDBA, SYSOPER, SYSASM, SYSBACKUP, SYSDG, and SYSKM) until the database opens

五、理解有关于审计的实施

  • 在创建新的Oracle Database 12c数据库时,默认情况下使用混合审计模式.
  • 混合审计模式可以使用在:
    • Oracle Database 12c之前的审计功能
    • Oracle Database 12c之后的默认为统一审核功能
  • Oracle的建议是使用统一审核.
  • 查询V $ OPTION以确定数据库是否已是统一审核:

    SELECT value FROM v$option WHERE parameter = ‘Unified Auditing’;

六、管理审计操作所需的角色

  • 必须授予用户以下角色之一才能执行审计:
    • AUDIT_ADMIN使用户能够:
      • 创建统一且细粒度的审计策略
      • 执行AUDIT(审计)和NOAUDIT (非审计)SQL语句
      • 查看审计数据
      • 维护和管理审计跟踪(AUDSYS模式中的表)
    • AUDIT_VIEWER这个权限可以让用户
      • 查看和分析审计数据

七、数据库审计流程

在这里插入图片描述

八、理解审计架构

在这里插入图片描述

九、开启统一审计( unified auditing )(本例中具体的库和监听启停过程参照公司流程要求)

  • 在SQLPLUS找那个关闭数据库:

    SQL> SHUTDOWN IMMEDIATE

  • 关闭监听:

    $ lsnrctl stop

  • 在操作系统的命令提示符下(LINUX),启用统一审核可执行文件:

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

  • 重启监听:

    $ lsnrctl start

  • 使用SQLPLUS打开数据库:

    SQL> STARTUP

十、配置审计

MethodDescription
统一审计策略将审计设置分入到策略组中
默认统一审计策略Three default policies:ORA_SECURECONFIG、ORA_DATABASE_PARAMETER_AUDIT、ORA_ACCOUNT_MGMT_AUDIT
细粒度的审计策略定义审计触发时必须满足的特定条件
  • Oracle数据库包括三个预定义的统一审计策略,其中包括常用的安全审计设置:
    • ORA_SECURECONFIG:包含与Oracle Database 11g相同的默认审计设置。 默认情况下,此策略为统一审核和混合模式审核环境启用。 有关设置的完整列表,请参考《 Oracle数据库安全指南12c》。
    • ORA_DATABASE_PARAMETER_AUDIT:包含用于设置参数(ALTER DATABASE,ALTER SYSTEM和CREATE SPFILE)的常用Oracle数据库命令的审计设置
    • ORA_ACCOUNT_MGMT_AUDIT:包含常用用户帐户和特权命令的审核设置(CREATE USER,ALTER USER,DROP USER,CREATE ROLE,DROP ROLE,ALTER ROLE,SET ROLE,GRANT和REVOKE)

十一、创建统一审计策略

  • 使用CREATE AUDIT POLICY 语句:

    CREATE AUDIT POLICY select_emp_pol –审计名
    ACTIONS select on hr.employees -审计动作

  • 创建审计策略:系统范围的审计选项

    • 对系统权限进行审计:

      CREATE AUDIT POLICY audit_syspriv_pol1
      PRIVILEGES SELECT ANY TABLE, CREATE LIBRARY

    • 对ALTER TRIGGER操作进行审计:

      CREATE AUDIT POLICY audit_actions_pol2
      ACTIONS AUDIT, ALTER TRIGGER

    • 对角色进行审计:

      CREATE AUDIT POLICY audit_role_pol3
      ROLES mgr_role

    • 对系统权限 相应操作和角色进行审计:

      CREATE AUDIT POLICY audit_mixed_pol4
      PRIVILEGES DROP ANY TABLE
      ACTIONS CREATE TABLE, DROP TABLE, TRUNCATE TABLE
      ROLES emp_role

  • 创建审计策略:特定对象审计选项

    • 根据特定的对象选项(对象权限)创建审计策略.

    CREATE AUDIT POLICY audit_objpriv_pol5
    ACTIONS SELECT, UPDATE, LOCK ON hr.employees

    CREATE AUDIT POLICY audit_objpriv_pol6
    ACTIONS ALL

    CREATE AUDIT POLICY audit_objpriv_pol7
    ACTIONS EXECUTE, GRANT ON hr.raise_salary_proc

  • 创建审计策略:指定条件

    • 条件和评估PER SESSION(每个会话)

      CREATE AUDIT POLICY audit_mixed_pol5
      ACTIONS RENAME ON hr.employees,ALTER ON hr.jobs,
      WHEN ‘SYS_CONTEXT (’‘USERENV’’, ‘‘SESSION_USER’’)=’‘JIM’’’
      EVALUATE PER SESSION

    • 条件和评估PER STATEMENT(每个语句)

      CREATE AUDIT POLICY audit_objpriv_pol6
      ACTIONS ALTER ON OE.ORDERS
      WHEN ‘SYS_CONTEXT(’‘USERENV’’,’‘CLIENT_IDENTIFIER’’)=’‘OE’’’
      EVALUATE PER STATEMENT

    • 条件和评估PER INSTANCE(每个实例)

      CREATE AUDIT POLICY audit_objpriv_pol7
      ROLES dba
      WHEN SYS_CONTEXT(’‘USERENV’’,’‘INSTANCE_NAME’’)=’‘sales’’’
      EVALUATE PER INSTANCE

十二、启用和禁用审计策略

  • 启用审计策略:
    • 适用于所有用户.

      SQL> AUDIT POLICY audit_syspriv_pol1;

    • 仅适用于某些用户.

      SQL> AUDIT POLICY audit_pol2 BY scott, oe;
      SQL> AUDIT POLICY audit_pol3 BY sys;

    • 排除某些用户.

      SQL> AUDIT POLICY audit_pol4 EXCEPT jim, george;

    • 根据失败或成功操作定义审计记录.

      SQL> AUDIT POLICY audit_syspriv_pol1 WHENEVER SUCCESSFUL ;
      SQL> AUDIT POLICY audit_objpriv_pol2 WHENEVER NOT SUCCESSFUL ;
      SQL> AUDIT POLICY auditpol5 BY joe WHENEVER SUCCESSFUL ;

注意:通过使用NOAUDIT命令禁用审计策略。

十三、更改统一审核策略

  • 使用ALTER AUDIT POLICY语句:

    ALTER AUDIT POLICY select_emp_pol
    ADD ACTIONS select on hr.job_history

  • 使用EMCC:
    在这里插入图片描述

十四、查看审计策略信息

SQL> SELECT policy_name, audit_option, condition_eval_opt FROM audit_unified_policies;

SQL> SELECT policy_name, enabled_opt, user_name, success, failure FROM audit_unified_enabled_policies;

十五、设置审计跟踪记录的写入模式

在这里插入图片描述

  • 立即写入模式:立即写入审核记录。

    SQL> EXEC DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_PROPERTY(-
    DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,-
    DBMS_AUDIT_MGMT.AUDIT_TRAIL_WRITE_MODE,-
    DBMS_AUDIT_MGMT.AUDIT_TRAIL_IMMEDIATE_WRITE);

  • 排队写入模式:SGA队列的内容定期写入磁盘。 这是默认模式。

    SQL> EXEC DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_PROPERTY(-
    DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,-
    DBMS_AUDIT_MGMT.AUDIT_TRAIL_WRITE_MODE,-
    DBMS_AUDIT_MGMT.AUDIT_TRAIL_QUEUED_WRITE);

十六、Value-Based Auditing(基于值的审计)

在这里插入图片描述

  • 典型基于值的审计触发器的示例:
CREATE OR REPLACE TRIGGER system.hrsalary_audit
    AFTER UPDATE OF salary
    ON hr.employees 
    REFERENCING NEW AS NEW OLD AS OLD
    FOR EACH ROW
BEGIN
  IF :old.salary != :new.salary THEN
    INSERT INTO system.audit_employees
    VALUES (sys_context('userenv','os_user'), sysdate, 
    sys_context('userenv','ip_address'),
    :new.employee_id ||
		    ' salary changed from '||:old.salary|| 
		    ' to '||:new.salary);
  END IF; 
END;
/

十七、Fine-Grained Auditing(细粒度审计 FGA)

  • 根据内容监视数据访问
  • 审核SELECT,INSERT,UPDATE,DELETE和MERGE
  • 可以链接到表或视图中的一个或多个列
  • 可以执行一个程序
  • 通过DBMS_FGA软件包进行管理
    在这里插入图片描述

十八、FGA Policy(审计策略)

在这里插入图片描述

十九、审计DML操作:注意事项

  • 如果满足FGA谓词并引用了相关列,则对记录进行审计。
  • 无论指定了什么列,都将审计DELETE语句。
  • MERGE语句使用基础的INSERT,UPDATE和DELETE生成的语句进行审计。
    在这里插入图片描述

二十、FGA Guidelines(细粒度)

  • 要审计所有行,请使用审计条件。
  • 要审计所有列,请使用审计列。
  • 策略名称必须唯一。
  • 创建策略时,已审计的表或视图必须已经存在。
  • 如果审计条件语法无效,则在访问审计对象时会引发ORA-28112错误。
  • 如果表中不存在已审计的列,则不审计任何行。
  • 如果事件处理程序不存在,则不会返回任何错误,并且仍会创建审计记录。

二十一、归档和清除审计记录

  • 定期归档并清除审计记录,以防止其过大.

  • 创建审计归档:

    • 将审计跟踪记录复制到数据库表
    • 使用Oracle Audit Vault
  • 清除审计日志:

    • 通过使用DBMS_AUDIT_MGMT.CREATE_PURGE_JOB PL / SQL过程,创建计划并在指定时间运行的清除作业
    • 使用DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL PL / SQL过程手动进行
  • 安排自动清除作业:

    DBMS_AUDIT_MGMT.CREATE_PURGE_JOB
    (AUDIT_TRAIL_TYPE=> DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, AUDIT_TRAIL_PURGE_INTERVAL => 12,
    AUDIT_TRAIL_PURGE_NAME => ‘Audit_Trail_PJ’,
    USE_LAST_ARCH_TIMESTAMP => TRUE, CONTAINER => DBMS_AUDIT_MGMT.CONTAINER_CURRENT);

  • 手动清除审计记录

    DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(
    AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值