news 2026/6/10 18:37:52

基于表的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/6/6 7:04:08

【TVM教程】设备/目标交互

TVM 现已更新到 0.21.0 版本,TVM 中文文档已经和新版本对齐。 Apache TVM 是一个深度的深度学习编译框架,适用于 CPU、GPU 和各种机器学习加速芯片。 在线运行 TVM 学习教程 链接是:https://hyper.ai/notebooks/48919?utm_sourceDistribu…

作者头像 李华
网站建设 2026/5/24 9:19:26

打卡信奥刷题(2783)用C++实现信奥题 P3914 染色计数

P3914 染色计数 题目描述 有一颗NNN个节点的树,节点用1,2,⋯,N1,2,\cdots,N1,2,⋯,N编号。你要给它染色,使得相邻节点的颜色不同。有MMM种颜色,用1,2,⋯,M1,2,\cdots,M1,2,⋯,M编号。每个节点可以染MMM种颜色中的若干种,求不同染…

作者头像 李华
网站建设 2026/5/25 17:06:12

100条高实用性、可工业化扩展的一句话Shell命令

文章目录 100条高实用性、可工业化扩展的一句话Shell命令 第一章:系统监控与诊断(15条) 1.1 实时监控 1.2 性能分析 1.3 资源统计 第二章:文件与存储管理(15条) 2.1 文件操作 2.2 存储管理 2.3 备份与同步 第三章:网络与安全(20条) 3.1 网络诊断 3.2 安全审计 第四章:…

作者头像 李华
网站建设 2026/6/2 16:08:15

aiohttp中间件实现异步请求日志与重试

在异步 HTTP 请求场景中,aiohttp 是 Python 生态下的主流选择。实际开发中,请求的日志记录(排查问题)和失败重试(提升稳定性)是必备能力,而 aiohttp 的中间件机制能优雅地实现这两个功能&#x…

作者头像 李华
网站建设 2026/6/10 0:05:40

剖析CVE-2009-0556:一个“复活”的PPT内存破坏漏洞

CVE-2009-0556:一个拒绝消亡的2009年PowerPoint漏洞 2009年,某中心恶意软件团队的研究人员记录了一个存在于特定版本Windows PowerPoint(Windows PowerPoint 2000 SP3、2002 SP3、2003 SP3以及Microsoft Office 2004 for Mac中的PowerPoint&…

作者头像 李华
网站建设 2026/6/10 13:02:20

<span class=“js_title_inner“>2025年跨境电商行业年度报告</span>

导读:2025年,跨境电商行业进入“规则重构与价值升级”的双变期。政策层面,国内外税务与监管新规推动行业合规化加速;市场层面,美国增速放缓,欧洲作为“第二选择”崛起;平台层面,Temu…

作者头像 李华