云服务器内容精选

  • 前提条件 审计功能总开关audit_enabled已开启。(audit_enabled默认值为ON,若关闭请参考修改数据库参数设置为OFF)。 已配置需要审计的审计项。各审计项及其开启办法,请参考设置数据库审计日志。 数据库正常运行,并且对数据库执行了一系列增、删、改、查操作,保证在查询时段内有审计结果产生。 数据库各个节点审计日志单独记录。 只有拥有AUDITADMIN属性的用户才可以查看审计记录。
  • 查看数据库审计日志方式 方式一:由于审计日志会占用一定磁盘空间,为了防止本地磁盘文件过大,GaussDB(DWS)支持审计日志转储,用户可以开启“开启审计日志转储”功能,将审计日志转储到OBS(用户需创建用于存储审计日志的OBS桶)中进行查看或下载,详细内容请参考查看审计日志转储记录。 方式二:通过依赖于云日志服务LTS的“集群日志管理”功能查看采集的审计数据库日志或进行日志下载,详细内容请参考查看集群日志。 方式三:数据库的审计日志默认存储于数据库中,连接集群后使用pg_query_audit函数进行查看。详细内容请参考使用pg_query_audit函数查看数据库审计日志。
  • 使用pg_query_audit函数查看数据库审计日志 使用SQL客户端工具成功连接集群,连接方式请参考连接集群。 使用函数pg_query_audit查询当前CN节点的审计日志: 1 pg_query_audit(timestamptz startime,timestamptz endtime,audit_log) 参数startime和endtime分别表示审计记录的开始时间和结束时间,audit_log表示所查看的审计日志信息所在的物理文件路径,当不指定audit_log时,默认查看连接当前实例的审计日志信息。 例如,查看指定时间段当前CN节点审计记录。 1 SELECT * FROM pg_query_audit('2021-02-23 21:49:00','2021-02-23 21:50:00'); 查询结果如下: 1 2 3 begintime | endtime | operation_type | audit_type | result | username | database | client_conninfo | object_name | command_text | detail_info | transaction_xid | query_id | node_name | session_id | local_port | remote_port ---------------------------+---------------------------+----------------+------------+--------+------------+----------+-----------------+-------------+-----------------+------------------------------------------------------------------+-----------------+----------+--------------+------------------------------+------------+------------- 2021-02-23 21:49:57.76+08 | 2021-02-23 21:49:57.82+08 | login_logout | user_login | ok | dbadmin | gaussdb | gsql@[local] | gaussdb | login db | login db(gaussdb) successfully, the current user is: dbadmin | 0 | 0 | coordinator1 | 140324035360512.667403397820909.coordinator1 | 27777 | 该条记录表明,用户dbadmin在2021-02-23 21:49:57.82+08登录数据库gaussdb。其中client_conninfo字段在log_hostname启动且IP连接时,字符@后显示反向DNS查找得到的主机名。 使用函数pgxc_query_audit可以查询所有CN节点的审计日志: 1 pgxc_query_audit(timestamptz startime,timestamptz endtime) 例如,查看指定时间段所有CN节点审计记录。 1 SELECT * FROM pgxc_query_audit('2021-02-23 22:05:00','2021-02-23 22:07:00') where audit_type = 'user_login' and username = 'user1'; 查询结果如下: 1 2 3 4 begintime | endtime | operation_type | audit_type | result | username | database | client_conninfo | object_name | command_text | detail_info | transaction_xid | query_id | node_name | session_id | local_port | remote_port ----------------------------+----------------------------+----------------+------------+--------+----------+----------+-----------------+-------------+--------------+------------------------------------------------------------+-----------------+----------+--------------+----------------------------------------------+------------+------------- 2021-02-23 22:06:22.219+08 | 2021-02-23 22:06:22.271+08 | login_lgout | user_login | ok | user1 | gaussdb | gsql@[local] | gaussdb | login db | login db(gaussdb) successfully, the current user is: user1 | 0 | 0 | coordinator2 | 140689577342720.667404382271356.coordinator | 27782 | 2021-02-23 22:05:51.697+08 | 2021-02-23 22:05:51.749+08 | login_lgout | user_login | ok | user1 | gaussdb | gsql@[local] | gaussdb | login db | login db(gaussdb) successfully, the current user is: user1 | 0 | 0 | coordinator1 | 140525048424192.667404351749143.coordinator1 | 27777 | 查询结果显示,用户user1在CN1和CN2的成功登录记录。 查询审计多个对象名的记录。 1 2 SET audit_object_name_format TO 'all'; SELECT object_name,result,operation_type,command_text FROM pgxc_query_audit('2022-08-26 8:00:00','2022-08-26 22:55:00') where command_text like '%student%'; 查询结果如下: 1 2 3 4 5 6 7 8 object_name | result | operation_type | command_text ------------------------------------------------------------------+--------+----------------+------------------------------------------------------------------------------------------------------------------ -------------------------------------------- student | ok | ddl | CREATE TABLE student(stuNo int, stuName TEXT); studentscore | ok | ddl | CREATE TABLE studentscore(stuNo int, stuscore int); ["public.student_view01","public.studentscore","public.student"] | ok | ddl | CREATE OR REPLACE VIEW student_view01 AS SELECT * FROM student t1 where t1.stuNo in (select stuNo from studentscore t2 where t1.stuNo = t2.stuNo); ["public.student_view01","public.student","public.studentscore"] | ok | dml | SELECT * FROM student_view01; 查询结果object_name显示多个对象名,包括:表名、视图名及视图所涉及的基表名。
  • 修改审计日志转储 开启审计日志转储后,您可以对转储配置进行修改,如修改日志存放的OBS桶和路径,转储周期等。 修改审计日志转储具体操作如下: 登录GaussDB(DWS) 管理控制台。 在左侧导航栏中,单击“集群管理”。 在集群列表中,单击您想要修改审计日志转储的集群的名称,然后在左侧导航栏单击“安全设置”。 在“审计配置”区域中,修改审计日志转储配置。 单击“应用”。 “配置状态”显示为“应用中”,表示系统正在保存配置。 等待一段时间后再次刷新“配置状态”,当显示为“已同步”,表示已保存配置并生效。
  • 开启审计日志转储 登录GaussDB(DWS) 管理控制台。 在左侧导航栏中,单击“集群管理”。 在集群列表中,单击您想要开启审计日志转储的集群的名称,然后在左侧导航栏单击“安全设置”。 在“审计配置”区域中,开启审计日志转储。 表示开启状态。表示关闭状态。 每个区域的每个项目首次开启审计日志转储功能时,系统将提示您需创建名称为“DWSAccessOBS”的委托,委托创建成功后,GaussDB(DWS) 可以将审计日志转储至OBS中。 默认情况下,只有华为云帐号或拥有Security Administrator权限的用户才具备查询委托和创建委托的权限。帐号中的IAM用户,默认没有查询委托和创建委托的权限,此时需联系有权限的用户在当前页面完成对GaussDB(DWS) 的委托授权。 图1 开启审计日志转储 转储目录分区:支持审计日志转储时可采用OBS外表读取,转储至OBS时审计日志会采用csv格式且使用gz格式压缩。 OBS桶:存储审计数据的OBS桶名称。如果没有可选择的OBS桶,可以单击“查看OBS桶”进入OBS管理控制台创建新的OBS桶,具体操作请参见《对象存储服务控制台指南》中的创建桶章节。 OBS路径:在OBS中存储审计文件的自定义目录。多级目录可用“/”进行分隔,不能以“/”开头。路径取值范围:1~50个字符。如果填写的OBS路径不存在时,系统会先创建该OBS路径再进行转储。 转储周期(分):根据用户配置的时间,周期性的将数据转储到OBS中。取值范围:5~43200。单位为分钟。 单击“应用”。 “配置状态”显示为“应用中”,表示系统正在保存配置。 等待一段时间后再次刷新“配置状态”,当显示为“已同步”,表示已保存配置并生效。