openGauss学习笔记-115 openGauss 数据库管理-设置安全策略-设置密码安全策略

openGauss学习笔记-115 openGauss 数据库管理-设置安全策略-设置密码安全策略115.1 操作步骤

openGauss学习笔记-115 openGauss 数据库管理-设置安全策略-设置密码安全策略

115.1 操作步骤

用户密码存储在系统表pg_authid中,为防止用户密码泄露,openGauss对用户密码进行加密存储,所采用的加密算法由配置参数password_encryption_type决定。

  • 当参数password_encryption_type设置为0时,表示采用md5方式对密码加密。MD5加密算法安全性低,存在安全风险,不建议使用。

  • 当参数password_encryption_type设置为1时,表示采用sha256和md5方式对密码加密。MD5加密算法安全性低,存在安全风险,不建议使用。

  • 当参数password_encryption_type设置为2时,表示采用sha256方式对密码加密,为默认配置。

  • 当参数password_encryption_type设置为3时,表示采用sm3方式对密码加密。

  1. 以操作系统用户omm登录数据库主节点。

  2. 使用如下命令连接数据库。

gsql -d postgres -p 8000
postgres为需要连接的数据库名称,8000为数据库主节点的端口号。

连接成功后,系统显示类似如下信息:
gsql ((openGauss x.x.x build 50dc16a6) compiled at 2020-11-29 05:49:21 commit 1071 last mr 1373)
    Non-SSL connection (SSL connection is recommended when requiring high-security)
    Type "help" for help.
    
    openGauss=#
  1. 查看已配置的加密算法。
openGauss=# SHOW password_encryption_type;
     password_encryption_type
    --------------------------
     2
    (1 row)
如果显示结果为0或1,执行“\q”命令退出数据库。
  1. 执行如下命令将其设置为安全的加密算法。
gs_guc reload -N all -I all -c "password_encryption_type=2"
> [图片上传失败...(image-c72f83-1699185015182)]
> 
>   **须知:** 为防止用户密码泄露,在执行CREATE USER/ROLE命令创建数据库用户时,不能指定UNENCRYPTED属性,即新创建的用户的密码只能是加密存储的。
  1. 配置密码安全参数。

    • 密码复杂度

      初始化数据库、创建用户、修改用户时需要指定密码。密码必须要符合复杂度(password_policy)的要求,否则会提示用户重新输入密码。

      • 参数password_policy设置为1时表示采用密码复杂度校验,默认值。

      • 参数password_policy设置为0时表示不采用密码复杂度校验,但需满足密码不能为空并且只包含有效字符,有效字符范围为大写字母(A-Z)、小写字母(a-z)、数字(0-9)及特殊字符详见表1。设置为0会存在安全风险,不建议设置为0,即使需要设置也要将所有openGauss节点中的password_policy都设置为0才能生效。

      配置password_policy参数。

      1. 使用如下命令连接数据库。
gsql -d postgres -p 8000
        postgres为需要连接的数据库名称,8000为数据库主节点的端口号。

        连接成功后,系统显示类似如下信息:
gsql ((openGauss x.x.x build 50dc16a6) compiled at 2020-11-29 05:49:21 commit 1071 last mr 1373)
            Non-SSL connection (SSL connection is recommended when requiring high-security)
            Type "help" for help.
            
            openGauss=#
    2.  查看已配置的参数。
openGauss=# SHOW password_policy;
             password_policy
            ---------------------
             1
            (1 row)
        如果显示结果不为1,执行“\q”命令退出数据库。

    3.  执行如下命令设置成默认值1。
gs_guc reload -N all -I all -c "password_policy=1"
    > [图片上传失败...(image-d43ce-1699185015180)]
    > 
    >   **说明:**
    > 
    > 帐户密码的复杂度要求如下:
    > 
    > *   包含大写字母(A-Z)的最少个数(password_min_uppercase)
    >     
    >     
    > *   包含小写字母(a-z)的最少个数(password_min_lowercase)
    >     
    >     
    > *   包含数字(0-9)的最少个数(password_min_digital)
    >     
    >     
    > *   包含特殊字符的最少个数(password_min_special)(特殊字符的列表请参见[表1](https://docs.opengauss.org/zh/docs/5.0.0/docs/DatabaseAdministrationGuide/%E8%AE%BE%E7%BD%AE%E5%AF%86%E7%A0%81%E5%AE%89%E5%85%A8%E7%AD%96%E7%95%A5.html#zh-cn_topic_0283137010_zh-cn_topic_0237121110_zh-cn_topic_0151096202_zh-cn_topic_0085033092_zh-cn_topic_0059779155_t850059f5d3e64bc78857b77fc8ffbba8))
    >     
    >     
    > *   密码的最小长度(password_min_length)
    >     
    >     
    > *   密码的最大长度(password_max_length)
    >     
    >     
    > *   至少包含上述四类字符中的三类。
    >     
    >     
    > *   不能和用户名、用户名倒写相同,本要求为非大小写敏感。
    >     
    >     
    > *   不能和当前密码、当前密码的倒写相同。
    >     
    >     
    > *   不能是弱口令。
    >     
    >     
    > *   弱口令指的是强度较低,容易被破解的密码,对于不同的用户或群体,弱口令的定义可能会有所区别,用户需自己添加定制化的弱口令。
    >     
    >     
    > *   弱口令字典中的口令存放在gs_global_config系统表中,当创建用户、修改用户需要设置密码时,系统将会把用户设置口令和弱口令字典中存放的口令进行对比,如果符合,则会提示用户该口令为弱口令,设置密码失败。
    >     
    >     
    > *   弱口令字典默认为空,用户通过以下语法可以对弱口令字典进行增加和删除,示例如下:
    >     
    >     
    > 
    > 
openGauss=# CREATE WEAK PASSWORD DICTIONARY WITH VALUES ('password1'), ('password2');
        > openGauss=# DROP WEAK PASSWORD DICTIONARY;
*   密码重用

    用户修改密码时,只有超过不可重用天数(password_reuse_time)或不可重用次数(password_reuse_max)的密码才可以使用。参数配置说明如**表2**所示。

    > [图片上传失败...(image-7af59f-1699185015180)]
    > 
    >   **说明:** 不可重用天数默认值为60天,不可重用次数默认值是0。这两个参数值越大越安全,但是在使用过程中会带来不便,其默认值符合安全标准,用户可以根据需要重新设置参数,提高安全等级。

    配置password_reuse_time参数。

    1.  使用如下命令连接数据库。
gsql -d postgres -p 8000
        postgres为需要连接的数据库名称,8000为数据库主节点的端口号。

        连接成功后,系统显示类似如下信息:
gsql ((openGauss x.x.x build 50dc16a6) compiled at 2020-11-29 05:49:21 commit 1071 last mr 1373)
            Non-SSL connection (SSL connection is recommended when requiring high-security)
            Type "help" for help.
            
            openGauss=#
    2.  查看已配置的参数。
openGauss=# SHOW password_reuse_time;
             password_reuse_time
            ---------------------
             60
            (1 row)
        如果显示结果不为60,执行“\q”命令退出数据库。

    3.  执行如下命令设置成默认值60。

        > [图片上传失败...(image-875bea-1699185015177)]
        > 
        >   **说明:** 不建议设置为0,即使需要设置也要将所有openGauss节点中的password_reuse_time都设置为0才能生效。
gs_guc reload -N all -I all -c "password_reuse_time=60"
    配置password_reuse_max参数。

    1.  使用如下命令连接数据库。
gsql -d postgres -p 8000
        postgres为需要连接的数据库名称,8000为数据库主节点的端口号。

        连接成功后,系统显示类似如下信息:
gsql ((openGauss x.x.x build 50dc16a6) compiled at 2020-11-29 05:49:21 commit 1071 last mr 1373)
            Non-SSL connection (SSL connection is recommended when requiring high-security)
            Type "help" for help.
            
            openGauss=#
    2.  查看已配置的参数。
openGauss=# SHOW password_reuse_max;
            password_reuse_max
            --------------------
            0
            (1 row)
        如果显示结果不为0,执行“\q”命令退出数据库。

    3.  执行如下命令设置成默认值0。
gs_guc reload -N all -I all -c "password_reuse_max = 0"
*   密码有效期限

    数据库用户的密码都有密码有效期(password_effect_time),当达到密码到期提醒天数(password_notify_time)时,系统会在用户登录数据库时提示用户修改密码。

    > [图片上传失败...(image-56503c-1699185015179)]
    > 
    >   **说明:** 考虑到数据库使用特殊性及业务连续性,密码过期后用户还可以登录数据库,但是每次登录都会提示修改密码,直至修改为止。

    配置password_effect_time参数。

    1.  使用如下命令连接数据库。
gsql -d postgres -p 8000
        postgres为需要连接的数据库名称,8000为数据库主节点的端口号。

        连接成功后,系统显示类似如下信息:
gsql ((openGauss x.x.x build 50dc16a6) compiled at 2020-11-29 05:49:21 commit 1071 last mr 1373)
            Non-SSL connection (SSL connection is recommended when requiring high-security)
            Type "help" for help.
            
            openGauss=#
    2.  查看已配置的参数。
openGauss=# SHOW password_effect_time;
             password_effect_time
            ----------------------
             90
            (1 row)
        如果显示结果不为90,执行“\q”命令退出数据库。

    3.  执行如下命令设置成默认值90(不建议设置为0)。
gs_guc reload -N all -I all -c "password_effect_time = 90"
    配置password_notify_time参数。

    1.  使用如下命令连接数据库。
gsql -d postgres -p 8000
        postgres为需要连接的数据库名称,8000为数据库主节点的端口号。

        连接成功后,系统显示类似如下信息:
gsql ((openGauss x.x.x build 50dc16a6) compiled at 2020-11-29 05:49:21 commit 1071 last mr 1373)
            Non-SSL connection (SSL connection is recommended when requiring high-security)
            Type "help" for help.
            
            openGauss=#
    2.  查看已配置的参数。
openGauss=# SHOW password_notify_time;
            password_notify_time
            ----------------------
            7
            (1 row)
    3.  如果显示结果不为7,执行如下命令设置成默认值7(不建议设置为0)。
gs_guc reload -N all -I all -c "password_notify_time = 7"
*   密码修改

    *   在安装数据库时,会新建一个和初始化用户重名的操作系统用户,为了保证帐户安全,请定期修改操作系统用户的密码。

        以修改用户user1密码为例,命令格式如下:
passwd user1
        根据提示信息完成修改密码操作。

    *   建议系统管理员和普通用户都要定期修改自己的帐户密码,避免帐户密码被非法窃取。

        以修改用户user1密码为例,以系统管理员用户连接数据库并执行如下命令:
openGauss=# ALTER USER user1 IDENTIFIED BY "$$$$" REPLACE "XXXXXXXX";
            ALTER ROLE
        > [图片上传失败...(image-e76012-1699185015177)]
        > 
        >   **说明:** $$$$$$$$、XXXXXXXX分别代表用户user1的新密码和原始密码,这些密码要符合规则,否则会执行失败。

    *   管理员可以修改自己的或者其他帐户的密码。通过修改其他帐户的密码,解决用户密码遗失所造成无法登录的问题。

        以修改用户joe帐户密码为例,命令格式如下:
openGauss=# ALTER USER joe IDENTIFIED BY "abc@1234";
            ALTER ROLE
        > [图片上传失败...(image-1cd956-1699185015177)]
        > 
        >   **说明:**
        > 
        > *   系统管理员之间不允许互相修改对方密码。
        >     
        >     
        > *   系统管理员可以修改普通用户密码且不需要用户原密码。
        >     
        >     
        > *   系统管理员修改自己密码但需要管理员原密码。

*   密码验证

    设置当前会话的用户和角色时,需要验证密码。如果输入密码与用户的存储密码不一致,则会报错。

    以设置用户joe为例,命令格式如下:
openGauss=# SET ROLE joe PASSWORD "abc@1234";
        ERROR:  Invalid username/password,set role denied.
**表 1** 特殊字符

| 编号 | 字符 | 编号 | 字符 | 编号 | 字符 | 编号 | 字符 |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | ~ | 9 | * | 17 | | | 25 | < |
| 2 | ! | 10 | ( | 18 | [ | 26 | . |
| 3 | @ | 11 | ) | 19 | { | 27 | > |
| 4 | # | 12 | - | 20 | } | 28 | / |
| 5 | $ | 13 | _ | 21 | ] | 29 | ? |
| 6 | % | 14 | = | 22 | ; | - | - |
| 7 | ^ | 15 | + | 23 | : | - | - |
| 8 | & | 16 | \ | 24 | , | - | - |

**表 2** 不可重用天数和不可重用次数参数说明

| 参数 | 取值范围 | 配置说明 |
| --- | --- | --- |
| 不可重用天数(password_reuse_time) | 正数或0,其中整数部分表示天数,小数部分可以换算成时,分,秒。默认值为60。 | 如果参数变小,则后续修改密码按新的参数进行检查。如果参数变大(比如由a变大为b),因为b天之前的历史密码可能已经删除,所以b天之前的密码仍有可能被重用。则后续修改密码按新的参数进行检查。说明:时间以绝对时间为准,历史密码记录的都是当时的时间,不识别时间的修改。 |
| 不可重用次数(password_reuse_max) | 正整数或0。默认值为0,表示不检查重用次数。 | 如果参数变小,则后续修改密码按新的参数进行检查。如果参数变大(比如由a变大为b),因为b次之前的历史密码可能已经删除,所以b次之前的密码仍有可能被重用。则后续修改密码按新的参数进行检查。 |
  1. 设置用户密码失效。

    具有CREATEROLE权限的用户在创建用户时可以强制用户密码失效,新用户首次登陆数据库后需要修改密码才允许执行其他查询操作,命令格式如下:

openGauss=# CREATE USER joe PASSWORD "abc@1234" EXPIRED;
    CREATE ROLE
具有CREATEROLE权限的用户可以强制用户密码失效或者强制修改密码且失效,命令格式如下:
openGauss=# ALTER USER joe PASSWORD EXPIRED;
    ALTER ROLE
openGauss=# ALTER USER joe PASSWORD "abc@2345" EXPIRED;
    ALTER ROLE
> [图片上传失败...(image-4c16fa-1699185015181)]
> 
>   **说明:**
> 
> *   密码失效的用户登录数据库后,当执行简单查询或者扩展查询时,会提示用户修改密码。修改密码后可以正常执行语句。
>     
>     
> *   只有初始用户、系统管理员(sysadmin)或拥有创建用户(CREATEROLE)权限的用户才可以设置用户密码失效,其中系统管理员也可以设置自己或其他系统管理员密码失效。不允许设置初始用户密码失效。

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

image.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352

推荐阅读更多精彩内容