数据仓库服务 GAUSSDB(DWS)-安全函数:pg_query_audit_details()
pg_query_audit_details()
描述:查看审计日志并将审计日志中的object_name和object_details字段由json格式解析出来。该函数仅8.2.1.100及以上集群版本支持。
返回值类型:record
函数返回字段如下:
名称 |
类型 |
描述 |
---|---|---|
begintime |
timestamp with time zone |
操作的执行开始时间。 |
endtime |
timestamp with time zone |
操作的执行结束时间。 |
operation_type |
text |
操作类型,具体类型见表2。 |
audit_type |
text |
审计类型,具体类型见表3。 |
result |
text |
操作结果。 |
username |
text |
执行操作的用户名。 |
database |
text |
数据库名称。 |
client_conninfo |
text |
客户端连接信息,即gsql,jdbc或odbc。 |
transaction_xid |
text |
事务ID。 |
query_id |
text |
查询ID。 |
node_name |
text |
节点名称。 |
session_id |
text |
会话ID。 |
local_port |
text |
本地端口。 |
remote_port |
text |
远端端口。 |
object_name |
text |
表名、函数名、视图名。 |
column_name |
text |
列名。 |
type_of_use |
text |
对象的使用类型: 1:仅涉及(在实际使用中,此标志位暂不存在) 2:执行过程中访问(语句中出现的列以及在解析过程中访问到的列) 4:条件中发现(条件类型语句中,不包括条件表达式及函数) 8:inner join中发现 16:outer join中发现 32:聚合节点中发现(包括distinct、group by、聚集函数) 64:full join中发现 该列数值为叠加显示的数值。 |
use_type |
text |
type_of_use解析出的具体类型: 1:Reference only 2:Access 4:Conditional 8:Inner join 16:Outer join 32:Sum 64:Full join |
command_text |
text |
操作的执行命令。 |
示例:
- 查询审计语句中所有对象的列及其在语句中使用的类型:
1 2
SET audit_object_details = on; SELECT object_name,object_details,result_rows,error_code,command_text FROM pg_query_audit('2023-05-12-03 8:00:00','2023-05-12 22:55:00') where command_text like '%student%';
查询结果如下:
1 2 3 4 5 6
object_name | object_details | result_rows | error_code | command_text ------------------------------------------------------------------+------------------------------------------------------------------------------------------+-------------+------------+------------------------------------------------------------------------------------------------------------------------------------------------------- student | | 0 | | CREATE TABLE student(stuNo int, stuName TEXT); studentscore | | 0 | | CREATE TABLE studentscore(stuNo int, stuscore int); ["public.student_view01","public.studentscore","public.student"] | | 0 | | CREATE OR REPLACE VIEW student_view01 AS SELECT * FROM student t1 where t1.stuNo in (select stuNo from studentscore t2 where t1.stuNo = t2.stuNo); ["public.student_view01","public.student","public.studentscore"] | {"public.student":[{"stuno":"6"},{"stuname":"2"}],"public.studentscore":[{"stuno":"6"}]} | 0 | | SELECT * FROM student_view01
- 查询结果object_details中显示部分语句执行过程中,涉及到的列及其使用类型,使用json格式进行记录。
使用pg_query_audit_details函数对object_name和object_details列进行解析:
1
SELECT database,object_name,column_name,type_of_use,use_type FROM pg_query_audit_details('2021-02-03 8:00:00','2024-02-03 22:55:00','current') where command_text like '%student%';
查询结果如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
database | object_name | column_name | type_of_use | use_type ----------+-----------------------+-------------+-------------+-------------------- gaussdb | student | | 2 | Access gaussdb | | | 2 | Access gaussdb | studentscore | | 2 | Access gaussdb | | | 2 | Access gaussdb | public.student_view01 | | 2 | Access gaussdb | public.studentscore | | 2 | Access gaussdb | public.student | | 2 | Access gaussdb | | | 2 | Access gaussdb | public.student | stuno | 6 | Access,Conditional gaussdb | public.student | stuname | 2 | Access gaussdb | public.studentscore | stuno | 6 | Access,Conditional gaussdb | public.student_view01 | | 2 | Access gaussdb | public.student | | 2 | Access gaussdb | public.studentscore | | 2 | Access gaussdb | | | 2 | Access (15 rows)
- DWS安全_数据仓库服务安全_DWS数据安全管理_DWS安全保障_DWS安全策略
- 数据仓库服务GaussDB(DWS)_SQL on Anywhere
- 调用GaussDB(DWS) API接口_数据仓库服务调用API_如何调用API_在DWS中调用API
- DWS产品介绍_DWS产品优势_DWS功能_DWS使用场景_DWS是什么
- GaussDB(DWS)常用SQL_常用SQL命令_SQL语法
- DWS资源管理_GaussDB(DWS)资源管理作用_DWS资源管控
- GaussDB函数_GaussDB数据库函数_高斯数据库函数_华为云
- GaussDB数据库函数_GaussDB介绍_高斯数据库函数
- GAUSS(DWS)工具_gsql工具_DataStudio工具_DSC工具
- GaussDB(DWS)服务_什么是IoT数仓_如何使用IoT数仓