审计 本页介绍天翼云TeleDB数据库中审计。 数据库安全审计是企业级数据库必须提供的一个基础能力,有助于事后对访问合规性进行追溯。结合业界通用的做法,TeleDB从多个维度来提供全方位的审计能力,同时TeleDB审计通过旁路检测方式,对数据库运行效率的影响极小。 TeleDB审计主要包括粗粒度审计(audit)和细粒度审计(fga)。 粗粒度审计日志主要存储在cn的audit.log:主要针对语句级别、用户级别、对象级别,对象操作级别,主要在sql语法解析层面进行捕捉。 细粒度粒度审计日志存储在dn的audit.fga:主要是针对某个表的列属性、列的值进行审计,在sql执行器进行捕捉。 说明 两套审计规则都依赖auditadmin的审计管理员用户。 审计管理员auditadmin、安全管理员mlsadmin、数据库管理员三权分立,审计用户命名必须以audit开头。 audit和fga使用兼容:相互独立,可只用audit;可只用fga;可用audit和fga。 粗粒度audit操作步骤: 以auditadmin用户进行连接,执行审计规则audit all,会将后续的语句审计记录在$DATADIR/pglog/audit/audit.log $ ./psql h 127.0.0.1 p11111 d postgres W U auditadmin Password for user auditadmin: psql (PostgreSQL 10.0 TeleDBX V6) Type "help" for help. postgres> audit all; WARNING: AuditDefine Rcv: audit all; WARNING: AuditDefine Snd: AUDIT ALL ;AUDIT 细粒度fga操作步骤: 在每1个cn和dn都会开启1个audit logger process和1个后台进程bgworker:audit fga worker tangyujie是初始化的超级用户 $ ./psql h 127.0.0.1 p11111 d postgres W U tangyujie 步骤1: 创建插件&查看参数 create extension pgfga;show enablefga; 1.创建用户和数据库CREATE USER auditfgauser WITH SUPERUSER CREATEDB LOGIN ENCRYPTED PASSWORD 'auditfgauser';CREATE DATABASE auditfgadatabase; 2切换到auditfgadatabase数据库 c auditfgadatabase auditfgauser;create extension pgfga; 3.切换到auditfgauser用户,建表插入数据 c auditfgadatabase auditfgausercreate table foo(idx bigint, str text);insert into foo values(1, 'a'); 3.3 验证insert into foo values(2, 'b');insert into foo values(3, 'c');insert into foo values(4, 'd');select from foo; 步骤2: 制定审计规则 4.切换到 auditadmin审计管理员用户 c auditfgadatabase auditadmin 4.1 增加审计规则addpolicy(指定模式、表名、规则名, 列名、审计条件,模式,存储过程、是否开启审计,语句类型)addpolicy(objectschema,objectname,policyname,auditcolumns,auditcondition,handlerschema,handlermodule,auditenable,statementtypes,auditcolumnopts),其中auditenable必须为true才能生效,默认为true。select addpolicy(objectschema:'public', objectname:'foo',auditcolumns:'idx',policyname:'poli', auditcondition:'idx > 1');select addpolicy('public', 'foo', 'poli1','idx','idx >1','public','helloworld','true','select'); 4.2 查询pgfga插件的视图 select from pgauditfgaconf;select from pgauditfgaconfdetail ;select from pgauditfgapolicycolumnsdetail; 步骤3: 生效审计规则 4.3开启审计规则 enablepolicy(指定模式、表名、规则名),使得auditenable为trueselect enablepolicy(objectschema:'public', objectname:'foo',policyname:'poli');select enablepolicy(objectschema:'public', objectname:'foo',policyname:'poli1'); 其他函数 4.4 删除审计规则droppolicy(指定模式、表名、规则名)。 select droppolicy(objectschema:'public', objectname:'bar',policyname:'poli'); 4.5 禁用审计规则 disablepolicy(指定模式、表名、规则名),使得auditenable为false select disablepolicy(objectschema:'public', objectname:'foo',policyname:'poli1'); 审计日志管理 1. 设置设计规则 ① 在当前实例下拉框选择您所需要查询的实例,选择审计日志 页签,单击 审计设置 ,出现审计设置弹框。 ② 在审计设置 弹框中,选择 是否开启审计 、 审计粒度 ,单击确定完成审计设置。 当审计粒度为 全局级 ,您可对需要进行审计和告警的动作进行选择。 当审计粒度为 对象级 ,您需设置对象审计规则同时使用。 2. 审计规则管理 ① 在当前实例下拉框选择您所需要查询的实例,选择审计日志 页签,单击 审计规则管理 ,进入审计规则管理页面。 ② 新增审计规则 1. 在审计规则管理 页面,单击 新增审计规则 ,出现新增审计规则弹框。 2. 在新增审计规则 弹框中,输入 规则名称 、选择 审计对象名称 、勾选 审计操作类型 、输入审计对象和选择 是否开启 , 是否触发告警 ,单击确定完成新增审计规则。 ③ 编辑审计规则 单击已创建审计规则所在行的 编辑 ,可修改审计规则。 ④ 删除审计规则 单击已创建审计规则所在行的 删除 ,可删除审计规则。 3. 查看审计日志 选择审计日志 页签,在当前实例下拉框选择您需要查询的实例,设置查询开始时间和结束时间,在下拉框 选择查询条件 ,单击 查询 。 查询条件可选择 节点名称 、 审计类型 、 SQL语句 、数据库名称 和 用户名 。