设置帐户安全策略

背景信息

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

自动锁定和解锁帐户

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

    设置帐户安全策略 - 图1 说明:
    - 参数password_lock_time的整数部分表示天数,小数部分可以换算成时、分、秒。
    - 当failed_login_attempts设置为0时,表示不限制密码错误次数。当password_lock_time设置为0时,表示即使超过密码错误次数限制导致帐户锁定,也会在短时间内自动解锁。因此,只有两个配置参数都为正数时,才可以进行常规的密码失败检查、帐户锁定和解锁操作。
    - 这两个参数的默认值都符合安全标准,用户可以根据需要重新设置参数,提高安全等级。建议用户使用默认值。

配置failed_login_attempts参数。

  1. 以操作系统用户omm登录数据库主节点。
  2. 使用如下命令连接数据库。

    1. gsql -d postgres -p 8000

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

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

    1. gsql ((openGauss 1.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131
    2. Non-SSL connection (SSL connection is recommended when requiring high-security)
    3. Type "help" for help.
    4. postgres=#
  3. 查看已配置的参数。

    1. postgres=# SHOW failed_login_attempts;
    2. failed_login_attempts
    3. -----------------------
    4. 10
    5. (1 row)

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

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

    1. gs_guc reload -D /gaussdb/data/dbnode -c "failed_login_attempts=10"

配置password_lock_time参数。

  1. 以操作系统用户omm登录数据库主节点。
  2. 使用如下命令连接数据库。

    1. gsql -d postgres -p 8000

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

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

    1. gsql ((openGauss 1.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131
    2. Non-SSL connection (SSL connection is recommended when requiring high-security)
    3. Type "help" for help.
    4. postgres=#
  3. 查看已配置的参数。

    1. postgres=# SHOW password_lock_time;
    2. password_lock_time
    3. -----------------------
    4. 1
    5. (1 row)

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

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

    1. gs_guc reload -N all -I all -c "password_lock_time=1"

手动锁定和解锁帐户

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

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

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

  • 手动锁定

    1. postgres=# ALTER USER joe ACCOUNT LOCK;
    2. ALTER ROLE
  • 手动解锁

    1. postgres=# ALTER USER joe ACCOUNT UNLOCK;
    2. ALTER ROLE

删除不再使用的帐户

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

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

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

  1. postgres=# DROP USER joe CASCADE;
  2. DROP ROLE