安全函数
gs_encrypt_aes128(encryptstr,keystr)
描述:以keystr为密钥对encryptstr字符串进行加密,返回加密后的字符串。keystr的长度范围为8~16字节,至少包含3种字符(大写字母、小写字母、数字、特殊字符)。
返回值类型:text
返回值长度:至少为92字节,不超过
4*[(Len+68)/3]
字节,其中Len为加密前数据长度(单位为字节)。示例:
SELECT gs_encrypt_aes128('MPPDB','Asdf1234');
返回结果为:
gs_encrypt_aes128 ---------------------------------------------------------------------------------------------- 4Xfex6fw5K/yqVZSRXkhSbrEDbQgAIcLImYLyi4AzG2wsROaPXXDDmVnhB1GVtbZAp0PE4OPgGFy9UcR8XsQjyjPyiU= (1 row)
由于该函数的执行过程需要传入解密口令,为了安全起见,vsql工具不会将该函数记录入执行历史。即无法在vsql里通过上下翻页功能找到该函数的执行历史。
gs_encrypt(encryptstr,keystr,encrypttype)
描述:根据encrypttype,以keystr为密钥对encryptstr字符串进行加密,返回加密后的字符串。keystr的长度范围为8~16字节,至少包含3种字符(大写字母、小写字母、数字、特殊字符),encrypttype可以是aes128或sm4。
返回值类型:text
示例:
SELECT gs_encrypt('MPPDB','Asdf1234','sm4');
返回结果为:
gs_encrypt ------------------------------ rfGFRM5cTNL/Y2yDoE/8XqxODM8T (1 row)
由于该函数的执行过程需要传入解密口令,为了安全起见,vsql工具不会将该函数记录入执行历史。即无法在vsql里通过上下翻页功能找到该函数的执行历史。
gs_decrypt_aes128(decryptstr,keystr)
描述:以keystr为密钥对decrypt字符串进行解密,返回解密后的字符串。解密使用的keystr必须保证与加密时使用的keystr一致才能正常解密。keystr不得为空。
此参数需要结合gs_encrypt_aes128加密函数共同使用。
返回值类型:text
示例:
SELECT gs_decrypt_aes128('4Xfex6fw5K/yqVZSRXkhSbrEDbQgAIcLImYLyi4AzG2wsROaPXXDDmVnhB1GVtbZAp0PE4OPgGFy9UcR8XsQjyjPyiU=','Asdf1234');
返回结果为:
gs_decrypt_aes128 ------------------- MPPDB (1 row)
由于该函数的执行过程需要传入解密口令,为了安全起见,vsql工具不会将该函数记录入执行历史;即无法在vsql里通过上下翻页功能找到该函数的执行历史。
gs_decrypt(decryptstr,keystr,decrypttype)
描述:根据decrypttype,以keystr为密钥对decrypt字符串进行解密,返回解密后的字符串。解密使用的decrypttype及keystr必须保证与加密时使用的encrypttype及keystr一致才能正常解密。keystr不得为空。decrypttype可以是aes128或sm4。
此函数需要结合gs_encrypt加密函数共同使用。
返回值类型:text
示例:
select gs_decrypt('ZBzOmaGA4Bb+coyucJ0B8AkIShqc','Asdf1234','sm4');
返回结果为:
gs_decrypt -------------- MPPDB (1 row)
由于该函数的执行过程需要传入解密口令,为了安全起见,vsql工具不会将该函数记录入执行历史;即无法在vsql里通过上下翻页功能找到该函数的执行历史。
gs_password_deadline
描述:显示当前帐户密码离过期还距离多少天。
返回值类型:interval
示例:
SELECT gs_password_deadline();
返回结果为:
gs_password_deadline --------------------------- 83 days 17:44:32.196094 (1 row)
gs_password_notifytime
描述:显示帐户密码到期前提醒的天数。
返回值类型:int32
示例:
SELECT gs_password_notifytime();
返回结果为:
gs_password_notifytime ------------------------ 7 (1 row)
login_audit_messages
描述:查看登录用户的登录信息。
返回值类型:元组
示例:
查看上一次登录认证通过的日期、时间和IP等信息。
select * from login_audit_messages(true);
返回结果为:
username | database | logintime | mytype | result | client_conninfo ---------+----------+------------------------+---------------+--------+------------------- vastbase | vastbase | 2020-06-29 21:56:40+08 | login_success | ok | gs_clean@::@SSL_OFF (1 row)
查看上一次登录认证失败的日期、时间和IP等信息。
select * from login_audit_messages(false) ORDER BY logintime desc limit 1;
返回结果为:
username | database | logintime | mytype | result | client_conninfo ---------+----------+------------------------+--------------+--------+------------------- vastbase | vastbase | 2020-06-29 21:57:55+08 | login_failed | failed | gs_clean@::@SSL_OFF (1 row)
查看自从最后一次认证通过以来失败的尝试次数、日期和时间。
select * from login_audit_messages(false);
返回结果为:
username | database | logintime | mytype | result | client_conninfo -----------+----------+------------------------+--------------+--------+------------------- vastbase | vastbase | 2020-06-29 21:57:55+08 | login_failed | failed | gs_clean@::@SSL_OFF vastbase | vastbase | 2020-06-29 21:57:53+08 | login_failed | failed | gs_clean@::@SSL_OFF (2 rows)
login_audit_messages_pid
描述:查看登录用户的登录信息。与login_audit_messages的区别在于结果基于当前backendid向前查找。所以不会因为同一用户的后续登录,而影响本次登录的查询结果。也就是查询不到该用户后续登录的信息。
返回值类型:元组
查看上一次登录认证通过的日期、时间和IP等信息。
SELECT * FROM login_audit_messages_pid(true);
返回结果为:
username | database | logintime | mytype | result | client_conninfo | backendid ---------+----------+------------------------+---------------+--------+----------------------+----------------- vastbase | vastbase | 2020-06-29 21:56:40+08 | login_success | ok | gs_clean@::@SSL_OFF | 139823109633792 (1 row)
查看上一次登录失败通过的日期、时间和IP等信息。
SELECT * FROM login_audit_messages_pid(false) ORDER BY logintime desc limit 1;
返回结果为:
username | database | logintime | mytype | result | client_conninfo | backendid ---------+----------+------------------------+--------------+--------+-------------------+----------------- vastbase | vastbase | 2020-06-29 21:57:55+08 | login_failed | failed |gs_clean@::@SSL_OFF| 139823109633792 (1 row)
查看自从最后一次认证通过以来失败的尝试次数、日期和时间。
SELECT * FROM login_audit_messages_pid(false);
返回结果为:
username | database | logintime | mytype | result | client_conninfo | backendid ------------+----------+------------------------+--------------+--------+-------------------+----------------- vastbase | vastbase | 2020-06-29 21:57:55+08 | login_failed | failed |gs_clean@::@SSL_OFF| 139823109633792 vastbase | vastbase | 2020-06-29 21:57:53+08 | login_failed | failed |gs_clean@::@SSL_OFF| 139823109633792 (2 rows)
inet_server_addr
描述:显示服务器IP信息。
返回值类型:inet
示例:
SELECT inet_server_addr();
返回结果为:
inet_server_addr -------------------- 10.10.0.13 (1 row)
上面是以客户端在10.10.0.50上,服务器端在10.10.0.13上为例。
如果是通过本地连接,使用此接口显示为空。
inet_client_addr
描述:显示客户端IP信息。
返回值类型:inet
示例:
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
函数使用方法及示例请参考维护审计日志。
描述:用来计算输入字符串的SM3摘要。
返回值类型:SM3哈希值的十六进制字符串,长度固定为64。
示例:
select gs_sm3('abcdef');
返回结果为:
gs_sm3 ------------------------------------------------------------------ 5d60e23c9fe29b5e62517e144ad67541c6eb132c8926637b6393fe8d9b62b3bf (1 row)