VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

设置安全策略

设置帐户安全策略

背景信息

Vastbase为帐户提供了自动锁定和解锁帐户、手动锁定和解锁异常帐户和删除不再使用的帐户等一系列的安全措施,保证数据安全。

自动锁定和解锁帐户

  • 为了保证帐户安全,如果用户输入密码次数超过一定次数(failed_login_attempts),系统将自动锁定该帐户,默认值5。次数设置越小越安全,但是在使用过程中会带来不便。

  • 当帐户被锁定时间超过设定值(password_lock_time),则当前帐户自动解锁,默认值为1440分钟(即1天)。时间设置越长越安全,但是在使用过程中会带来不便。

说明
  • 取值范围:整型,最小值为1,最大值为525600,单位为分钟,整数部分表示分钟。
  • 这两个参数的默认值都符合安全标准,用户可以根据需要重新设置参数,提高安全等级。建议用户使用默认值。

配置failed_login_attempts参数。

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

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

vsql -d vastbase -p 5432

vastbase为需要连接的数据库名称,5432为数据库主节点的端口号。

连接成功后,系统显示类似如下信息:

vsql ((Vastbase 1.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 
Non-SSL connection (SSL connection is recommended when requiring high-security) 
Type "help" for help. 
 
vastbase=# 

3.查看已配置的参数。

vastbase=# SHOW failed_login_attempts; 
 failed_login_attempts 
----------------------- 
 5 
(1 row)

如果显示结果不为5,执行”\q”命令退出数据库。

4.执行如下命令设置成默认值5。

vastbase=# alter system set failed_login_attempts=5;

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

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

vsql -d vastbase -p 5432

vastbase为需要连接的数据库名称,5432为数据库主节点的端口号。

连接成功后,系统显示类似如下信息:

vsql ((Vastbase 1.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 
Non-SSL connection (SSL connection is recommended when requiring high-security) 
Type "help" for help. 
 
vastbase=#

7.查看已配置的参数。

vastbase=# SHOW password_lock_time; 
 password_lock_time 
----------------------- 
 1 
(1 row)

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

8.执行如下命令设置成默认值1。

vastbase=# alter system set password_lock_time=1;

手动锁定和解锁帐户

若管理员发现某帐户被盗、非法访问等异常情况,可手动锁定该帐户。

当管理员认为帐户恢复正常后,可手动解锁该帐户。

以手动锁定和解锁用户joe为例,用户的创建请参见5.2.4用户,命令格式如下:

  • 手动锁定

    vastbase=# ALTER USER joe ACCOUNT LOCK; 
    ALTER ROLE
    
  • 手动解锁

    vastbase=# ALTER USER joe ACCOUNT UNLOCK; 
    ALTER ROLE
    

删除不再使用的帐户

当确认帐户不再使用,管理员可以删除帐户。该操作不可恢复。

当删除的用户正处于活动状态时,此会话状态不会立马断开,用户在会话状态断开后才会被完全删除。

以删除帐户joe为例,命令格式如下:

vastbase=# DROP USER joe  CASCADE; 
DROP ROLE

设置帐号有效期

注意事项

创建新用户时,需要限制用户的操作期限(有效开始时间和有效结束时间)。

不在有效操作期内的用户需要重新设定帐号的有效操作期。

操作步骤

步骤1 以操作系统用户vastbase登录数据库主节点。

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

vsql -d vastbase -p 5432

vastbase为需要连接的数据库名称,5432为数据库主节点的端口号。

连接成功后,系统显示类似如下信息:

vsql ((Vastbase 1.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 
Non-SSL connection (SSL connection is recommended when requiring high-security) 
Type "help" for help. 
 
vastbase=# 

步骤3 创建用户并制定用户的有效开始时间和有效结束时间。

 vastbase=# **CREATE USER** *joe* **WITH PASSWORD
 '***Bigdata@123***' VALID BEGIN '***2015-10-10 08:00:00***' VALID
 UNTIL '***2016-10-10 08:00:00***';**

显示如下信息表示创建用户成功。

 CREATE ROLE

步骤4 用户已不在有效使用期内,需要重新设定帐号的有效期,这包括有效开始时间和有效结束时间。

vastbase=# CREATE USER joe WITH PASSWORD 'Bigdata@123' VALID BEGIN '2015-10-10 08:00:00' VALID UNTIL '2016-10-10 08:00:00';

显示如下信息表示重新设定成功。

说明
若在”CREATE ROLE”或”ALTER ROLE”语法中不指定”VALID BEGIN”,表示不对用户的开始操作时间做限定;若不指定”VALID UNTIL”,表示不对用户的结束操作时间做限定;若两者均不指定,表示该用户一直有效。

设置密码安全策略

操作步骤

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

  • 当参数password_encryption_type设置为0时,表示采用md5方式对密码加密。md5为不安全的加密算法,不建议使用。

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

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

步骤1 以操作系统用户vastbase登录数据库主节点。

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

vsql -d vastbase -p 5432

vastbase为需要连接的数据库名称,5432为数据库主节点的端口号。

连接成功后,系统显示类似如下信息:

vsql ((Vastbase 1.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 
Non-SSL connection (SSL connection is recommended when requiring high-security) 
Type "help" for help. 
 
vastbase=# 

步骤3 查看已配置的加密算法。

vastbase=# SHOW password_encryption_type; 
 password_encryption_type 
-------------------------- 
 1 
(1 row)

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

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

vastbase=# alter system set password_encryption_type=1;

为防止用户密码泄露,在执行CREATE USER/ROLE命令创建数据库用户时,不能指定UNENCRYPTED属性,即新创建的用户的密码只能是加密存储的。

步骤5 配置密码安全参数。

  • 密码复杂度

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

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

    • 参数password_policy设置为0时表示不采用任何密码复杂度校验,设置为0会存在安全风险,不建议设置为0,即使需要设置也要将所有Vastbase节点中的password_policy都设置为0才能生效。

配置password_policy参数。

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

vsql -d vastbase -p 5432

vastbase为需要连接的数据库名称,5432为数据库主节点的端口号。

连接成功后,系统显示类似如下信息:

vsql ((Vastbase 2.2.0 build ) compiled at 2021-01-26 19:22:33 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security) 
Type "help" for help. 
 
vastbase=# 

b. 查看已配置的参数。

vastbase=# SHOW password_policy; 
 password_policy 
--------------------- 
 1 
(1 row)

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

c. 执行如下命令设置成默认值1。

vastbase=# alter system set password_policy=1

帐户密码的复杂度要求如下:

  • 包含大写字母(A-Z)的最少个数(password_min_uppercase)

  • 包含小写字母(a-z)的最少个数(password_min_lowercase)

  • 包含数字(0-9)的最少个数(password_min_digital)

  • 包含特殊字符的最少个数(password_min_special)(特殊字符的列表请参见表5-15)

  • 密码的最小长度(password_min_length)

  • 密码的最大长度(password_max_length)

  • 至少包含上述四类字符中的三类。

  • 不能和用户名、用户名倒写相同,本要求为非大小写敏感。

  • 不能和当前密码、当前密码的倒写相同。

  • 密码重用

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

说明
不可重用天数默认值为90天,不可重用次数默认值是3。这两个参数值越大越安全,但是在使用过程中会带来不便,其默认值符合安全标准,用户可以根据需要重新设置参数,提高安全等级。

配置password_reuse_time参数。

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

vsql -d vastbase -p 5432

vastbase为需要连接的数据库名称,5432为数据库主节点的端口号。

连接成功后,系统显示类似如下信息:

vsql ((Vastbase 2.2.0 build ) compiled at 2021-01-26 19:22:33 commit 0 last mr  ) 
Non-SSL connection (SSL connection is recommended when requiring high-security) 
Type "help" for help. 
 
vastbase=# 

b. 查看已配置的参数。

vastbase=# SHOW password_reuse_time; 
 password_reuse_time 
--------------------- 
 90 
(1 row)

如果显示结果不为90,执行”\q”命令退出数据库。

c. 执行如下命令设置成默认值90。

vastbase=# alter system set password_reuse_time=90

说明
建议设置为0,即使需要设置也要将所有Vastbase节点中的password_reuse_time都设置为0才能生效。

配置password_reuse_max参数。

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

vsql -d vastbase -p 5432

vastbase为需要连接的数据库名称,5432为数据库主节点的端口号。

连接成功后,系统显示类似如下信息:

vsql ((Vastbase 2.2.0 build ) compiled at 2021-01-26 19:22:33 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security) 
Type "help" for help. 
 
vastbase=# 

b. 查看已配置的参数。

vastbase=# SHOW password_reuse_max; 
 password_reuse_max 
-------------------- 
 3
(1 row)

如果显示结果不为3,执行”\q”命令退出数据库。

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

vastbase=# alter system set password_reuse_max = 3
  • 密码有效期限

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

说明
考虑到数据库使用特殊性及业务连续性,密码过期后用户还可以登录数据库,但是每次登录都会提示修改密码,直至修改为止。

配置password_effect_time参数。

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

vsql -d vastbase -p 5432

vastbase为需要连接的数据库名称,5432为数据库主节点的端口号。

连接成功后,系统显示类似如下信息:

vsql ((Vastbase 2.2.0 build ) compiled at 2021-01-26 19:22:33 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security) 
Type "help" for help. 
 
vastbase=# 

b. 查看已配置的参数。

vastbase=# SHOW password_effect_time; 
 password_effect_time 
---------------------- 
 90 
(1 row)

如果显示结果不为90,执行”\q”命令退出数据库。

c. 执行如下命令设置成默认值90(不建议设置为0)。

vastbase=# alter system set password_effect_time = 90

配置password_notify_time参数。

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

vsql -d vastbase -p 5432

vastbase为需要连接的数据库名称,5432为数据库主节点的端口号。

连接成功后,系统显示类似如下信息:

vsql ((Vastbase 2.2.0 build ) compiled at 2021-01-26 19:22:33 commit 0 last mr  ) 
Non-SSL connection (SSL connection is recommended when requiring high-security) 
Type "help" for help. 
 
vastbase=# 

b. 查看已配置的参数。

vastbase=# SHOW password_notify_time; 
 password_notify_time 
---------------------- 
 7 
(1 row)

c. 如果显示结果不为7,执行如下命令设置成默认值7(不建议设置为0)。

vastbase=# alter system set password_notify_time = 7;
  • 密码修改

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

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

passwd user1

根据提示信息完成修改密码操作。

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

以修改用户user1密码为例,以系统管理员用户连接数据库并执行如下命令:

vastbase=# ALTER USER user1 IDENTIFIED BY "1234@abc" REPLACE "5678@def"; 
ALTER ROLE

说明
1234@abc、5678@def分别代表用户user1的新密码和原始密码,这些密码要符合规则,否则会执行失败。

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

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

vastbase=# ALTER USER joe IDENTIFIED BY "abc@1234"; 
ALTER ROLE
说明
  • 系统管理员之间不允许互相修改对方密码。
  • 系统管理员可以修改普通用户密码且不需要用户原密码。
  • 系统管理员修改自己密码但需要管理员原密码。
  • 密码验证

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

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

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

表5-15 特殊字符

编号 字符 编号 字符 编号 字符 编号 字符
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 - -

表5-16 不可重用天数和不可重用次数参数说明

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