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=# 
    
  3. 查看已配置的加密算法。

    openGauss=# SHOW password_encryption_type;
     password_encryption_type
    --------------------------
     2
    (1 row)
    

    如果显示结果为0或1,执行“\q”命令退出数据库。

  4. 执行如下命令将其设置为安全的加密算法。

    gs_guc reload -N all -I all -c "password_encryption_type=2"
    
  5. 配置密码安全参数。

    • 密码复杂度

      初始化数据库、创建用户、修改用户时需要指定密码。密码必须要符合复杂度(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"
        
    • 密码重用

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

      配置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。

        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)时,系统会在用户登录数据库时提示用户修改密码。

      配置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
        
      • 管理员可以修改自己的或者其他帐户的密码。通过修改其他帐户的密码,解决用户密码遗失所造成无法登录的问题。

        以修改用户joe帐户密码为例,命令格式如下:

        openGauss=# ALTER USER joe IDENTIFIED BY "abc@1234";
        ALTER ROLE
        
    • 密码验证

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

      以设置用户joe为例,命令格式如下:

      openGauss=# SET ROLE joe PASSWORD "abc@1234";
      ERROR:  Invalid username/password,set role denied.
      

    表 1 特殊字符

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

  6. 设置用户密码失效。

    具有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
    

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

11-06 05:21