【重新发现PostgreSQL之美】- 39 谁动了我的奶酪

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 大家好,这里是重新发现PostgreSQL之美 - 39 谁动了我的奶酪

背景


场景:

  • 关键数据被误操作或篡改怎么办?

挑战:

  • 怎么发现和定位?
  • 怎么快速通知?
  • 能不能记下前后变化差异?
  • 能不能回退?
  • 采取什么行动?
  • 能不能限制?
  • 能不能藏起来, 基于行或者列?

PG 解决方案:

  • 发现并记下
  • 可回退
  • 拒绝执
  • 藏起
  • 细粒度权限控

例子


1、发现并记下来:

谁干的:

  • 客户端: ip, port
  • 数据库端: username, dbname, ip, port, timestamp, application_name等会话特

dml:

  • update old.value, new.value
  • delete old.value
  • insert new.value

PostgreSQL 触发器用法详解1
PostgreSQL 触发器用法详解2
PostgreSQL 闪回- flash back query emulate by trigger
PostgreSQL 跟踪记录是谁写入的,谁更新的, 什么时间点, 来源IP等》
PostgreSQL 跟踪记录被更新了多少次, 每次更新的前后值,
PostgreSQL 跟踪记录(row,tuple)的插入、更新时间- spi,moddatetime trigger
PostgreSQL 14 preview - System Versioned Temporal Table - flashback闪回、跟踪、审计record/row/tuple历史版本》

DDL:

  • drop, truncate 回收

PostgreSQL Oracle 兼容性之- 事件触发器实现类似Oracle的回收站功能》
PostgreSQL 回收站功能- 基于HOOKrecycle bin pgtrashcan

或者使用审计:
PostgreSQL 审计- pg_audit module
log_statement = all

2、可回退

PostgreSQL 最佳实践- 在线增量备份与任意时间点恢复》
PostgreSQL 闪回- flash back query emulate by trigger

3、可实时告

notify

SENDMAIL

4、拒绝、忽略执

拒绝执行: trigger 报错: raise exception
忽略执行: before trigger return null

5、藏起

EnterpriseDB & PostgreSQL RLS & Oracle VPD


         
[ AS { PERMISSIVE | RESTRICTIVE } ]
[ FOR { ALL | SELECT | INSERT | UPDATE | DELETE } ]
[ TO { role_name | PUBLIC | CURRENT_ROLE | CURRENT_USER | SESSION_USER } [, ...] ]
[ USING ( using_expression ) ]
[ WITH CHECK ( check_expression ) ]

6、细粒度权限控

权限: 查询、插入、更新、删除、截断、外键、触发器

粒度: 表、列、行


         
[, ...] | ALL [ PRIVILEGES ] }
ON { [ TABLE ] table_name [, ...]
| ALL TABLES IN SCHEMA schema_name [, ...] }
TO role_specification [, ...] [ WITH GRANT OPTION ]
[ GRANTED BY role_specification ]

         
GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( column_name [, ...] )
[, ...] | ALL [ PRIVILEGES ] ( column_name [, ...] ) }
ON [ TABLE ] table_name [, ...]
TO role_specification [, ...] [ WITH GRANT OPTION ]
[ GRANTED BY role_specification ]

         
CREATE POLICY name ON table_name
[ AS { PERMISSIVE | RESTRICTIVE } ]
[ FOR { ALL | SELECT | INSERT | UPDATE | DELETE } ]
[ TO { role_name | PUBLIC | CURRENT_ROLE | CURRENT_USER | SESSION_USER } [, ...] ]
[ USING ( using_expression ) ]
[ WITH CHECK ( check_expression ) ]

 

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
SQL NoSQL 数据可视化
【国庆弯道超车系列】MongoDB进阶之查询(一)
【国庆弯道超车系列】MongoDB进阶之查询(一)
130 0
|
SQL 存储 分布式计算
【国庆弯道超车系列】NoSQL基础及MongoDB入门安装
【国庆弯道超车系列】NoSQL基础及MongoDB入门安装
177 0
|
SQL 存储 JSON
【国庆弯道超车系列】MongoDB入门基础知识
【国庆弯道超车系列】MongoDB入门基础知识
105 0
|
NoSQL 定位技术 MongoDB
【国庆弯道超车系列】MongoDB进阶之查询(二)
【国庆弯道超车系列】MongoDB进阶之查询(二)
148 0
|
算法 关系型数据库 数据库
德哥的PostgreSQL私房菜 - 史上最屌PG资料合集
看完并理解这些文章,相信你会和我一样爱上PostgreSQL,并成为PostgreSQL的布道者。 沉稳的外表无法掩饰PG炙热的内心 。 扩展阅读,用心感受PostgreSQL 内核扩展 《找对业务G点, 体验酸爽 - PostgreSQL内核扩展指南》https://yq.
57263 5
|
关系型数据库 测试技术 OLTP
【重新发现PostgreSQL之美】- 10 内卷 & 大禹治水
大家好,这里是重新发现PostgreSQL之美 - 10 内卷 & 大禹治水
|
存储 负载均衡 搜索推荐
【重新发现PostgreSQL之美】- 23 彭祖的长寿秘诀
大家好,这里是重新发现PostgreSQL之美 - 23 彭祖的长寿秘诀
|
存储 传感器 关系型数据库
【重新发现PostgreSQL之美】- 21 探访宇航员的食物
大家好,这里是重新发现PostgreSQL之美 - 21 探访宇航员的食物
|
SQL Oracle 关系型数据库
【重新发现PostgreSQL之美】- 32 天不怕地不怕, 就怕老板问为什么?
大家好,这里是重新发现PostgreSQL之美 - 32 天不怕地不怕, 就怕老板问为什么?
|
存储 并行计算 关系型数据库
【重新发现PostgreSQL之美】- 20 为什么啤酒&纸尿裤最搭
大家好,这里是重新发现PostgreSQL之美 - 20 为什么啤酒&纸尿裤最搭

热门文章

最新文章