当前位置: 首页 > news >正文

HighGoDB 用户密码安全策略

文章目录

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

环境

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

文档用途

通过调用函数的方式增强用户密码的安全性

详细信息

一般来说数据库密码安全管理要考虑以下几个方面 :

  1. 密码过期策略, 决定密码的有效期, 多长时间过期.

  2. 密码复用策略, 密码修改时需要对比以前的密码, 多少次以后才可以复用, 或者永不能使用与以前密码相同的密码.

  3. 密码长度策略, 密码的最小长度, 太短的话很容易被穷举法破解, 一般至少使用8位以上长度的密码.

  4. 密码复杂度策略, 密码包含的字符复杂度, 一般要求包含数字字母大小写以及特殊字符. 另外不要使用与数据库名, 用户名相似或一致的密码.

  5. 密码字典过滤, 过滤掉一些用户常用的或者有意义的字符, 也是为了避免密码很容易被穷举破解.

  6. 密码存储策略, 使用加密存储, 不要使用明文存储.

加密存储在创建用户时使用encrypted password即可.

如果设置了password_encryption=off, 同时创建用户时不加encrypted, 那么密码将以明文存储.

加密存储方法 :

highgo=# create role u1 login encrypted password 'highgo';CREATEROLE highgo=# select * from pg_shadow where usename='u1';usename|usesysid|usecreatedb|usesuper|userepl|usebypassrls|passwd|v aluntil|useconfig---------+----------+-------------+----------+---------+--------------+-------------------------------------+----------+-----------u1|131294|f|f|f|f|md50a0a7a2ef5607a4424f00e4903877f2e||(1row)
  1. 密码锁策略, 密码输入错误多少次后锁用户, 多长时间解锁.

HighgoDB不支持密码锁策略.

  1. 密码保护策略, 密码输入错误多少次后延迟认证. 可用来防止暴力破解.

目前HighgoDB在密码管理这块做得较弱, 以下举例通过函数来实现其中的部分安全策略 :

创建一个字典表, 用于存放已经使用过的密码的md5值, 以及用来进行暴力破解的密码字典的md5值.

highgo=# create table pwd_dictionary(pwd text unique);CREATETABLE

创建一个记录用户最后一次修改密码时间的表. 用于实施密码过期提醒策略.

highgo=# create table user_pwd(rolename name not null unique, pwd_modify_time timestamp not null);CREATETABLE

创建用户的函数 :

highgo=# create or replace function create_role(i_rolename name, i_pwd text) returns void as $$declarev_lengthint:=8;begin-- 密码长度策略iflength(i_pwd)<v_lengththenraise notice'password too short, please use password long than %.',v_length;return;endif;-- 密码复杂度策略, 包含数字, 字母大小写.ifnot(i_pwd~'[a-z]'andi_pwd~'[A-Z]'andi_pwd~'[0-9]')thenraise notice'password too simple, please ensure password contain a-z,A-Z and 0-9.';return;endif;-- 密码复用策略, 不允许重复使用已经存在的密码.-- 密码字典策略, 不允许使用密码字典中的密码.insertintopwd_dictionary(pwd)values(md5(i_pwd));-- 插入用户表, 记录用户最后一次修改密码的时间, 用于密码过期策略insertintouser_pwd(rolename,pwd_modify_time)values(i_rolename,now());-- 创建用户execute'create role '||i_rolename||' encrypted password '||quote_literal(i_pwd);raise notice'create role % successed.',i_rolename;return;end;$$languageplpgsql strict;CREATEFUNCTION创建用户密码过短,不允许创建.highgo=# select * from create_role('u4','pwd');NOTICE: password too short,pleaseusepassword long than8.create_role-------------(1row)

创建用户密码过于简单, 不允许创建.

highgo=# select * from create_role('u4','abcdefee');NOTICE: password toosimple,please ensure password contain a-z,A-Zand0-9.create_role-------------(1row)

创建用户正常.

highgo=# select * from create_role('u4','aA0ffffffff');NOTICE:createrole u4 successed.create_role-------------(1row)

创建用户密码与现有密码重复, 不允许创建.

highgo=# select * from create_role('new','aA0ffffffff');ERROR:duplicatekeyvalueviolatesuniqueconstraint"pwd_dictionary_pwd_key"DETAIL:Key(pwd)=(2b9aa88182d13d35930180b4cc791beb)alreadyexists.CONTEXT:SQLstatement"insert into pwd_dictionary(pwd) values (md5(i_pwd))"PL/pgSQLfunctioncreate_role(name,text)line17atSQLstatement

修改用户密码的函数 :

highgo=# create or replace function alter_role_pwd(i_rolename name, i_pwd text) returns void as $$declarev_lengthint:=8;begin-- 密码长度策略iflength(i_pwd)<v_lengththenraise notice'password too short, please use password long than %.',v_length;return;endif;-- 密码复杂度策略, 包含数字, 字母大小写.ifnot(i_pwd~'[a-z]'andi_pwd~'[A-Z]'andi_pwd~'[0-9]')thenraise notice'password too simple, please ensure password contain a-z,A-Z and 0-9.';return;endif;-- 密码复用策略, 不允许重复使用已经存在的密码.-- 密码字典策略, 不允许使用密码字典中的密码.insertintopwd_dictionary(pwd)values(md5(i_pwd));-- 更新用户表, 记录用户最后一次修改密码的时间, 用于密码过期策略updateuser_pwdsetpwd_modify_time=now()whererolename=i_rolename;-- 修改用户密码execute'alter role '||i_rolename||' encrypted password '||quote_literal(i_pwd);raise notice'modify role % password successed.',i_rolename;return;end;$$languageplpgsql strict;CREATEFUNCTION使用该函数修改用户密码 highgo=# select * from alter_role_pwd('u4','new');NOTICE: password too short,pleaseusepassword long than8.alter_role_pwd----------------(1row)highgo=# select * from alter_role_pwd('u4','new22222222');NOTICE: password toosimple,please ensure password contain a-z,A-Zand0-9.alter_role_pwd----------------(1row)highgo=# select * from alter_role_pwd('u4','new2222222z2');NOTICE: password toosimple,please ensure password contain a-z,A-Zand0-9.alter_role_pwd----------------(1row)highgo=# select * from alter_role_pwd('u4','new2222222z2A');NOTICE:modifyrole u4 password successed.alter_role_pwd----------------(1row)highgo=# select * from alter_role_pwd('u4','new2222222z2A');ERROR:duplicatekeyvalueviolatesuniqueconstraint"pwd_dictionary_pwd_key"DETAIL:Key(pwd)=(9a5c46207db775d4d98e64d427481cbc)alreadyexists.CONTEXT:SQLstatement"insert into pwd_dictionary(pwd) values (md5(i_pwd))"PL/pgSQLfunctionalter_role_pwd(name,text)line17atSQLstatement

密码过期提醒 :

因为密码最后一次修改时间已经更新到user_pwd表, 所以结合这个可以在系统crontab中或者nagios监控软件中实施密码过期提醒.

highgo=# select * from user_pwd ;rolename|pwd_modify_time----------+----------------------------u4|2013-05-2518:21:59.376404(1row)

[小结]

  1. 为了密码安全性, 在HighgoDB中, 创建用户请使用create_role函数, 不要直接使用create role 命令.

  2. 修改用户密码请使用alter_role_pwd函数. 不要直接使用alter role 命令.

http://www.jsqmd.com/news/333401/

相关文章:

  • 2026年高端电子材料权威推荐:医用银浆/导电银胶/耐高温导电胶/可拉伸银浆/烧结银膏/纳米银膏/高导热胶水专业厂家精选 - 品牌推荐官
  • Substance P (1-9) ;RPKPQPFG
  • 深度解析2026年上海留学机构排名,寻找性价比高的优质选择 - 留学机构评审官
  • 深度测评 9个AI论文软件:研究生毕业论文与科研写作必备工具全解析
  • 2026年山东环保工程企业排行榜,细聊盈尚环境工程专业度 - 工业推荐榜
  • 郑州留学机构排名发布,学员满意度高成关键亮点 - 留学机构评审官
  • 2026年安庆口碑好的A-Level课程靠谱机构盘点,哪家值得选 - myqiye
  • DDoS 攻击到底是什么?它的攻击原理全解析!零基础入门到精通,一篇收藏全掌握!
  • 深圳智航精密科技有限公司产品介绍:圆形连接器、防水连接器、密封连接器 - 品致汇
  • sqoop采集做完后导致hdfs数据与Oracle数据量不符的难题。怎么解决?
  • 2026年 红木家具厂家推荐排行榜:东方红木/红木家居,匠心工艺与典雅设计品牌深度解析 - 品牌企业推荐师(官方)
  • 2026年苏州沉水植物厂家排名,沉水植物专业企业哪家性价比高? - mypinpai
  • Attention Isn‘t All You Need for Emotion RecognitionDomain Features Outperform Transformers on the E
  • P0951CE-A FBC01模拟输入模块
  • 2026年深圳性价比高的就业规划机构盘点,就业规划机构哪家好 - 工业品牌热点
  • 基于BS架构的题库管理系统开题报告(3)
  • 学霸同款10个降AIGC工具 千笔·降AIGC助手解决AI率过高痛点
  • P0951BA-0E FBP10处理器模块
  • AI营销内容失灵?2026榜单看原圈科技如何破局伪全球化
  • 聊聊好用的高清LED透明屏,上海地区有哪些品牌 - 工业品网
  • 学生近视低龄化引关注,教育照明护眼灯成防控关键
  • 2026 AI营销内容系统排名:原圈科技如何凭实力登顶榜单?
  • 2026矿用在线浓度计品牌盘点:4家优质厂家产品全解析 - 品牌推荐大师1
  • 口碑好的红点品牌与传达设计奖申报公司,广州有哪些 - 工业设备
  • AI元人文:“正确”之后——论后正确时代的认知生态治理哲学
  • 2026年用友YonSuite哪家靠谱?企业服务合作方选择参考 - 品牌排行榜
  • Lambda anyMatch
  • 聊聊泰州数控培训周末班,费用多少、怎么收费的? - 工业推荐榜
  • 2026年 拔丝机厂家推荐排行榜,金属拔丝机,钢筋拔丝机,线材拔丝设备,高效稳定源头工厂深度解析 - 品牌企业推荐师(官方)
  • 2026.2 模拟赛日志