转储GaussDB(DWS)数据库审计日志
GaussDB(DWS)记录数据库中的连接和用户活动相关信息。这些审计日志信息有助于用户监控数据库以确保安全、进行故障排除及定位历史操作记录。GaussDB(DWS)的审计日志默认存储于数据库中,用户可以将审计日志转储到OBS中,便于负责监控数据库中活动的用户查看这些日志信息,目前支持开启审计日志转储和内核审计日志转储,两者功能隔离,可以分别开启或关闭。内核审计日志转储可直接将数据库老化的本地审计日志转储到OBS。

- 非OBS场景下,此功能不可用。
- 内核审计日志转储仅9.1.0.100及以上集群版本支持。
- 经典变更规格、增删CN等变更CN场景会导致数据丢失,建议在执行变更期间关闭审计日志转储。
- CN节点故障可能导致丢失该节点数据。
- 开启审计日志转储后,如果保存的审计日志大小超过1G就会转储,这可能会导致查询结果异常,用户请谨慎操作。
- 开启审计日志转储目录分区版本支持:
- 针对8.1.3.x集群仅8.1.3.322及以上集群版本支持。
- 针对8.2.0.x集群仅8.2.0.106及以上集群版本支持。
- 8.2.1及以上集群版本支持。
- 历史版本需联系技术支持人员升级使用,升级后用户需手动打开。
前提条件
GaussDB(DWS)集群创建成功后,可以为集群开启审计日志转储,将审计日志转储到OBS中,方便查看。开启审计日志转储前需满足如下条件:
已创建用于存储审计日志的OBS桶,具体操作请参见《对象存储服务控制台指南》中的
章节。开启审计日志转储
- 登录DWS管理控制台。
- 在左侧导航栏中,单击“专属集群 > 集群列表”。
- 在集群列表中,单击需要开启审计日志转储的集群的名称,然后在上侧导航栏单击“安全设置”。
- 在“审计配置”区域中,开启审计日志转储。
每个区域的每个项目首次开启审计日志转储功能时,系统将提示您需创建名称为“DWSAccessOBS”的委托,委托创建成功后,GaussDB(DWS)可以将审计日志转储至OBS中。
默认情况下,只有华为云账号或拥有Security Administrator权限的用户才具备查询委托和创建委托的权限。账号中的IAM用户,默认没有查询委托和创建委托的权限,此时需联系有权限的用户在当前页面完成对GaussDB(DWS)的委托授权,详情请参见委托GaussDB(DWS)管理资源。
图1 开启审计日志转储- 转储目录分区:支持审计日志转储时可采用OBS外表读取,转储至OBS时审计日志会采用csv格式且使用gz格式压缩。
- OBS桶:存储审计数据的OBS桶名称。如果没有可选择的OBS桶,可以单击“查看OBS桶”进入OBS管理控制台创建新的OBS桶,具体操作请参见《对象存储服务控制台指南》中的 章节。
此外,OBS桶支持指定其他用户授权的桶,但需要用户手动输入其他租户授权的桶名来指定OBS桶转储审计日志,输入长度不能小于3个字符,详情请参见审计日志/内核审计日志转储至其他用户授权的OBS桶。
- OBS路径:在OBS中存储审计文件的自定义目录。多级目录可用“/”进行分隔,不能以“/”开头。路径取值范围:1~50个字符。如果填写的OBS路径不存在时,系统会先创建该OBS路径再进行转储。
- 转储周期(分):根据用户配置的时间,周期性的将数据转储到OBS中。取值范围:5~43200。单位为分钟。
- 单击“应用”。
“配置状态”显示为“应用中”,表示系统正在保存配置。
等待一段时间后当“配置状态”显示为“已同步”,表示已保存配置并生效。
开启内核审计日志转储
- 登录DWS管理控制台。
- 在左侧导航栏中,单击“专属集群 > 集群列表”。
- 在集群列表中,单击需要开启内核审计日志转储的集群的名称,然后在上侧导航栏单击“安全设置”。
- 在“审计配置”区域中,开启内核审计日志转储。
每个区域的每个项目首次内核开启审计日志转储功能时,系统将提示您需创建名称为“DWSAccessOBS”的委托,委托创建成功后,GaussDB(DWS)可以将审计日志转储至OBS中。
默认情况下,只有华为云账号或拥有Security Administrator权限的用户才具备查询委托和创建委托的权限。账号中的IAM用户,默认没有查询委托和创建委托的权限,此时需联系有权限的用户在当前页面完成对GaussDB(DWS)的委托授权,详情请参见委托GaussDB(DWS)管理资源。
图2 开启内核审计日志转储- OBS桶:存储内核审计数据的OBS桶名称。如果没有可选择的OBS桶,可以单击“查看OBS桶”进入OBS管理控制台创建新的OBS桶,具体操作请参见《对象存储服务控制台指南》中的 章节。
此外,OBS桶支持指定其他用户授权的桶,但需要用户手动输入其他租户授权的桶名来指定OBS桶转储内核审计日志,输入长度不能小于3个字符,详情请参见审计日志/内核审计日志转储至其他用户授权的OBS桶。
- 内核审计日志OBS路径:在OBS中存储内核审计文件的自定义目录。多级目录可用“/”进行分隔,不能以“/”开头。路径取值范围:1~50个字符。如果填写的OBS路径不存在时,系统会先创建该OBS路径再进行转储。
- OBS桶:存储内核审计数据的OBS桶名称。如果没有可选择的OBS桶,可以单击“查看OBS桶”进入OBS管理控制台创建新的OBS桶,具体操作请参见《对象存储服务控制台指南》中的 章节。
- 单击“应用”。
“配置状态”显示为“应用中”,表示系统正在保存配置。
等待一段时间后当“配置状态”显示为“已同步”,表示已保存配置并生效。
- 开启内核审计日志转储后,可以通过pg_query_audit函数查看转储的审计日志,详情请参见使用pg_query_audit函数查看数据库审计日志。
或选择日志存放的OBS桶和文件夹进入查看具体的日志文件,可参见6。
审计日志/内核审计日志转储至其他用户授权的OBS桶
当前用户(转储用户)在执行审计日志转储或内核审计日志转储时,可以指定其他用户(授权用户)授权的OBS桶。
- 转储用户从控制台获取账号ID,并提供给授权用户。详情请参见如何获取账号ID。
- 授权用户登录OBS管理控制台,创建桶策略。
详情请参见对其他账号授予桶的读写权限章节。
- 在桶列表单击目标桶的桶名称,进入“对象”页面。
- 在左侧导航栏,选择“访问权限控制 > 桶策略”,进入桶策略页面。
- 在“桶策略”页面,单击“创建”按钮。
- 授权用户在创建桶策略页面单击“可视化视图”,配置桶策略进行跨用户的授权,参数配置如下表所示,确认无误后单击页面右下角“创建”按钮保存。
表1 桶策略配置说明 参数
样例值
策略名称
输入自定义策略的名称。
效力
允许。
被授权用户
勾选“其他账号”,单击输入框下方的“添加委托账号”,在输入框中填写委托方的账号ID和委托名称。格式为“domainId/agencyname”,其中domainId为步骤1中转储用户获取的账号ID,委托名称为“DWSAccessOBS”。
授权资源
整个桶(包括桶内对象)。
授权操作
选择“自定义配置”,“选择动作”至少配置4种:ListBucket/HeadBucket/GetObject/PutObject。
- 转储用户进入GaussDB(DWS)审计日志/内核审计日志转储配置页面,在OBS桶选择框中手动输入上述授权的OBS桶名。
转储用户使用集群进行审计日志/内核审计日志转储到OBS桶后,授权用户可在OBS桶中查看相应路径下的审计日志文件。
修改审计日志转储
开启审计日志转储后,可以对转储配置进行修改。例如,修改日志存放的OBS桶和路径,转储周期等。
修改审计日志转储具体操作如下:
- 登录DWS管理控制台。
- 在左侧导航栏中,单击“专属集群 > 集群列表”。
- 在集群列表中,单击您想要修改审计日志转储的集群的名称,然后在上侧导航栏单击“安全设置”。
- 在“审计配置”区域中,修改审计日志转储配置。
- 单击“应用”。
“配置状态”显示为“应用中”,表示系统正在保存配置。
等待一段时间后当“配置状态”显示为“已同步”,表示已保存配置并生效。
查看转储的审计日志
开启审计日志转储后,可以通过OBS查看转储的审计日志。
查看转储的审计日志具体操作如下:
- 登录DWS管理控制台。
- 在左侧导航栏中,单击“专属集群 > 集群列表”。
- 在集群列表中,单击需要查看审计日志转储记录的集群的名称,然后在上侧导航栏单击“安全设置”。
- 在“审计配置”区域中,单击“查看转储记录”。
- 在“审计日志转储记录”弹出框中,单击“查看OBS桶”,进入OBS管理控制台。
- 选择日志存放的OBS桶和文件夹进入查看具体的日志文件。
可以选择将日志文件下载,解压并打开查看。审计日志文件字段说明如下。
表2 审计日志文件字段说明 名称
类型
描述
begintime
timestamp with time zone
操作的执行开始时间。
endtime
timestamp with time zone
操作的执行结束时间。
operation_type
text
操作类型,具体类型见表3。
audit_type
text
审计类型,具体类型见表4。
result
text
操作结果。
username
text
执行操作的用户名。
database
text
数据库名称。
client_conninfo
text
客户端连接信息,即gsql,jdbc或odbc等。
object_name
text
操作对象名称。
object_details
text
操作对象详情。
command_text
text
操作的执行命令。
detail_info
text
执行操作详细信息。
transaction_xid
text
事务ID。
query_id
text
查询ID。
node_name
text
节点名称。
thread_id
text
线程ID。
local_port
text
本地端口。
remote_port
text
远端端口。
result_rows
text
操作结果行数。
error_code
text
错误码。
表3 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
表示对加载操作进行审计。
表4 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
表示审计类型为加载操作。
关闭审计日志转储/内核审计日志转储
审计日志转储/内核审计日志转储开启后,如果不需要将审计日志转储/内核审计日志转储到OBS中,可以将审计日志转储/内核审计日志转储关闭。
- 登录DWS管理控制台。
- 在左侧导航栏中,单击“专属集群 > 集群列表”。
- 在集群列表中,单击需要关闭审计日志转储/内核审计日志转储的集群的名称,然后在上侧导航栏单击“安全设置”。
- 在“审计配置”区域中,关闭审计日志转储/内核审计日志转储开关。
- 单击“应用”。
“配置状态”显示为“应用中”,表示系统正在保存配置。
等待一段时间后当“配置状态”显示为“已同步”,表示已保存配置并生效。