GaussDB-统一审计机制
GaussDB-统一审计机制
可获得性
本特性自V500R001C00版本开始引入。
特性简介
审计机制是行之有效的安全管理方案,可有效解决攻击者抵赖,审计的范围越大,可监控的行为就越多,而产生的审计日志就越多,影响实际审计效率。统一审计机制是一种通过定制化制定审计策略而实现高效安全审计管理的一种技术。当管理员定义审计对象和审计行为后,用户执行的任务如果关联到对应的审计策略,则生成对应的审计行为,并记录审计日志。定制化审计策略可涵盖常见的用户管理活动,DDL和DML行为,满足日常审计诉求。
客户价值
审计是日常安全管理中必不可少的行为,当使用传统审计机制审计某种行为时,如SELECT,会导致产生大量的审计日志,进而增加整个系统的I/O,影响系统的性能;另一方面,大量的审计日志会影响管理员的审计效率。统一审计机制使得客户可以定制化生成审计日志的策略,如只审计数据库账户A查询某个表table的行为。通过定制化审计,可以大大减少生成审计日志的数量,从而在保障审计行为的同时降低对系统性能的影响。而定制化审计策略可以提升管理员的审计效率。
特性描述
统一审计机制基于资源标签进行审计行为定制化,且将当前所支持的审计行为划分为access类和privileges类。一个完整的审计策略创建的SQL语法如下所示:
CREATE RESOURCE LABEL auditlabel add table(table_for_audit1, table_for_audit2);
CREATE AUDIT POLICY audit_select_policy ACCESS SELECT ON LABEL(auditlabel) FILTER ON ROLES(usera);
CREATE AUDIT POLICY audit_admin_policy PRIVILEGES ALTER, DROP ON LABEL(auditlabel) FILTER ON IP(local);
其中,auditlabel为本轮计划审计的资源标签,该资源标签中包含了两个表对象;audit_select_policy定义了用户usera对auditlabel对象的SELECT行为的审计策略,不区分访问源;audit_admin_policy定义了从本地对auditlabel对象进行ALTER和DROP操作行为的审计策略,不区分执行用户;当不指定ACCESS和PRIVILEGES的具体行为时,表示审计针对某一资源标签的所有支持的DDL和DML行为。当不指定具体的审计对象时,表示审计针对所有对象的操作行为。统一审计策略的增删改也会记录在统一审计日志中。
当前,统一审计支持的审计行为包括:
SQL类型 |
支持操作和对象类型 |
DDL |
操作:ALL、ALTER、ANALYZE/VACUUM、COMMENT、CREATE、DROP、GRANT、REVOKE、SET、SHOW 对象:DATABASE、SCHEMA、FUNCTION/PROCEDURE、TRIGGER、TABLE、SEQUENCE、FOREIGN_SERVER、FOREIGN_TABLE、TABLESPACE、ROLE/USER/GROUP、INDEX、VIEW、DATA_SOURCE、WEAK PASSWORD DICTIONARY、AUDIT POLICY、MASKING POLICY、RESOURCE LABEL、MATERIALIZED VIEW/INCREMENTAL MATERIALIZED VIEW 注:对不支持的对象类型统一审计日记均标记为UNKNOWN |
DML |
操作:ALL、COPY、DEALLOCATE、DELETE_P、EXECUTE、REINDEX、INSERT、PREPARE、SELECT、TRUNCATE、UPDATE |
ALL指的是上述DDL或DML中支持的所有对数据库的操作。当形式为{ DDL | ALL }时,ALL指所有DDL操作;当形式为{ DML | ALL }时,ALL指所有DML操作。
其中EXECUTE是指执行预备语句的EXECUTE操作,并非存储过程中动态调用匿名块EXECUTE IMMEDIATE…USING语句。
特性增强
无。
特性约束
- 统一审计策略需要由具备POLADMIN或SYSADMIN属性的用户或初始用户创建,普通用户无访问安全策略系统表和系统视图的权限。
- 统一审计策略语法要么针对DDL行为,要么针对DML语法行为,同一个审计策略不可同时包含DDL和DML行为;统一审计策略目前支持最多设置98个。
- 统一审计监控用户通过客户端在CN节点上执行的SQL语句,而不会记录数据库内部SQL语句。
- 同一个审计策略下,相同资源标签可以绑定不同的审计行为,相同行为可以绑定不同的资源标签,操作"ALL"类型包括DDL或者DML下支持的所有操作。
- 同一个资源标签可以关联不同的统一审计策略,统一审计会按照SQL语句匹配的策略依次打印审计信息。
- 统一审计策略的审计日志单独记录,暂不提供可视化查询接口,整个日志依赖于操作系统自带rsyslog服务,通过配置完成日志归档。
- 。
- FILTER中的APP项建议仅在同一信任域内使用,由于客户端不可避免的可能出现伪造名称的情况,该选项使用时需要与客户端联合形成一套安全机制,减少误用风险。一般情况下不建议使用,使用时需要注意客户端仿冒的风险。
- FILTER中的IP地址以ipv4为例支持如下格式:
ip地址格式
示例
单ip
127.0.0.1
掩码表示ip
127.0.0.1|255.255.255.0
cidr表示ip
127.0.0.1/24
ip区间
127.0.0.1-127.0.0.5
- 不支持通过gs_dump导出统一审计策略。系统管理员或安全策略管理员可以访问GS_AUDITING_POLICY、GS_AUDITING_POLICY_ACCESS、GS_AUDITING_POLICY_PRIVILEGES、GS_AUDITING_POLICY_FILTERS系统表查询已创建的统一审计策略。
- 由于GROUP是ROLE的别名,当统一审计的对象为GROUP时,统一审计日志中会将相应操作对象统一记录为ROLE类型。
- 统一审计日志中不区分存储过程和函数,当数据库对象是存储过程PROCEDURE时,日志中也会将其记录为FUNCTION类型。
- 统一审计策略中的ANALYZE对应VACUUM和ANALYZE两种SQL操作,审计日志中VACUUM操作也会被记录为ANALYZE。
- 由于语法解析机制,ALTER INDEX ... REBUILD语句会被审计为REINDEX语句。GRANT ALL PRIVILEGES TO user、REVOKE ALL PRIVILEGES FROM user语句会被审计为ALTER ROLE语句。
- WITH res1 AS (UPDATE ...) INSERT INTO ... VALUES (SELECT * from res1, ...)语句中不审计UPDATE语句,只审计主语句中的INSERT操作。
- 对于提升子查询语句不记录审计日志,例如INSERT INTO ... SELECT * FROM ...语句中只记录INSERT操作,不记录SELECT操作。
- 某些执行失败的DML语句不审计,例如唯一键约束导致执行失败、对只读子查询进行DML操作执行失败等。
使用统一审计功能时,强烈建议明确需要被审计的对象、需要审计的操作以及客户端、用户信息,根据场景创建准确的审计策略。对不必要的对象和操作进行审计会产生大量的审计日志引起数据库性能劣化、磁盘空间膨胀,也会影响管理员查询审计日志的效率。