合 openGauss设置安全策略
Tags: openGauss密码用户修改密码有效期解锁帐户安全策略
设置帐户安全策略
openGauss为帐户提供了自动锁定和解锁帐户、手动锁定和解锁异常帐户和删除不再使用的帐户等一系列的安全措施,保证数据安全。
自动锁定和解锁帐户
为了保证帐户安全,如果用户输入密码次数超过一定次数(failed_login_attempts),系统将自动锁定该帐户,默认值为10。次数设置越小越安全,但是在使用过程中会带来不便。
当帐户被锁定时间超过设定值(password_lock_time),则当前帐户自动解锁,默认值为1天。时间设置越长越安全,但是在使用过程中会带来不便。
说明:
- 参数password_lock_time的整数部分表示天数,小数部分可以换算成时、分、秒。
- 当failed_login_attempts设置为0时,表示不限制密码错误次数。当password_lock_time设置为0时,表示即使超过密码错误次数限制导致帐户锁定,也会在短时间内自动解锁。因此,只有两个配置参数都为正数时,才可以进行常规的密码失败检查、帐户锁定和解锁操作。
- 这两个参数的默认值都符合安全标准,用户可以根据需要重新设置参数,提高安全等级。建议用户使用默认值。
配置failed_login_attempts参数。
以操作系统用户omm登录数据库主节点。
使用如下命令连接数据库。
1gsql -d postgres -p 8000postgres为需要连接的数据库名称,8000为数据库主节点的端口号。
连接成功后,系统显示类似如下信息:
12345gsql ((openGauss 1.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131Non-SSL connection (SSL connection is recommended when requiring high-security)Type "help" for help.openGauss=#查看已配置的参数。
12345openGauss=# SHOW failed_login_attempts;failed_login_attempts-----------------------10(1 row)如果显示结果不为10,执行“\q”命令退出数据库。
执行如下命令设置成默认值10。
1gs_guc reload -D /gaussdb/data/dbnode -c "failed_login_attempts=10"
配置password_lock_time参数。
以操作系统用户omm登录数据库主节点。
使用如下命令连接数据库。
1gsql -d postgres -p 8000postgres为需要连接的数据库名称,8000为数据库主节点的端口号。
连接成功后,系统显示类似如下信息:
12345gsql ((openGauss 1.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131Non-SSL connection (SSL connection is recommended when requiring high-security)Type "help" for help.openGauss=#查看已配置的参数。
12345openGauss=# SHOW password_lock_time;password_lock_time-----------------------1(1 row)如果显示结果不为1,执行“\q”命令退出数据库。
执行如下命令设置成默认值1。
1gs_guc reload -N all -I all -c "password_lock_time=1"
手动锁定和解锁帐户
若管理员发现某帐户被盗、非法访问等异常情况,可手动锁定该帐户。
当管理员认为帐户恢复正常后,可手动解锁该帐户。
以手动锁定和解锁用户joe为例,用户的创建请参见用户,命令格式如下:
手动锁定
12openGauss=# ALTER USER joe ACCOUNT LOCK;ALTER ROLE手动解锁
12openGauss=# ALTER USER joe ACCOUNT UNLOCK;ALTER ROLE
删除不再使用的帐户
当确认帐户不再使用,管理员可以删除帐户。该操作不可恢复。
当删除的用户正处于活动状态时,此会话状态不会立马断开,用户在会话状态断开后才会被完全删除。
以删除帐户joe为例,命令格式如下:
1 2 | openGauss=# DROP USER joe CASCADE; DROP ROLE |
设置帐号有效期
注意事项
创建新用户时,需要限制用户的操作期限(有效开始时间和有效结束时间)。
不在有效操作期内的用户需要重新设定帐号的有效操作期。
操作步骤
以操作系统用户omm登录数据库主节点。
使用如下命令连接数据库。
1gsql -d postgres -p 8000postgres为需要连接的数据库名称,8000为数据库主节点的端口号。
连接成功后,系统显示类似如下信息:
12345gsql ((openGauss 1.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131Non-SSL connection (SSL connection is recommended when requiring high-security)Type "help" for help.openGauss=#创建用户并制定用户的有效开始时间和有效结束时间。
1CREATE USER joe WITH PASSWORD 'XXXXXXXXX' VALID BEGIN '2015-10-10 08:00:00' VALID UNTIL '2016-10-10 08:00:00';显示如下信息表示创建用户成功。
1CREATE ROLE用户已不在有效使用期内,需要重新设定帐号的有效期,这包括有效开始时间和有效结束时间。
1ALTER USER joe WITH VALID BEGIN '2016-11-10 08:00:00' VALID UNTIL '2017-11-10 08:00:00';显示如下信息表示重新设定成功。
1ALTER ROLE
说明:
若在“CREATE ROLE”或“ALTER ROLE”语法中不指定“VALID BEGIN”,表示不对用户的开始操作时间做限定;若不指定“VALID UNTIL”,表示不对用户的结束操作时间做限定;若两者均不指定,表示该用户一直有效。
设置密码安全策略
用户密码存储在系统表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方式对密码加密。
以操作系统用户omm登录数据库主节点。
使用如下命令连接数据库。
1gsql -d postgres -p 8000postgres为需要连接的数据库名称,8000为数据库主节点的端口号。
连接成功后,系统显示类似如下信息:
12345gsql ((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=#查看已配置的加密算法。
12345openGauss=# SHOW password_encryption_type;password_encryption_type--------------------------2(1 row)如果显示结果为0或1,执行“\q”命令退出数据库。
执行如下命令将其设置为安全的加密算法。
1gs_guc reload -N all -I all -c "password_encryption_type=2"须知: 为防止用户密码泄露,在执行CREATE USER/ROLE命令创建数据库用户时,不能指定UNENCRYPTED属性,即新创建的用户的密码只能是加密存储的。
配置密码安全参数。
密码复杂度
初始化数据库、创建用户、修改用户时需要指定密码。密码必须要符合复杂度(password_policy)的要求,否则会提示用户重新输入密码。
- 参数password_policy设置为1时表示采用密码复杂度校验,默认值。
- 参数password_policy设置为0时表示不采用任何密码复杂度校验,设置为0会存在安全风险,不建议设置为0,即使需要设置也要将所有openGauss节点中的password_policy都设置为0才能生效。
配置password_policy参数。
使用如下命令连接数据库。
1gsql -d postgres -p 8000postgres为需要连接的数据库名称,8000为数据库主节点的端口号。
连接成功后,系统显示类似如下信息:
12345gsql ((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=#查看已配置的参数。
12345openGauss=# SHOW password_policy;password_policy---------------------1(1 row)如果显示结果不为1,执行“\q”命令退出数据库。
执行如下命令设置成默认值1。
1gs_guc reload -N all -I all -c "password_policy=1"
说明:
帐户密码的复杂度要求如下:
本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!