前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Postgresql 安全组件都有那些

Postgresql 安全组件都有那些

作者头像
AustinDatabases
发布2021-05-11 14:24:44
1.2K0
发布2021-05-11 14:24:44
举报
文章被收录于专栏:AustinDatabasesAustinDatabases

postgresql 安全的组件有不少,到底有那些都起到什么作用,可以在这里说一说.安全的组件,主要有以下几个方面, 1密码攻击方面的安全保护 2 审计方面的记录 3 密码方面的等级的保护, 以下截图均从 POSTGRESQL 12.2 版本来进行

1 密码攻击方面的安全保护

这功能是从9.4.21 开始添加的功能,并不需要通过create extension来进行,在添加后直接重新启动数据库服务就可以.

打开POSTGRESQL 数据库的share_preload_librairies 数据库,在shared_preload_libraries 中添加auth_delay 并且添加 auth_dealy.milliseconds, 这里默认这个参数为0 , 这里的意思为当访问中密码错误的情况下,我们会等待多长时间对访问的连接进行回馈. 这样的方法

可以通过调高auth_delay.milliseconds来进行相关的测试,比如调整为5000 也就是密码输入错误后,需要5秒系统才能反映.

试验是通过打印当前时间,连接POSTGRESQL ,密码错误,等待时间,在打印时间组成的,这里可以看到11秒的时间,但密码输入正确则不会出现等待的问题. 输入密码正确则立即进入系统.

这样的方式保护优点是防止对数据库进行大批量的数据访问,去猜测密码的正确性. 但缺点也很明显,如果攻击的方式抓住错误密码长时间没有响应,可以发动大量的连接来连接数据库,导致正常的连接无法连入到数据库中,可以称之为数据库的DDOC攻击.

2 passwordcheck

passworkdcheck 模块来自于passwordcheck.so 模块,它可以实现密码复杂度的要求,通过此模块可以检查密码的复杂性的要求,如果密码没有达到预定的密码的复杂度的要求,会拒绝创建数据库用户的方式来强制重新建立账号,直到达到相关的要求. 其中passwordcheck.so 是其中必然要包含的文件,如果没有则这个功能无法启动

然后在shared_preload_libraries 中加入passwordcheck 功能.

alter system set shared_preload_libraries=pg_pathman,pg_stat_statements,passwordcheck;

重启数据库系统

在添加完passwordcheck后,建立用户给出密码, 必须是最少8个字符,必须包含数字,和字母,密码中不能有用户的名字

在修改密码中如果密码中只有数字的化也会无法添加,因为要求必须包含字母

用户密码中不能包含用户名

3 pgaudit 数据库的审核是数据库工作中的一项重要的工作, pgaudit是一个开源的扩展,通过日志的方式来记录postgresql 数据库详细的audit 审核的日志,主要应用与本地的日志的记录,这个工具主要是来自于二象限公司的开发者.

make install USE_PGXS=1

安装完毕

当然我们可以通过设置log_statement=all来记录PostgreSQL中的所有语句,问题是为什么要使用pgAudit,主要的问题在于postgresql 中的审计是可以针对特定的数据库以及特定的操作来进行记录, 例如SELECT COPY ,或者 Insert,update, delete 等操作,或者 DDL 等操作进行单独的记录. 并且不同的点在于他还对于谁执行的,什么时间执行的有相关的记录.

重启数据库服务器 在需要执行audit的数据库打开 create extension pgaudit

对audit 设置中可以通过命令的方式来进行设置

1 确认当前数据库是否安装了

SELECT * FROM pg_available_extensionsWHERE name LIKE '%audit%';

2 SELECTname,setting FROM pg_settings WHERE name LIKE 'pgaudit%';

在开启后,在进行相关操作,会在日志中记录相关audit 日志

可以对当前检测的数据库的检测的级别进行更改

set pgaudit.log= 'read,write,ddl';

实际上对于POSTGRESQL 的数据库安全可做的东西还很多

例如数据关键列加密,或者对于用户访问采用其他的模式, 秘钥或令牌的方式,不过安全是一个全方位的问题,例如对数据库的密码破解的问题,也可以通过网络对特定端口的异常访问找到问题的解决点,不能将数据库的安全全部寄托到数据库本身.

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AustinDatabases 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档