资讯专栏INFORMATION COLUMN

FGA细粒度审计

IT那活儿 / 881人阅读
FGA细粒度审计

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!



01


ORACLE的标准审计默认级别是DB,这个级别是不会记录sql语句的,如果需要记录sql语句,则需要将audit_trail参数设置为audit_trail=db,extend。
AUDIT_TRAIL = { none | os | db | db,extended | xml | xml,extended }

查看当前数据库审计:

SYS@hfdr>show parameter audit_trail

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
audit_trail string DB

可是更改audit_trail参数需要重启数据库,就可以使用细粒度审计(FGA:Fine Grained Auditing)来进行实现。


02


细粒度审计(FGA:Fine Grained Auditing)实现特定行和列的自定义审计。
2.1 创建细粒度审计的语法
DBMS_FGA.ADD_POLICY(
object_schema IN VARCHAR2 DEFAULT NULL
object_name IN VARCHAR2,
policy_name IN VARCHAR2,
audit_condition IN VARCHAR2 DEFAULT NULL,
audit_column IN VARCHAR2 DEFAULT NULL
handler_schema IN VARCHAR2 DEFAULT NULL,
handler_module IN VARCHAR2 DEFAULT NULL,
enable IN BOOLEAN DEFAULT TRUE,
statement IN SELECT,
audit_trail IN BINARY_INTEGER DEFAULT NULL
audit_column_opts IN BINARY_INTEGER DEFAULT ANY_COLUMNS,
policy_owner IN VARCHAR2 DEFAULT NULL);
2.2 重点参数介绍
  • object_schema:指定要审计的对象的模式。(如果NULL,则假定当前登录用户。)
  • object_name:指定要审计的对象的名称。
  • policy_name:指定要创建的策略的名称。确保此名称是唯一的。
  • audit_condition:审计的相关条件,如果为null或未指定,则对表执行的任何审计都会被记录。
  • audit_column:指定要审核的一列或多列,包括隐藏列。如果设置为NULL或省略。
  • Enable:使用 true 或 false 启用或禁用策略。
  • statement_types:指定要审计的 SQL 语句--INSERT、UPDATE、DELETE或SELECT。
2.3 举例
BEGIN
DBMS_FGA.ADD_POLICY(
object_schema      => HR,
object_name        => EMPLOYEES,
policy_name        => chk_hr_employees,
audit_column => SALARY,
enable             =>  TRUE,
statement_types    => INSERT, UPDATE, SELECT, DELETE);
END;
/


03

3.1 使用FGA细粒度审计
ZHANGYUN@hfdr>select * from zy;
ID NAME ADDR
---------- -------------------- --------------------
1 zhangyu6 hefei
2 zhangyu4 hefei
3 zhangyu4444 hefei
4 zhangyu3 hefei
5 zhangyu2 hefei
6 zhangyu1 hefei
3.2 对此表创建细粒度审计
BEGIN
DBMS_FGA.ADD_POLICY(
object_schema      => ZHANGYUN,
object_name        => ZY,
policy_name        => chk_zhangyun_zy,
audit_column       => name,
enable             =>  TRUE,
statement_types    => INSERT, UPDATE, SELECT, DELETE);
END;
/

04


创建完之后验证创建是否成功

ZHANGYUN@hfdr>select policy_name from dba_audit_policies;

POLICY_NAME
------------------------------
CHK_ZHANGYUN_ZY


05


查看审计是否有效

5.1 查看当前审计内容(此处现在查询为空)
ZHANGYUN@hfdr>select sql_text from dba_fga_audit_trail;
5.2 各种查询进行测试
ZHANGYUN@hfdr>select * from zy where name=zhangyu1;
ID NAME ADDR
---------- -------------------- --------------------
6 zhangyu1 hefei
ZHANGYUN@hfdr>select * from zy;
ID NAME ADDR
---------- -------------------- --------------------
1 zhangyu6 hefei
2 zhangyu4 hefei
3 zhangyu4444 hefei
4 zhangyu3 hefei
5 zhangyu2 hefei
6 zhangyu1 hefei
ZHANGYUN@hfdr>select id from zy;
ID
----------
1
2
3
4
5
6
ZHANGYUN@hfdr>select id from zy where name=zhangyu1;
ID
----------
6
5.3 查询审计的信息
ZHANGYUN@hfdr>select sql_text from dba_fga_audit_trail;
SQL_TEXT
--------------------------------------------------------------------------------
select * from zy where name=zhangyu1
select * from zy
select id from zy where name=zhangyu1
可以发现只要涉及到name列的查询语句都被记录了下来,配置成功


06


删除细粒度审计
6.1 语法
DBMS_FGA.DROP_POLICY(
object_schema VARCHAR2,
object_name VARCHAR2,
policy_name IVARCHAR2);

6.2 下面我们来删除已经创建的FGA审计

BEGIN
DBMS_FGA.DROP_POLICY(
object_schema => zhangyun,
object_name => zy,
policy_name => chk_zhangyun_zy);
END;
/
6.3 验证
select policy_name from dba_audit_policies;
发现已经没有我们创建的审计了。
ZHANGYUN@hfdr>select sql_text from dba_fga_audit_trail;

SQL_TEXT
--------------------------------------------------------------------------------
select * from zy where name=zhangyu1
select * from zy
select id from zy where name=zhangyu1
即使删除了创建的FGA审计策略,已经记录下的语句不会删除。


07


常用视图
  • SYS.FGA_LOG$:基表。如果audit_trail参数包含DB,审计记录会被记录在FGA_LOG$表中。
  • V$XML_AUDIT_TRAIL:如果audit_trail参数包含XML,审计记录会记录在AUDIT_FILE_DEST初始化参数指定的目的地下的XML文件中,Oracle会读取这些XML文件,生成V$XML_AUDIT_TRAIL动态性能视图,方便DBA查看审计详细信息。
  • DBA_AUDIT_POLICIES:详细记录了审计配置的策略信息。
  • DBA_FGA_AUDIT_TRAIL:查看到审计的SQL语句和绑定变量。
  • DBA_COMMON_AUDIT_TRAIL:包含V$XML_AUDIT_TRAIL动态性能视图的内容,是标准和细粒度审计记录。


END




本文作者:章 贇(上海新炬王翦团队)

本文来源:“IT那活儿”公众号

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129434.html

相关文章

  • 如何成为云中硬核“牧羊人”?云堡垒机服务高效运维,让云主机不再成为落单的小羊!

    摘要:如何成为云中硬核牧羊人云堡垒机服务高效运维,让云主机不再成为落单的小羊企业运维场景难点,自检你中招了哪些企业运维账号众多企业运维的服务器数量众多,而维护人员数量有限,一个运维人员维护多台主机多个系统的现象普遍存在。 如何成为云中硬核牧羊人?云堡垒机服务高效运维,让云主机不再成为落单的小羊! 企业运维场景难点,自检你中招了哪些?• 企业运维账号众多企业运维的服务器数量众多,而维护人...

    zeyu 评论0 收藏0
  • 开源分布式中间件 DBLE Server.xml 配置解析

    摘要:往期精选社区投稿和跨分片查询结果不一致案例分析自定义拆分算法配置解析使用指南开源分布式中间件快速入门指南配置解析社区活动如何获取全国场主题大会免费入场券 DBLE是基于开源项目MyCat发展的企业级开源分布式中间件,适用于高并发及TB级海量数据处理场景;江湖人送外号 MyCat Plus;其简单稳定,持续维护,良好的社区环境和广大的群众基础使DBLE得到了社区的大力支持。 DBLE项目...

    Soarkey 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<