news 2026/2/28 14:40:17

基于表的ddl(alter table)审计

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于表的ddl(alter table)审计

文章目录

  • 环境
  • 文档用途
  • 详细信息

环境

系统平台:Linux x86-64 Red Hat Enterprise Linux 7
版本:4.3.2

文档用途

使用事件触发器审计表的alter table操作

详细信息

如果你要记录表被用户执行DDL,修改定义, 设置默认值, 等等alter table可以完成的工作时的记录, 可以使用事件触发器来达到这个目的.

例子如下 :

# create or replace function ef_alter() returns event_trigger as $$declarerec hstore;beginselecthstore(pg_stat_activity.*)intorecfrompg_stat_activitywherepid=pg_backend_pid();insertintoaud_alter(ctx)values(rec);end;$$languageplpgsql strict;CREATEFUNCTIONtestdb=# create event trigger e_alter on ddl_command_end when tag in ('ALTER TABLE') execute procedure ef_alter();CREATEEVENTTRIGGERtestdb=# create table aud_alter(id serial primary key, crt_time timestamp default now(), ctx hstore);CREATETABLEtestdb=# create table test(id int);CREATETABLEtestdb=# alter table test alter column id type int8;ALTERTABLEtestdb=# select * from aud_alter;-[RECORD1]------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------id|1crt_time|2018-05-0313:44:12.309983ctx|"pid"=>"9408","datid"=>"16384","query"=>"alter table test alter column id type int8;","state"=>"active","datname"=>"testdb","usename"=>"postgres","waiting"=>"f","usesysid"=>"10","xact_start"=>"2018-05-03 13:44:12.309983+08","backend_xid"=>"8367","client_addr"=>NULL,"client_port"=>"-1","query_start"=>"2018-05-03 13:44:12.309983+08","backend_xmin"=>"8367","state_change"=>"2018-05-03 13:44:12.309985+08","backend_start"=>"2018-05-03 13:40:15.0561+08","client_hostname"=>NULL,"application_name"=>"psql"testdb=# select each(ctx) from aud_alter where id=1;each-------------------------------------------------------(pid,9408)(datid,16384)(query,"alter table test alter column id type int8;")(state,active)(datname,testdb)(usename,postgres)(waiting,f)(usesysid,10)(xact_start,"2018-05-03 13:44:12.309983+08")(backend_xid,8367)(client_addr,)(client_port,-1)(query_start,"2018-05-03 13:44:12.309983+08")(backend_xmin,8367)(state_change,"2018-05-03 13:44:12.309985+08")(backend_start,"2018-05-03 13:40:15.0561+08")(client_hostname,)(application_name,psql)(18rows)

query即当时的ALTER TABLE SQL.

其他辅助的还有用户当时的IP, PORT, 用户, 链接的数据库等信息。

如果只想跟踪表的字段被修改的前后类型, 更严格的做法应该是从parsetree中取出被修改的字段, 类型。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/22 11:12:41

空指针之痛:除了 if!=null,你还有更优雅的办法吗?

一、 序言:那个价值十亿美元的错误 在 Java 世界里,java.lang.NullPointerException(NPE)是每个开发者的宿命。它的发明者 Tony Hoare 曾公开道歉,称其为“十亿美元的错误”。 在生产环境中,NPE 往往意味着…

作者头像 李华
网站建设 2026/2/19 6:42:29

城市智能体:宜昌点军区算力供应链平台的区域产业升级路径

宜昌点军区通过利用OpenCSG(开放传神)打造的点军算力供应链平台,整合异构算力并构建行业专属应用生态,实现算力利用率提升80%以上、企业算力使用成本降低40%;预计吸引100AI企业落地,推动数字经济产值增长近…

作者头像 李华
网站建设 2026/2/9 9:24:07

CAXA开放后置处理,适配所有机床不费劲儿

我们车间简直就是机床开会,法兰克、西门子、海德汉,市面上常见的系统基本都齐了,说多了都是泪。以前换个新编程软件,后置处理真的太难了,要是软件不开放,想适配我们这一堆不同系统的机床,能熬好…

作者头像 李华
网站建设 2026/2/27 22:17:45

计算机毕业设计springboot动物保护协会系统 基于Spring Boot的流浪动物救助与领养平台 SpringBoot+MySQL的公益宠物守护系统

计算机毕业设计springboot动物保护协会系统fn275 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。 流浪动物数量逐年攀升,传统线下登记、电话回访、纸质档案的管理方式…

作者头像 李华