安全函数
安全函数
- gs_encrypt_aes128(encryptstr,keystr)
描述:以keystr为加密口令对encryptstr字符串进行加密,返回加密后的字符串。keystr的长度范围为8~16字节,至少包含3种字符(大写字母、小写字母、数字、特殊字符)。
返回值类型:text
返回值长度:至少为92字节,不超过4*[(Len+68)/3]字节,其中Len为加密前数据长度(单位为字节)。
示例:
1 2 3 4 5 6
openGauss=# SELECT gs_encrypt_aes128('MPPDB','Asdf1234'); gs_encrypt_aes128 ------------------------------------------------------------------------------------- gwditQLQG8NhFw4OuoKhhQJoXojhFlYkjeG0aYdSCtLCnIUgkNwvYI04KbuhmcGZp8jWizBdR1vU9CspjuzI0lbz12A= (1 row)
由于该函数的执行过程需要传入加密口令,为了安全起见,gsql工具不会将包含该函数名字样的SQL记录入执行历史。即无法在gsql里通过上下翻页功能找到该函数的执行历史。
- gs_encrypt(encryptstr,keystr, encrypttype)
描述:根据encrypttype,以keystr为加密口令对encryptstr字符串进行加密,返回加密后的字符串。keystr的长度范围为8~16字节,至少包含3种字符(大写字母、小写字母、数字、特殊字符), encrypttype可以是aes128或sm4。
返回值类型:text
示例:
openGauss=# SELECT gs_encrypt('MPPDB','Asdf1234','sm4'); gs_encrypt ------------------------------ ZBzOmaGA4Bb+coyucJ0B8AkIShqc (1 row)
由于该函数的执行过程需要传入加密口令,为了安全起见,gsql工具不会将包含该函数名字样的SQL记录入执行历史。即无法在gsql里通过上下翻页功能找到该函数的执行历史。
- gs_decrypt_aes128(decryptstr,keystr)
描述:以keystr为解密口令对decrypt字符串进行解密,返回解密后的字符串。解密使用的keystr必须保证与加密时使用的keystr一致才能正常解密。keystr不得为空。
此参数需要结合gs_encrypt_aes128加密函数共同使用。
返回值类型:text
示例:
1 2 3 4 5
openGauss=# SELECT gs_decrypt_aes128('gwditQLQG8NhFw4OuoKhhQJoXojhFlYkjeG0aYdSCtLCnIUgkNwvYI04KbuhmcGZp8jWizBdR1vU9CspjuzI0lbz12A=','1234'); gs_decrypt_aes128 ------------------- MPPDB (1 row)
由于该函数的执行过程需要传入解密口令,为了安全起见,gsql工具不会将包含该函数名字样的SQL记录入执行历史;即无法在gsql里通过上下翻页功能找到该函数的执行历史。
- gs_decrypt(decryptstr,keystr,decrypttype)
描述:根据decrypttype,以keystr为解密口令对decrypt字符串进行解密,返回解密后的字符串。解密使用的decrypttype 及keystr必须保证与加密时使用的encrypttype 及keystr一致才能正常解密。keystr不得为空。decrypttype可以是aes128或sm4。
此函数需要结合gs_encrypt加密函数共同使用。
返回值类型:text
示例:
openGauss=# SELECT gs_decrypt('ZBzOmaGA4Bb+coyucJ0B8AkIShqc','Asdf1234','sm4'); gs_decrypt ------------ MPPDB (1 row)
由于该函数的执行过程需要传入解密口令,为了安全起见,gsql工具不会将包含该函数名字样的SQL记录入执行历史;即无法在gsql里通过上下翻页功能找到该函数的执行历史。
- gs_password_deadline()
返回值类型:interval
示例:
1 2 3 4 5
openGauss=# SELECT gs_password_deadline(); gs_password_deadline ------------------------- 83 days 17:44:32.196094 (1 row)
- gs_password_notifytime()
返回值类型:int32
- login_audit_messages(BOOLEAN)
返回值类型:元组
示例:
- 查看上一次登录成功的日期、时间和IP等信息。
1 2 3 4 5
openGauss=> SELECT * FROM login_audit_messages(true); username | database | logintime | mytype | result | client_conninfo ----------+----------+------------------------+---------------+--------+----------------- omm | openGauss | 2020-06-29 21:56:40+08 | login_success | ok | gsql@[local] (1 row)
- 查看自从上一次登录成功以来登录失败的尝试次数、日期和时间。
1 2 3 4 5 6
openGauss=> SELECT * FROM login_audit_messages(false); username | database | logintime | mytype | result | client_conninfo ----------+----------+------------------------+--------------+--------+------------------- omm | openGauss | 2020-06-29 21:57:55+08 | login_failed | failed | [unknown]@[local] omm | openGauss | 2020-06-29 21:57:53+08 | login_failed | failed | [unknown]@[local] (2 rows)
- 查看上一次登录成功的日期、时间和IP等信息。
- login_audit_messages_pid
描述:查看登录用户的登录信息。与login_audit_messages的区别在于结果基于当前backendid向前查找。所以不会因为同一用户的后续登录,而影响本次登录的查询结果。也就是查询不到该用户后续登录的信息。
返回值类型:元组
在开启线程池的情况下,由于线程切换,同一session中获取到的backendid可能会发生变化,因此会造成多次调用该函数返回值不一致的情况。不建议用户在开启线程池的情况下调用此函数。
示例:
- 查看上一次登录成功的日期、时间和IP等信息。
1 2 3 4 5
openGauss=> SELECT * FROM login_audit_messages_pid(true); username | database | logintime | mytype | result | client_conninfo | backendid ----------+----------+------------------------+---------------+--------+-----------------+----------------- omm | openGauss | 2020-06-29 21:56:40+08 | login_success | ok | gsql@[local] | 139823109633792 (1 row)
- 查看自从上一次登录成功以来登录失败的尝试次数、日期和时间。
1 2 3 4 5 6
openGauss=> SELECT * FROM login_audit_messages_pid(false); username | database | logintime | mytype | result | client_conninfo | backendid ----------+----------+------------------------+--------------+--------+-------------------+----------------- omm | openGauss | 2020-06-29 21:57:55+08 | login_failed | failed | [unknown]@[local] | 139823109633792 omm | openGauss | 2020-06-29 21:57:53+08 | login_failed | failed | [unknown]@[local] | 139823109633792 (2 rows)
- 查看上一次登录成功的日期、时间和IP等信息。
- inet_server_addr
返回值类型:inet
示例:
1 2 3 4 5
openGauss=# SELECT inet_server_addr(); inet_server_addr ------------------ 10.10.0.13 (1 row)
- 上面是以客户端在10.10.0.50上,服务器端在10.10.0.13上为例。
- 如果是通过本地连接,使用此接口显示为空。
- inet_client_addr
返回值类型:inet
示例:
1 2 3 4 5
openGauss=# SELECT inet_client_addr(); inet_client_addr ------------------ 10.10.0.50 (1 row)
- 上面是以客户端在10.10.0.50上,服务器端在10.10.0.13上为例。
- 如果是通过本地连接,使用此接口显示为空。
- pg_query_audit
返回值类型:record
函数返回字段如下:
名称
类型
描述
time
timestamp with time zone
操作时间
type
text
操作类型
result
text
操作结果
userid
oid
用户id
username
text
执行操作的用户名
database
text
数据库名称
client_conninfo
text
客户端连接信息
object_name
text
操作对象名称
detail_info
text
执行操作详细信息
node_name
text
节点名称
thread_id
text
线程id
local_port
text
本地端口
remote_port
text
远端端口
- pg_delete_audit
返回值类型:void
- alldigitsmasking
参数:col text, letter character default '0'
返回值类型:text
- creditcardmasking
参数:col text, letter character default 'x'
返回值类型:text
- randommasking
参数:col text
返回值类型:text
- fullemailmasking
描述:脱敏策略的内部函数,对出现最后一个'.'之前的文本(除'@'之外)进行脱敏。
参数:col text, letter character default 'x'
返回值类型:text
- basicemailmasking
描述:脱敏策略的内部函数,对出现第一个'@'之前的文本进行脱敏。
参数:col text, letter character default 'x'
返回值类型:text
- shufflemasking
参数:col text
返回值类型:text