安全和认证(postgresql.conf)
介绍设置客户端和服务器的安全认证方式的相关参数。
authentication_timeout
参数说明:完成客户端认证的最长时间。如果一个客户端没有在这段时间里完成与服务器端的认证,则服务器自动中断与客户端的连接,这样就避免了出问题的客户端无限制地占用连接数。
参数类型:SIGHUP
取值范围:整型,1~600,最小单位为秒(s)。
默认值:1min
session_timeout
参数说明:表明与服务器建立连接后,不进行任何操作的最长时间。
参数类型:USERSET
取值范围:整型,0-86400,最小单位为秒(s),0表示关闭超时设置。
默认值:10min
- GaussDB(DWS) gsql客户端中有自动重连机制,所以针对初始化用户本地连接,超时后gsql表现的现象为断开后重连。
- pooler连接池到其它CN和DN的连接,不受session_timeout参数控制。
ssl_ciphers
参数说明:指定SSL支持的加密算法列表。
参数类型:POSTMASTER
取值范围:字符串,如果指定多个加密算法,加密算法之间需要以分号分割。
默认值:ALL
- 配置参数ssl_ciphers的默认值为ALL,表示支持下列所有加密算法。如果对加密算法没有特殊要求,建议用户使用该默认值。
- TLS1_3_RFC_AES_128_GCM_SHA256
- TLS1_3_RFC_AES_256_GCM_SHA384
- TLS1_3_RFC_CHACHA20_POLY1305_SHA256
- TLS1_3_RFC_AES_128_CCM_SHA256
- TLS1_3_RFC_AES_128_CCM_8_SHA256
- SSL连接认证目前只支持配置标准协议TLS1.3的加密算法,TLS1.3的性能更优、安全性更好。同时也兼容与标准协议TLS1.2的客户端之间的SSL连接认证。
ssl_renegotiation_limit
参数说明:指定在会话密钥重新协商之前,通过SSL加密通道可以传输的流量。这个重新协商流量限制机制可以减少攻击者针对大量数据使用密码分析法破解密钥的几率,但是也带来较大的性能损失。流量是指发送和接受的流量总和。
参数类型:USERSET
参数建议保持默认设置,即禁用重协商机制。不建议通过gs_guc工具或其他方式直接在postgresql.conf文件中设置ssl_renegotiation_limit参数,即使设置也不会生效。
取值范围:整型,0~INT_MAX,单位为KB。其中0表示禁用重新协商机制。
默认值:0
password_policy
参数说明:在使用CREATE ROLE/USER或者ALTER ROLE/USER命令创建或者修改GaussDB(DWS)账户时,该参数决定是否进行密码复杂度检查。
参数类型:SIGHUP
从安全性考虑,请勿关闭密码复杂度策略。
取值范围:整型,0、1
- 0表示不采用任何密码复杂度策略。
- 1表示采用默认密码复杂度校验策略。
默认值:1
password_reuse_time
参数说明:在使用ALTER USER或者ALTER ROLE修改用户密码时,该参数指定是否对新密码进行可重用天数检查。
参数类型:SIGHUP
修改密码时会检查配置参数password_reuse_time和password_reuse_max。
- 当password_reuse_time和password_reuse_max都为正数时,只要满足其中任一个,即可认为密码可以重用。
- 当password_reuse_time为0时,表示不限制密码重用天数,仅限制密码重用次数。
- 当password_reuse_max为0时,表示不限制密码重用次数,仅限制密码重用天数。
- 当password_reuse_time和password_reuse_max都为0时,表示不对密码重用进行限制。
取值范围:浮点型,0~3650,单位为天。
- 0表示不检查密码可重用天数。
- 正数表示新密码不能为该值指定的天数内使用过的密码。
默认值:60
password_reuse_max
参数说明:在使用ALTER USER或者ALTER ROLE修改用户密码时,该参数指定是否对新密码进行可重用次数检查。
参数类型:SIGHUP
修改密码时会检查配置参数password_reuse_time和password_reuse_max。
- 当password_reuse_time和password_reuse_max都为正数时,只要满足其中任一个,即可认为密码可以重用。
- 当password_reuse_time为0时,表示不限制密码重用天数,仅限制密码重用次数。
- 当password_reuse_max为0时,表示不限制密码重用次数,仅限制密码重用天数。
- 当password_reuse_time和password_reuse_max都为0时,表示不对密码重用进行限制。
取值范围:整型,0~1000
- 0表示不检查密码可重用次数。
- 正整数表示新密码不能为该值指定的次数内使用过的密码。
默认值:0
password_lock_time
参数说明:该参数指定账户被锁定后自动解锁的时间。
参数类型:SIGHUP
- password_lock_time和failed_login_attempts必须都为正数时锁定和解锁功能才能生效。
- 参数password_lock_time的整数部分表示天数,小数部分可以换算成时、分、秒。
取值范围:浮点型,0~365,单位为天。
- 0表示密码验证失败时,自动锁定功能不生效。
- 正数表示账户被锁定后,当锁定时间超过password_lock_time设定的值时,账户将会被自行解锁。
默认值:1
failed_login_attempts
参数说明:在任意时候,如果输入密码错误的次数达到failed_login_attempts则当前账户被锁定,password_lock_time秒后被自动解锁。 例如,登录时输入密码失败,ALTER USER时修改密码失败等。
参数类型:SIGHUP
取值范围:整型,0~1000
- 0表示自动锁定功能不生效。
- 正整数表示当错误密码次数达到failed_login_attempts设定的值时,当前账户将被锁定。
默认值:10
- failed_login_attempts和password_lock_time必须都为正数时锁定和解锁功能才能生效。
- failed_login_attempts会与客户端SSL连接模式共同决定用户的密码错误次数。当PGSSLMODE取值是allow或prefer时,客户的一次密码连接请求会生成两次连接请求:一次是尝试SSL连接,另一次是尝试非SSL连接。此时,用户感知到的密码错误次数是failed_login_attempts除以2。
password_encryption_type
参数说明:该字段决定采用何种加密方式对用户密码进行加密存储。
参数类型:SIGHUP
取值范围:整型,0、1、2
取值 |
密码存储格式 |
支持使用驱动 |
---|---|---|
0 |
采用MD5方式对密码加密,密码存储方式为MD5加密后密文。 |
支持GaussDB自研驱动及开源驱动。 |
1 |
采用SHA256方式对密码加密,兼容postgres客户端的MD5用户认证方式。 密码存储方式为MD5+SHA256综合后的密文。 |
支持GaussDB自研驱动及开源驱动。 |
2 |
采用SHA256方式对密码加密,密码存储方式为SHA256加密后密文。 |
支持GaussDB自研驱动。 |
- MD5为不安全的加密算法,不建议用户使用。
- 在password_encryption_type参数值为2时创建的用户,密码已使用SHA256算法保存,此时切换参数值并不会改变数据库内的密码存储方式,因此,这种情况下若使用MD5的开源客户端可能仍无法连接。
- password_encryption_type参数值为1时,pg_hba认证方式设置为MD5或者SHA256都会进行两种加密方式的判断,确保功能兼容。
默认值:1
password_min_length
参数说明:该字段决定账户密码的最小长度。
参数类型:SIGHUP
取值范围:整型,6~999
默认值:8
password_max_length
参数说明:该字段决定账户密码的最大长度。
参数类型:SIGHUP
取值范围:整型,6~999
默认值:32
password_min_uppercase
参数说明:该字段决定账户密码中至少需要包含大写字母个数。
参数类型:SIGHUP
取值范围:整型,0~999
- 0表示没有限制。
- 1~999表示创建账户所指定的密码中至少需要包含大写字母个数。
默认值:0
password_min_lowercase
参数说明:该字段决定账户密码中至少需要包含小写字母的个数。
参数类型:SIGHUP
取值范围:整型,0~999
- 0表示没有限制。
- 1~999表示创建账户所指定的密码中至少需要包含小写字母个数。
默认值:0
password_min_digital
参数说明:该字段决定账户密码中至少需要包含数字的个数。
参数类型:SIGHUP
取值范围:整型,0~999
- 0表示没有限制。
- 1~999表示创建账户所指定的密码中至少需要包含数字个数。
默认值:0
password_min_special
参数说明:该字段决定账户密码中至少需要包含特殊字符个数。
参数类型:SIGHUP
取值范围:整型,0~999
- 0表示没有限制。
- 1~999表示创建账户所指定的密码中至少需要包含特殊字符个数。
默认值:0
编号 |
字符 |
编号 |
字符 |
编号 |
字符 |
编号 |
字符 |
---|---|---|---|---|---|---|---|
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 |
, |
- |
- |
password_effect_time
参数说明:该字段决定账户密码的有效时间。
参数类型:SIGHUP
取值范围:浮点型,0~999,单位为天。
- 0表示不开启有效期限制功能。
- 1~999表示创建账户所指定的密码有效期,临近或超过有效期系统会提示用户修改密码。
默认值:90
password_notify_time
参数说明:该字段决定账户密码到期前提醒的天数。
参数类型:SIGHUP
取值范围:整型,0~999,单位为天。
- 0表示不开启提醒功能。
- 1~999表示账户密码到期前提醒的天数。
默认值:7