快速入门

最近更新时间:2020-07-03 17:23:33

腾讯云为云数据库 MySQL 实例提供数据库审计能力,记录对数据库的访问及 SQL 语句执行情况,帮助企业进行风险控制,提高数据安全等级。

注意:

数据库审计目前支持:腾讯云数据库 MySQL 5.6、5.7 高可用版和金融版,暂不支持云数据库 MySQL 5.5 版本,以及云数据库 MySQL 基础版。

审计操作

创建审计规则

  1. 登录 MySQL 数据库审计控制台,在左侧导航选择【审计规则】页,在上方选择地域后,单击【新建规则】。
  2. 在创建审计规则页,填写规则名称、描述,单击【下一步】。
  3. 在参数设置页,选择所需的审计方式和参数,单击【保存】。
    说明:

    规则创建成功后,需关联审计策略才能生效。

创建审计策略

  1. 登录 MySQL 数据库审计控制台,在数据库审计页上方选择【审计策略】页,选择需要开启审计的数据库实例,勾选相关协议,单击【下一步】。
  2. 在 SQL 审计服务设置页,选择审计保存时长,单击【下一步】。
    注意:

    为保证满足安全合规性对 SQL 日志保留时长的要求,建议用户选择180天及以上的保存时长。

  3. 在创建策略页,填写“策略名称”,在“选择规则”列表选择刚创建的审计规则,单击【创建策略】,即可看到审计策略已经生效。

查看审计日志

  1. 登录 MySQL 数据库审计控制台,在数据库审计页上方选择【审计日志】页。
  2. 在“审计实例”处,选择已经开启审计的数据库实例,即可查看对应的 SQL 审计日志。
    • 单击“时间框”,选择时间段,可查看所选时间段内相关审计效果。
    • 在“文本框”,输入关键标签进行搜索,可查看相关审计效果;输入关键 SQL 命令组合进行搜索,可查看相关审计效果。
      说明:

      • 在“文本框”输入多组关键标签进行搜索时,可使用回车键分割关键标签。
      • 在“文本框”可输入 SQL 命令、客户端 IP、帐号、数据库、对象名、策略名、执行时间范围、影响行数等关键组合信息。

SQL 审计字段

TencentDB for MySQL 的审计日志中支持如下字段。用户可以在 MySQL 数据库审计控制台 的【审计日志】页面单击如下图标,获取并查看完整的 SQL 审计日志。

序号 字段名 字段含义 备注
1 host 客户端 IP -
2 dbname 数据库名 -
3 user 用户名 -
4 sql SQL 语句 -
5 sqlType SQL 语句类型 -
6 errCode 错误码 0表示成功
7 affectRows 影响行数 -
8 checkRows 扫描行数 -
9 sentRows 返回行数 -
10 threadId 线程 ID -
11 ruleNum 审计规则号 -
12 policyName 审计策略名 -
13 instanceName 实例名 -
14 timestamp 开始时间(秒) -
15 nsTime 开始时间(纳秒精度);与 timestamp 组合成一个精确到纳秒的开始时间 例如 timestamp.nsTime 1577953020.887984015
16 execTime 执行时间(微秒) -
17 cpuTime CPU 时间(纳秒) -
18 lockWaitTime 锁等待时间(微秒) -
19 ioWaitTime IO 等待时间(微秒) -
20 trxLivingTime 事务执行时间(微秒) -

SQL 审计规则

规则内容

支持以下类型设置:
客户端 IP、数据库帐户、数据库名,支持【包含、不包含、等于、不等于】方式匹配。

全量审计规则为特殊规则,启用后审计所有语句。

规则运算

  • 每个规则内部不同类型为追加限制条件关系,即与(&&)关系。
    如用户名指定为 user1,匹配类型为等于,数据库名指定为 test, 匹配类型为等于,那么仅审计 user1 用户对 test 库的动作,其它忽略。
  • 规则与规则之间为或(||)关系 。
    每个实例可以指定一个或多个审计规则,只要符合任意一个规则,就应该审计。如 A 规则指定只审计 user1 的执行时间 >= 1秒的操作,B 规则审计 user1 并且执行时间 < 1的语句,那么最终对 user1 所有语句都要审计。

规则详解

对于客户端 IP、数据库帐户、数据库名支持【包含、不包含、等于、不等于】运算,一次只支持一个运算符设置,如“不等于”。
“等于”和“不等于”时,可以写多个值,多个值之间用逗号分隔,包含、不包含只能写唯一值。如运算符为”相等“,值可以为 user1,user2,user3。

对于数据库名的说明

如果是以下的表对象类型的语句:

SQLCOM_SELECT, SQLCOM_CREATE_TABLE, SQLCOM_CREATE_INDEX, SQLCOM_ALTER_TABLE,
SQLCOM_UPDATE, SQLCOM_INSERT, SQLCOM_INSERT_SELECT, SQLCOM_DELETE, SQLCOM_TRUNCATE, SQLCOM_DROP_TABLE

对这一类型动作,数据库名以语句中实际操作的数据库名为准。例如,当前是 use db3 库,语句为:

select *from db1.test,db2.test;

那么会以 db1 和 db2 作为目标库进行规则判断,如果规则配置要审计 db1 的库则会进行审计,规则配置要审计 db3 的库则不会进行审计。
如果不是上面的表对象类型语句,以当前 use 的库作为目标库进行判断。如当前库为 use db1,执行语句为show databases,那么以当前库 db1 作为目标库进行规则判断,若规则配置审计 db1 则会进行审计。

特别说明

包含、不包含只能写一个值;如果写多个会被当成一个串,造成匹配不对。

目录