DBA专供 冈本003系列

简介: 标签 PostgreSQL , 闪回 , flash back query , trigger , event trigger , 回收站 , recycle bin , pgtranshcan , hook , _PG_init , 事件触发器 , 审计 , 跟踪 , 逻辑复制 , DDL逻辑复

标签

PostgreSQL , 闪回 , flash back query , trigger , event trigger , 回收站 , recycle bin , pgtranshcan , hook , _PG_init , 事件触发器 , 审计 , 跟踪 , 逻辑复制 , DDL逻辑复制 , UDR , BDR , 数据库安全


背景

快过年了,安全第一。先给DBA们的冈本003系列,请收好了,并提前祝大伙们过个好年。

通常数据库在是企业中占据非常重要的位置,既然这么重要,当然要保护好,否则数据库被注入,数据被误删就不好看啦,不仅仅影响业务,还可能造成用户的信息被泄露。

本文本的本意是想写PostgreSQL数据库的某些安全特性的,提起数据库里最常见的操作insert(插入), select(取出),让我一下子想到了安全套。

不过在DBA的世界里可没有广告词里说的那样

"不是我不小心 只是真情难以抗拒"

出了问题,是要背责任滴,带好安全套是很重要滴(为了减轻小伙伴们的压力,可以适当选择云数据库,比如阿里云RDS PgSQL)。

pic

为了减轻带套后的不真实感觉,提高品质,尽量选择一款超薄的。

那么接下来我们看看如何打造属于DBA的冈本超薄003系列,你会喜欢什么味的呢?

属于DBA的冈本003

冈本003有很多口味可以选择哦,比如黄金、白金、HOT、多色、芦荟、。。。大伙应该比我懂的。。。。。。

那么PostgreSQL数据库为DBA们准备了哪些体感的呢?

听我娓娓道来。

草莓味 - DML+TRUNCATE 闪回

正如文章开头提到的,数据库是开放给应用程序使用的,但是应用程序本身可能存在漏洞,黑客可以利用应用程序的漏洞,对数据库进行注入。

注入后,数据可能被误插入(INSERT)删除(DELETE)更新(UPDATE)或者(TRUNCATE),那么有了这道功能,我们可以快速的闪回被删除的数据。

pic

细节见:

《PostgreSQL 闪回 - flash back query emulate by trigger》

香蕉味 - DDL 回收站

除了DML语句,黑客当然还可以肆无忌惮的进行DROP操作,即直接把表或者其他对象,那么被删除的表如何能快速的恢复呢?

方法有2

PostgreSQL的事件触发器可以用来保护DBA,防止表被真实的删除,而是放入回收站中。

同时PostgreSQL的钩子特性,允许对PG进行插件化开发,在执行UTITILY QUERY时,触发钩子,被删除的表放入回收站。

所以即使表被删除了,我们也能快速的在回收站将其取出来。

pic

细节见:

《PostgreSQL 事件触发器 - PostgreSQL 9.3 Event Trigger》

《PostgreSQL 事件触发器 - 实现类似Oracle的回收站功能》

事件触发器除了可以用来提供安全套的功能,还能用来进行审计,记录DDL语句从而实现DDL的逻辑复制等功能。

细节见:

《PostgreSQL 事件触发器 - DDL审计 , DDL逻辑复制 , 打造DDL统一管理入》

《PostgreSQL 逻辑复制插件 UDR, 可以愉快的玩类似MySQL的binlog复制了》

如果用户想实施基于时间点的恢复,那么也是有手段来实现的,是不是很棒呢?

《PostgreSQL 最佳实践 - pg_rman 以standby为源的备份浅析》

《PostgreSQL 最佳实践 - pg_rman 数据库恢复示例 与 软件限制解说》

黄金甲 - 密码防盗防破解

密码是开启数据库大门的钥匙,如果密码被暴力破解,或者被网络层截获,又或者泄露,是惨不忍睹的。

pic

如何防止暴力破解呢?PG里面提供了AUTH DELAY的模块,可以防止暴力破解,同时提供了密码的复杂度强制模块,强制了密码的复杂度,提高破解难度。

细节见:

《PostgreSQL 密码安全指南》

以及

http://blog.163.com/digoal@126/blog/static/16387704020149852941586/

同时在PG中还提供了其他的认证组件支持,例如在企业中,密码是统一管理的,WINDOWS AD域, LINUX LDAP等。

PostgreSQL可以把认证功能交给这些组件来完成,从而与企业的密码管理完美的结合,

细节见:

《PostgreSQL Windows AD认证配置》

《PostgreSQL LDAP认证之 simple bind配置》

《PostgreSQL LDAP认证之 search bind配置》

白金甲 - 传输加密

此山是我开,此树是我栽,若想从此过,留下买路财。

pic

数据在运送(传输)过程,一不留神,也可能被黑客盯上,如果你的数据传输不做任何保护就在公网上传输的话,那真的很容易完蛋,被脱裤。

PostgreSQL的传输加密手段,可以将黑客拒之门外,即使被黑客盯上也没关系,被他们截取的都是加密后的数据,是很难破解的。

细节见:

《PostgreSQL 如何实现网络压缩传输或加密传输(openssl)》

菠萝味 - 数据本身的加密

一旦数据库被攻破,或者被SQL注入,将数据取走,那么数据就被曝光了。

如何防止脱裤后的安全呢?

这里就涉及到数据存在在数据库中的加密问题,加密后,即使被脱裤,黑客看到的不过是加密后的数据而已,只要加解密的方法没有泄露,黑客也无法获取有用的信息。

将敏感数据加密后存储在数据库中,即使加密数据泄露,只要加解密方法没有泄露,也是相对安全的。

pic

加解密方法建议放在应用端实现,如果加解密在数据库端实现,用户一旦入侵数据库,更容易破解。(或者加密在数据库端实现,解密在应用程序端实现)

细节见:

http://blog.163.com/digoal@126/blog/static/1638770402013423101455507/

水蜜桃味 - 透明加密

透明加密属于数据库的高端功能,指对应用完全透明的,不需要应用在读取或写入数据时进行加密和解密了。

但是这项技术会给数据库的性能带来一定的损耗,因为它是在数据库端完成的。

比如数据库启动时,传入一个加密的秘钥,存在内存中,后面对数据库中的数据存取都使用这个秘钥进行加解密。

现在比较流行的有数据类型的透明加密,以及块级别的透明加密。

以块加密为例,数据文件如果被恶意拷贝走的话,实际上没有文件的解密秘钥,这堆文件也是没有什么用的。

细节见:

《PostgreSQL 透明加密(TDE,FDE) - 块级加密》

https://postgrespro.com/docs/postgresproee/9.6/cfs.html

而数据类型的透明加密则是类型层面的,PostgreSQL的数据类型都有统一的IO标准接口,所以在这方面可以完成透明加解密。

青涩味 - 视图安全

在一些企业的数据库设计中,同一个表可能存储了不同业务的数据,为了防止不同的应用的数据串扰,通常会使用视图来隔离不同的业务访问数据的边界。

比如财务能访问的数据范围是A,HR能访问的数据范围是B,A也许能看到员工的收入情况,但是不能看到员工的一些家庭、手机号等信息。 而B则反之。

但是视图其实是不安全的,黑客可以利用PostgreSQL的优化器原理,创建成本极低的函数,在函数中获取视图限制外的隐藏内容。

pic

如果用户没有创建函数的权限,用户就无法利用这个原理。

或者使用安全栅栏来弥补。

细节见:

http://blog.163.com/digoal@126/blog/static/163877040201361031431669/

http://blog.163.com/digoal@126/blog/static/163877040201431410032638

或者使用基于安全策略来管理数据可见性。

http://blog.163.com/digoal@126/blog/static/163877040201362402650341/

http://blog.163.com/digoal@126/blog/static/16387704020153984016177/

体感大荟萃

PostgreSQL 能提供的安全手段还很多,对DBA来说是非常实用的。

我整理了一些,大家可以参考一下

pic

《PostgreSQL 数据库安全指南》

《PostgreSQL cancel 安全漏洞》

《Hacking PostgreSQL》

不管你喜欢什么味的,都可以在PostgreSQL中找到。

目录
相关文章
|
分布式计算 监控 数据挖掘
云上游戏数据分析实践
数据分析和游戏的生命周期与盈利息息相关,同时数据分析对游戏的运维也起到了至关重要的作用,精确的数据分析可以延长游戏的生命和帮助其盈利。本文针对游戏行业的数据特点,结合游戏数据分析的现状,对数据分析上云的技术选型、结合数加大数据计算服务MaxCompute(原ODPS)、SLS、RDS、DPC等产品和
6271 0
|
存储 分布式计算 搜索推荐
干货:解码OneData,阿里的数仓之路。
据IDC报告,预计到2020年全球数据总量将超过40ZB(相当于4万亿GB),这一数据量是2013年的10倍。正在“爆炸式”增长的数据的潜在巨大价值正在被发掘,它有可能成为商业世界的“新能源”,变革我们的生产,影响我们生活。当我们面对如此庞大的数据之时,如果我们不能有序、有结构的进行分类组织
22441 2
|
存储 运维 监控
SLS:海量日志数据管理利器
日志是大规模集群管理系统中非常关键的部分,服务器上的各种日志数据可以帮助我们回答如运维、开发、运营、客服、安全等问题。SLS提供一个从日志采集、过滤、处理、聚合到在线查询的日志处理平台,满足各种日志处理分析需求。本文以用户选用SLS搭建一个端对端的日志服务为例进行详解,并解析其功能背后的技术架构。
12881 1
|
Java Unix Linux
JVM源码分析之System.currentTimeMillis及nanoTime原理详解
##概述 上周`@望陶`问了我一个现象很诡异的问题,说JDK7和JDK8下的`System.nanoTime()`输出完全不一样,而且差距还非常大,是不是两个版本里的实现不一样,之前我也没注意过这个细节,觉得非常奇怪,于是自己也在本地mac机器上马上测试了一下,得到如下输出: ``` ~/
7928 0
|
SQL 分布式计算 MaxCompute
MaxCompute 学习计划(二)
学习MaxCompute SQL和UDF的checklist
9468 0
|
数据采集 分布式计算 大数据
企业大数据平台下数仓建设思路
介然(李金波),阿里云高级技术专家,现任阿里云大数据数仓解决方案总架构师。8年以上互联网数据仓库经历,对系统架构、数据架构拥有丰富的实战经验,曾经数据魔方、淘宝指数的数据架构设计专家。 与阿里云大数据数仓结缘 介然之前在一家软件公司给企业客户做软件开发和数仓开发实施,数仓开发和实施都是基于传统的
14812 1
|
弹性计算 运维 监控
|
SQL 监控 关系型数据库
日志服务+流计算+RDS 统计网站访问日志
众所周知,在阿里云所有的产品里,很多产品不需要写代码也能做出炫酷的demo,操作简单,容易上手。最近流计算开始公测,所谓世间万事万物,我们都要挑点来尝尝,拿它做个什么demo捏?请看本期云享团分享。
|
Java
Intellij IDEA 添加jar包的三种方式
关于intellij如何导入jar包的几种方法
10766 0

热门文章

最新文章