操作审计
audit_system_object
参数说明:该参数表示是否对数据库对象的CREATE、DROP、ALTER等操作进行审计。数据库对象包括DATABASE、USER、SCHEMA、TABLE等。通过修改该配置参数的值,可以只审计需要的数据库对象的操作。
参数类型:整型
参数单位:无
- 0代表关闭数据库对象的CREATE、DROP、ALTER等操作审计功能。
- 非0代表只审计某类或者某些数据库对象的CREATE、DROP、ALTER等操作。
取值说明:
该参数的值由29个二进制位的组合求出,这29个二进制位分别代表29类数据库对象。如果对应的二进制位取值为0,表示不审计对应的数据库对象的CREATE、DROP、ALTER等操作;取值为1,表示审计对应的数据库对象的CREATE、DROP、ALTER等操作。这29个二进制位代表的具体审计内容请参见表1。
用于记录SQL PATCH的参数存在特殊性,如果对该对象进行审计且audit_dml_state_select也开启时,对于一条SQL PATCH操作的审计日志会作为DML和DDL被记录两次。
默认值:67121159(十进制),对应二进制为:00100 0000 0000 0011 0000 0000 0111,表示对DATABASE、SCHEMA、USER、SQLPatch这四种数据库对象的DDL操作进行审计。
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
设置建议:根据业务需要设置记录审计的数据库对象类型。在主备强制选主场景建议audit_system_object取最大值,所有DDL对象全部审计。多租场景下,该参数可在PDB级别设置,若未在PDB级别设置该参数,则继承来自全局的参数设置。
设置不当的风险与影响:需要审计的对象类型越多,对系统性能的影响越大,占用的系统CPU和I/O越多。
| 二进制位 | 含义 | 取值说明 |
|---|---|---|
| 第0位 | 是否审计DATABASE对象的CREATE、DROP、ALTER操作。 |
|
| 第1位 | 是否审计SCHEMA对象的CREATE、DROP、ALTER操作。 |
|
| 第2位 | 是否审计USER对象的CREATE、DROP、ALTER操作。 |
|
| 第3位 | 是否审计TABLE对象的CREATE、DROP、ALTER、TRUNCATE操作。 |
|
| 第4位 | 是否审计INDEX对象的CREATE、DROP、ALTER操作。 |
|
| 第5位 | 是否审计VIEW/MATVIEW对象的CREATE、DROP操作。 |
|
| 第6位 | 是否审计TRIGGER对象的CREATE、DROP、ALTER操作。 |
|
| 第7位 | 是否审计PROCEDURE/FUNCTION对象的CREATE、DROP、ALTER操作。 |
|
| 第8位 | 是否审计TABLESPACE对象的CREATE、DROP、ALTER操作。 |
|
| 第9位 | 是否审计RESOURCE POOL对象的CREATE、DROP、ALTER操作。 |
|
| 第10位 | 是否审计WORKLOAD对象的CREATE、DROP、ALTER操作。 |
|
| 第11位 | 是否审计SERVER对象的CREATE、DROP、ALTER操作 |
|
| 第12位 | 保留 | - |
| 第13位 | 保留 | - |
| 第14位 | 是否审计ROW LEVEL SECURITY对象的CREATE、DROP、ALTER操作。 |
|
| 第15位 | 是否审计TYPE对象的CREATE、DROP、ALTER操作。 |
|
| 第16位 | 是否审计TEXT SEARCH对象(CONFIGURATION和DICTIONARY)的CREATE、DROP、ALTER操作。 |
|
| 第17位 | 是否审计DIRECTORY对象的CREATE、DROP、ALTER操作。 |
|
| 第18位 | 是否审计SYNONYM对象的CREATE、DROP、ALTER操作。 |
|
| 第19位 | 是否审计SEQUENCE对象的CREATE、DROP、ALTER操作。 |
|
| 第20位 | 是否审计CMK、CEK对象的CREATE、DROP操作。 |
|
| 第21位 | 是否审计PACKAGE对象的CREATE、DROP、ALTER操作。 |
|
| 第22位 | 是否审计MODEL对象的CREATE、DROP操作。 |
|
| 第23位 | 预留位。 | - |
| 第24位 | 是否审计对gs_global_config全局对象的ALTER、DROP操作。 |
|
| 第25位 | 是否审计FOREIGN DATA WRAPPER对象的CREATE、DROP、ALTER操作,目前仅支持CREATE功能,ALTER 、DROP 功能暂不支持。 |
|
| 第26位 | 是否审计SQL PATCH对象的CREATE、ENABLE、DISABLE、DROP操作。 |
|
| 第27位 | 是否审计EVENT对象的CREATE、ALTER、DROP操作。 |
|
| 第28位 | 是否审计DBLINK对象的CREATE、ALTER、DROP操作。目前DATABASE LINK功能暂不支持。 |
|
audit_dml_state
参数说明:该参数表示是否对所有表的INSERT、UPDATE、DELETE、MERGE操作进行审计。该参数可在PDB级别设置。
参数类型:整型
参数单位:无
取值范围:0、1
- 0:表示关闭所有表的INSERT、UPDATE、DELETE、MERGE操作审计功能。
- 1:表示开启所有表的INSERT、UPDATE、DELETE、MERGE操作审计功能。
默认值:0。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:此参数设置为1,当数据库频繁进行INSERT、UPDATE、DELETE、MERGE操作时会频繁记录审计日志,导致性能下降。
audit_dml_state_select
参数说明:该参数表示是否对SELECT操作进行审计。该参数可在PDB级别设置。
参数类型:整型
参数单位:无
取值范围:0、1
- 0:表示关闭SELECT操作审计功能。
- 1:表示开启SELECT操作审计功能。
默认值:0。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:此参数设置为1,当数据库频繁进行SELECT操作时会频繁记录审计日志,导致性能下降。
audit_function_exec
参数说明:该参数表示在执行存储过程、匿名块或自定义函数(不包括系统自带函数)时是否记录审计信息。该参数可在PDB级别设置。
参数类型:整型
参数单位:无
取值范围:0、1
- 0:表示关闭对存储过程、匿名块或自定义函数(不包括系统自带函数)执行的审计功能。
- 1:表示开启对存储过程、匿名块或自定义函数(不包括系统自带函数)执行的审计功能。
默认值:0。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:此参数设置为1,当数据库频繁执行存储过程、匿名块或自定义函数时会频繁记录审计日志,导致性能下降。
audit_system_function_exec
参数说明:这个参数表示在执行白名单内的系统函数时是否记录审计日志。该参数可在PDB级别设置。
参数类型:整型
参数单位:无
取值范围:0、1
- 0:表示关闭对系统函数执行的审计功能。
- 1:表示开启对系统函数执行的审计功能。
默认值:0。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:此参数设置为1,当数据库频繁执行白名单内系统函数时会频繁记录审计日志,导致性能下降。
支持记录审计的系统函数白名单如下表所示:
| set_working_grand_version_num_manually | set_config | pg_cancel_backend | pg_cancel_session | pg_reload_conf | pg_rotate_logfile |
| pg_terminate_session | pg_terminate_backend | pg_create_restore_point | pg_start_backup | pg_stop_backup | pg_switch_xlog |
| pg_cbm_rotate_file | pg_cbm_get_merged_file | pg_cbm_recycle_file | pg_enable_delay_ddl_recycle | pg_disable_delay_ddl_recycle | gs_roach_stop_backup |
| gs_roach_enable_delay_ddl_recycle | gs_roach_disable_delay_ddl_recycle | gs_roach_switch_xlog | pg_last_xlog_receive_location | pg_xlog_replay_pause | pg_xlog_replay_resume |
| gs_pitr_clean_history_global_barriers | gs_pitr_archive_slot_force_advance | pg_create_physical_replication_slot_extern | gs_set_obs_delete_location | gs_hadr_do_switchover | gs_set_obs_delete_location_with_slotname |
| gs_streaming_dr_in_switchover | gs_upload_obs_file | gs_download_obs_file | gs_set_obs_file_context | gs_get_hadr_key_cn | pg_advisory_lock |
| pg_advisory_lock_shared | pg_advisory_unlock | pg_advisory_unlock_shared | pg_advisory_unlock_all | pg_advisory_xact_lock | pg_advisory_xact_lock_shared |
| pg_try_advisory_lock | pg_try_advisory_lock_shared | pg_try_advisory_xact_lock | pg_try_advisory_xact_lock_shared | pg_create_logical_replication_slot | pg_drop_replication_slot |
| pg_logical_slot_peek_changes | pg_logical_slot_get_changes | pg_logical_slot_get_binary_changes | pg_replication_slot_advance | pg_replication_origin_create | pg_replication_origin_drop |
| pg_replication_origin_session_setup | pg_replication_origin_session_reset | pg_replication_origin_session_progress | pg_replication_origin_xact_setup | pg_replication_origin_xact_reset | pg_replication_origin_advance |
| local_space_shrink | gs_space_shrink | pg_free_remain_segment | gs_fault_inject | gs_repair_file | local_clear_bad_block_info |
| gs_repair_page | - | - | - | - | - |
在系统函数执行这类审计事件的审计记录中,object_name字段的内容为系统函数名,不再带函数参数。
audit_copy_exec
参数说明:这个参数表示是否对COPY操作进行审计。该参数可在PDB级别设置。
参数类型:整型
参数单位:无
取值范围:0、1
- 0:表示关闭COPY审计功能。
- 1:表示开启COPY审计功能。
默认值:1。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:此参数设置为1,当数据库频繁执行COPY操作时会频繁记录审计日志,导致性能下降。
audit_set_parameter
参数说明:该参数表示是否对SET操作进行审计。该参数可在PDB级别设置。
参数类型:整型
参数单位:无
取值范围:0、1
- 0:表示关闭SET审计功能。
- 1:表示开启SET审计功能。
默认值:0。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:此参数设置为1,当数据库频繁执行SET操作时会频繁记录审计日志,导致性能下降。
audit_xid_info
参数说明:该参数表示是否在审计日志字段detail_info中记录SQL语句的事务ID。该参数可在PDB级别设置。
参数类型:整型
参数单位:无
取值范围:0、1
- 0:表示关闭审计日志记录事务ID功能。
- 1:表示开启审计日志记录事务ID功能。
默认值:0。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
如果开启此开关,审计日志中detail_info信息则以xid开始,例如:
detail_info: xid=14619 , create table t1(id int);
对于不存在事务ID的审计行为,则记录xid=NA。
enableSeparationOfDuty
参数说明:该参数表示是否开启三权分立选项。该参数可在PDB级别设置。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示开启三权分立。
- off:表示不开启三权分立。
默认值:off。在PDB场景内,若未设置该参数,则默认值为off。
设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:此参数设置为on,系统管理员权限会受限制,部分之前可以执行的操作可能会无法执行。
enable_nonsysadmin_execute_direct
参数说明:该参数表示是否允许非系统管理员和非监控管理员执行EXECUTE DIRECT ON语句。该参数可在PDB级别设置。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示允许任意用户执行EXECUTE DIRECT ON语句。
- off:表示只允许系统管理员和监控管理员执行EXECUTE DIRECT ON语句。
默认值:off
设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
enable_access_server_directory
参数说明:该参数表示是否允许非初始用户创建、修改和删除DIRECTORY对象。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示允许非初始用户创建、修改和删除DIRECTORY对象。
- off:表示不允许非初始用户创建、修改和删除DIRECTORY对象。
默认值:off
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
- 出于安全考虑,默认情况下,只有初始用户才能够创建、修改和删除DIRECTORY对象。
- 如果开启了enable_access_server_directory,具有SYSADMIN权限的用户和继承了内置角色gs_role_directory_create权限的用户可以创建directory对象;具有SYSADMIN权限的用户、directory对象的属主、被授予了该directory的DROP权限的用户或者继承了内置角色gs_role_directory_drop权限的用户可以删除directory对象;具有SYSADMIN权限的用户和directory对象的属主可以修改directory对象的所有者,且要求该用户是新属主的成员。