安全函数
- gs_password_deadline()
描述:显示当前帐户距离密码过期的时间。密码过期后提示用户修改密码。与GUC参数password_effect_time相关。
返回值类型:interval
示例:
1 2 3 4 5
SELECT gs_password_deadline(); gs_password_deadline ------------------------- 83 days 17:44:32.196094 (1 row)
- gs_password_expiration()
描述:显示当前帐户距离密码过期的时间。密码过期后用户无法登录数据库。与创建用户的DDL语句PASSWORD EXPIRATION period相关,函数返回值大于等于-1,如果创建用户时未指定PASSWORD EXPIRATION period,该函数的缺省值为-1,表示没有过期限制。
返回值类型:interval
示例:
1 2 3 4 5
SELECT gs_password_expiration(); gs_password_expiration ------------------------- 29 days 23:59:49.731482 (1 row)
- login_audit_messages(flag boolean)
返回值类型:元组
示例:
- 查看上一次登录认证通过的日期、时间和IP等信息。
1 2 3 4 5
SELECT * FROM login_audit_messages(true); username | database | logintime | type | result | client_conninfo ------------+----------+------------------------+---------------+--------+-------------------- dbadmin | gaussdb | 2017-06-02 15:28:34+08 | login_success | ok | gsql@[local] (1 row)
- 查看上一次登录认证失败的日期、时间和IP等信息。
1 2 3 4
SELECT * FROM login_audit_messages(false) ORDER BY logintime desc limit 1; username | database | logintime | type | result | client_conninfo ------------+----------+------------------------+--------------+--------+------------------------- (0 rows)
- 查看自从最后一次认证通过以来失败的尝试次数、日期和时间。
1 2 3 4
SELECT * FROM login_audit_messages(false); username | database | logintime | type | result | client_conninfo ------------+----------+------------------------+--------------+--------+------------------------- (0 rows)
- 查看上一次登录认证通过的日期、时间和IP等信息。
- login_audit_messages_pid(flag boolean)
描述:查看登录用户的登录信息。与login_audit_messages的区别在于结果基于当前backendid向前查找。所以不会因为同一用户的后续登录,而影响本次登录的查询结果。也就是查询不到该用户后续登录的信息。
返回值类型:元组
示例:
- 查看上一次登录认证通过的日期、时间和IP等信息。
1 2 3 4 5
SELECT * FROM login_audit_messages_pid(true); username | database | logintime | type | result | client_conninfo | backendid ------------+----------+------------------------+---------------+--------+-------------------- dbadmin | gaussdb | 2017-06-02 15:28:34+08 | login_success | ok | gsql@[local] | 140311900702464 (1 row)
- 查看上一次登录认证失败的日期、时间和IP等信息。
1 2 3 4
SELECT * FROM login_audit_messages_pid(false) ORDER BY logintime desc limit 1; username | database | logintime | type | result | client_conninfo | backendid ------------+----------+------------------------+--------------+--------+------------------------- (0 rows)
- 查看自从最后一次认证通过以来失败的尝试次数、日期和时间。
1 2 3 4
SELECT * FROM login_audit_messages_pid(false); username | database | logintime | type | result | client_conninfo | backendid ------------+----------+------------------------+--------------+--------+------------------------- (0 rows)
- 查看上一次登录认证通过的日期、时间和IP等信息。
- pg_query_audit()
返回值类型:SETOF record
函数返回字段如下:
名称
类型
描述
begintime
timestamp with time zone
操作的执行开始时间。
endtime
timestamp with time zone
操作的执行结束时间。
operation_type
text
操作类型,具体类型见表1。
audit_type
text
审计类型,具体类型见表2。
result
text
操作结果。
username
text
执行操作的用户名。
database
text
数据库名称。
client_conninfo
text
客户端连接信息,即gsql,jdbc或odbc。
object_name
text
操作对象名称。
command_text
text
操作的执行命令。8.1.1之前的低版本集群该字段的审计内容包含在detail_info中。
detail_info
text
执行操作详细信息。
transaction_xid
text
事务ID。
query_id
text
查询ID。
node_name
text
节点名称。
thread_id
text
线程ID。
local_port
text
本地端口。
remote_port
text
远端端口。
表1 operation_type操作类型项 操作类型
描述
audit_switch
表示对用户打开和关闭审计日志操作场景进行审计。
login_logout
表示对用户登录和登出操作场景进行审计。
system
表示对系统的启停、实例切换操作场景进行审计。
sql_parse
表示对SQL语句解析场景进行审计。
user_lock
表示对用户锁定和解锁操作的场景进行审计。
grant_revoke
表示对用户权限授予和回收操作场景进行审计。
violation
表示对用户访问存在越权的场景进行审计。
ddl
表示对DDL操作场景进行审计,因为DDL操作会根据操作对象进行更细粒度控制,仍然沿用审计开关audit_system_object,即由audit_system_object控制对哪些对象的DDL操作进行审计(此处不配置ddl,只要配置了audit_system_object,审计也会生效)。
dml
表示对DML操作场景进行审计。
select
表示对select操作场景进行审计。
internal_event
表示对内部事件操作场景进行审计。
user_func
表示对用户自定义函数、存储过程、匿名块操作场景进行审计。
special_func
表示对特殊函数调用操作场景进行审计,特殊函数包括:pg_terminate_backend和pg_cancel_backend。
copy
表示对copy操作场景进行审计。
set
表示对set操作场景进行审计。
transaction
表示对事务操作场景进行审计。
vacuum
表示对vacuum操作场景进行审计。
analyze
表示对analyze操作场景进行审计。
cursor
表示对游标操作的场景进行审计。
anonymous_block
表示对匿名块操作场景进行审计。
explain
表示对explain操作场景进行审计。
show
表示对show操作场景进行审计。
lock_table
表示对锁表操作场景进行审计。
comment
表示对comment操作场景进行审计。
preparestmt
表示对PREPARE、EXECUTE、DEALLOCATE操作场景进行审计。
cluster
表示对cluster操作场景进行审计。
constraints
表示对constraints操作场景进行审计。
checkpoint
表示对CHECKPOINT操作场景进行审计。
barrier
表示对BARRIER操作场景进行审计。
cleanconn
表示对clean connection操作场景进行审计。
seclabel
表示对安全标签操作进行审计。
notify
表示对通知操作进行审计。
load
表示对加载操作进行审计。
表2 audit_type审计类型项 审计类型
描述
audit_open/audit_close
表示审计类型为打开和关闭审计日志操作。
user_login/user_logout
表示审计类型为用户登录/退出成功的操作和用户。
system_start/system_stop/system_recover/system_switch
表示审计类型为系统的启停、实例切换操作。
sql_wait/sql_parse
表示审计类型为SQL语句解析。
lock_user/unlock_user
表示审计类型为用户锁定和解锁成功的操作。
grant_role/revoke__role
表示审计类型为用户权限授予和回收的操作。
user_violation
表示审计类型为用户访问存在越权的操作。
ddl_数据库对象
表示审计类型为DDL操作,因为DDL操作由会根据操作对象进行更细粒度控制,仍然沿用审计开关audit_system_object,即由audit_system_object控制对哪些对象的DDL操作进行审计(此处不配置ddl,只要配置了audit_system_object,审计也会生效)。
例如:ddl_sequence表示审计类型为序列相关操作。
dml_action_insert/dml_action_delete/dml_action_update/dml_action_merge/dml_action_select
表示审计类型为INSERT、DELETE、UPDATE、MERGE等DML操作。
internal_event
表示审计类型为内部事件。
user_func
表示审计类型为用户自定义函数、存储过程、匿名块操作。
special_func
表示审计类型为特殊函数调用操作,特殊函数包括:pg_terminate_backend和pg_cancel_backend。
copy_to/copy_from
表示审计类型为COPY相关操作。
set_parameter
表示审计类型为SET操作。
trans_begin/trans_commit/trans_prepare/trans_rollback_to/trans_release/trans_savepoint/trans_commit_prepare/trans_rollback_prepare/trans_rollback
表示审计类型为事务相关操作。
vacuum/vacuum_full/vacuum_merge
表示审计类型为VACUUM相关操作。
analyze/analyze_verify
表示审计类型为ANALYZE相关操作。
cursor_declare/cursor_move/cursor_fetch/cursor_close
表示审计类型为游标相关操作。
codeblock_execute
表示审计类型为匿名块。
explain
表示审计类型为EXPLAIN操作。
show
表示审计类型为SHOW操作。
lock_table
表示审计类型为锁表操作。
comment
表示审计类型为COMMENT操作。
prepare/execute/deallocate
表示审计类型为PREPARE、EXECUTE或DEALLOCATE操作。
cluster
表示审计类型为CLUSTER操作。
constraints
表示审计类型为CONSTRAINTS操作。
checkpoint
表示审计类型为CHECKPOINT操作。
barrier
表示审计类型为BARRIER操作。
cleanconn
表示审计类型为CLEAN CONNECTION操作。
seclabel
表示审计类型为安全标签操作。
notify
表示审计类型为通知操作。
load
表示审计类型为加载操作。
- pgxc_query_audit()
返回值类型:record
函数返回字段同pg_query_audit函数。
- pg_delete_audit()
描述:删除指定时间段的审计日志。
返回值类型:void基于数据库安全考虑,不提供删除指定时间段的审计日志的函数接口,调用该函数将直接报“ERROR: For security purposes, it is not allowed to manually delete audit logs”。