
# 开启SQL审计日志
#### 操作场景
当您开通SQL审计功能，系统会将所有的SQL操作记录下来存入日志文件，方便用户[下载](https://support.huaweicloud.com/usermanual-rds-mysql/rds_download_sql_auditing_log.html)并查询。
RDS for MySQL默认关闭SQL审计功能，打开会增加数据库负载（占用实例的CPU、内存、磁盘空间、磁盘IOPS），对性能的影响一般不会超过5%。本章节指导您如何打开、修改或关闭SQL审计日志。
#### 支持的数据库版本
仅如下版本支持开启SQL审计功能并对接LTS。如果您的数据库引擎版本较低，请参考[升级内核小版本](https://support.huaweicloud.com/usermanual-rds-mysql/rds_05_0003.html)升级到最新版本。
- 对于RDS for MySQL 5.6云盘实例，支持5.6.43及其以上版本。
- 对于RDS for MySQL 5.6本地盘实例，支持5.6.47.3及其以上版本。
- 对于RDS for MySQL 5.7云盘实例，仅5.7.23及其以上版本支持开启SQL审计，开启后如需对接LTS，实例版本需要大于等于5.7.25。
- 对于RDS for MySQL 5.7本地盘实例，支持5.7.29.3及其以上版本。
- 支持RDS for MySQL 8.0版本。
- 支持RDS for MySQL 8.4版本。
 
#### 约束限制
表1审计日志约束限制 
| 审计日志类型  | 约束限制                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
|:---|:---|
| SQL审计日志 | - 高可用只读如果出现异常，在备只读顶替期间的审计日志不可见。  - 部分区域默认未开通LTS审计日志，如需配置LTS审计日志，请[提交工单](https://console.huaweicloud.com/ticket/?locale=zh-cn#/ticketindex/createIndex)申请权限。  - 主实例和只读实例都支持开启SQL审计日志。  - 审计日志使用UTC时间，不受时区配置的影响。  - 审计日志开通后，系统会将SQL操作记录下来，生成的审计日志文件会暂存在本地，随后上传到OBS并保存在备份存储空间。如果审计日志的大小超过了备份空间容量，就会按照超出的部分进行计费。  - 审计日志清理周期为1小时。修改审计日志的保留天数，1个小时后开始清理过期的审计日志。  - 审计日志开通后，在业务高峰期可能会产生大量的审计日志，导致本地暂存较多的日志文件，有磁盘打满风险，建议同步开启[磁盘自动扩容](https://support.huaweicloud.com/usermanual-rds-mysql/rds_05_0039.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| LTS审计日志 | - 访问日志提供了实例所请求的所有详细日志，日志存在LTS云日志服务中。  - 请确认是否已开启LTS的超额续传功能，如果没有开启，日志累计上传500MB至LTS之后就会达到上限，导致上传失败。更多内容，请参见[设置LTS日志采集配额和使用量预警](https://support.huaweicloud.com/usermanual-lts/lts_0904.html)。  - 配置完成后不会立即生效，存在10分钟左右的时延，请知悉。  - LTS审计日志配置成功后，会产生一定费用，具体计费可参考LTS的[定价详情](https://www.huaweicloud.com/pricing.html#/lts)。  - 在您进行LTS审计日志配置后，会默认上传所有审计策略。    - 同时开启SQL审计和开启审计日志上传LTS： - 开启SQL审计和LTS审计日志开关都会生成审计日志，请注意审计日志中敏感信息没有进行脱敏处理。  - 已开启SQL审计开关，此时再开启LTS审计日志，审计日志将延续已有的SQL操作类型策略，且会在原有的审计日志计费基础上增加您LTS的审计日志收费。原有的审计日志费用会在您关闭原有审计策略后终止。  - 已开启SQL审计开关，此时再开启LTS审计日志，出于对实例的正常运行考虑，建议保留原有审计策略一段时间，待LTS审计日志运转正常后，再关闭原有审计策略。    - 以下场景上传到LTS的审计日志记录可能会有丢失。若您的审计日志开关为打开的状态，您可以通过OBS下载全量的审计日志文件。 - 在业务量大、审计日志产生速度过快或者LTS服务故障等极端情况下，有较小概率会丢失部分日志记录。  - 当前上传LTS的单条审计日志记录上限为512KB，超过的部分会被截断。     |
   
#### 操作步骤
- [开启SQL审计日志]
  1. [登录RDS管理控制台](https://console.huaweicloud.com/rds/#/rds/management/list)。
  
  2. 单击管理控制台左上角的![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002593882307.png)，选择区域。
  
  3. 在"实例管理"页面，选择目标实例，单击实例名称，进入实例的"概览"页签。
  
  4. 在左侧导航栏单击"日志管理"，选择"SQL审计日志"。
  
  5. 单击"设置SQL审计"，在弹出框中设置SQL审计日志保留策略，单击"确定"，保存设置策略。 
     **开启或修改** **SQL审计** ：
     - 将单击![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002212222152.png)设置为![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002247222281.png)，开启SQL审计日志保留策略。
     
     - 保留天数默认为7天，可设置范围为1\~732天。
     
     - 打开审计日志快速轮转开关后，服务将每五分钟轮询一次审计日志，并将新产生的审计日志上传到OBS或LTS。
      
     图1设置SQL审计   
     ![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002633285676.png "点击放大")
     ![](https://support.huaweicloud.com/usermanual-rds-mysql/public_sys-resources/note_3.0-zh-cn.png)
     目前自定义操作项功能仅支持华北-北京四、华南-广州、中国-香港区域，其他区域如需使用该功能，请[提交工单](https://console.huaweicloud.com/ticket/?locale=zh-cn#/ticketindex/createIndex)申请开通。
     MySQL客户端使用PreparedStatement和定时任务执行的SQL语句分别属于PREPARED_STATEMENT和CREATE大类，JDBC使用PreparedStatement产生的SQL语句无法过滤。
     开启SQL审计后，支持数据定义（DDL）、数据操作（DML）、数据控制（DCL）、以及其他操作类型的权限，具体如下：
     表2DDL操作类型的权限 
     | 类型       | 具体权限                                                                                                                            | 备注                                  |
     |:---|:---|:---|
     | CREATE   | create_db, create_event, create_function, create_index, create_procedure, create_table, create_trigger, create_udf, create_view | -                                   |
     | ALTER    | alter_db, alter_db_upgrade, alter_event, alter_function, alter_instance, alter_procedure, alter_table, alter_tablespace         | 2024-01-26开始ALTER类型不支持alter_user权限。 |
     | DROP     | drop_db, drop_event, drop_function, drop_index, drop_procedure, drop_table, drop_trigger, drop_view                             | -                                   |
     | RENAME   | rename_table                                                                                                                    | -                                   |
     | TRUNCATE | truncate                                                                                                                        | -                                   |
     | REPAIR   | repair                                                                                                                          | 2024-01-26新增REPAIR类型。               |
     | OPTIMIZE | optimize                                                                                                                        | 2024-01-26新增OPTIMIZE类型。             |
        
     表3DML操作类型的权限 
     | 类型      | 具体权限                    | 备注                          |
     |:---|:---|:---|
     | INSERT  | insert, insert_select   | -                           |
     | DELETE  | delete, delete_multi    | -                           |
     | UPDATE  | update, update_multi    | 2024-01-26新增update_multi权限。 |
     | REPLACE | replace, replace_select | -                           |
     | SELECT  | select                  | -                           |
        
     表4DCL操作类型的权限 
     | 类型                      | 具体权限                             | 备注                                     |
     |:---|:---|:---|
     | CREATE_USER             | create_user                      | -                                      |
     | DROP_USER               | drop_user                        | -                                      |
     | RENAME_USER             | rename_user                      | -                                      |
     | GRANT                   | grant_roles, grant               | 2024-01-26新增grant_roles权限。             |
     | REVOKE                  | revoke, revoke_all, revoke_roles | 2024-01-26新增revoke_roles权限。            |
     | ALTER_USER              | alter_user                       | 2024-01-26新增ALTER_USER类型。              |
     | ALTER_USER_DEFAULT_ROLE | alter_user_default_role          | 2024-01-26新增ALTER_USER_DEFAULT_ROLE类型。 |
        
     表5其他操作类型的权限 
     | 类型                    | 具体权限                                                                         | 备注                              |
     |:---|:---|:---|
     | BEGIN/COMMIT/ROLLBACK | begin, commit, release_savepoint, rollback, rollback_to_savepoint, savepoint | -                               |
     | PREPARED_STATEMENT    | execute_sql,prepare_sql, dealloc_sql                                         | 2024-01-26新增dealloc_sql权限。      |
     | CALL_PROCEDURE        | call_procedure                                                               | 2024-01-26新增CALL_PROCEDURE类型。   |
     | KILL                  | kill                                                                         | 2024-01-26新增KILL类型。             |
     | SET_OPTION            | set_option                                                                   | 2024-01-26新增SET_OPTION类型。       |
     | CHANGE_DB             | change_db                                                                    | 2024-01-26新增CHANGE_DB类型。        |
     | UNINSTALL_PLUGIN      | uninstall_plugin                                                             | 2024-01-26新增UNINSTALL_PLUGIN类型。 |
     | INSTALL_PLUGIN        | install_plugin                                                               | 2024-01-26新增INSTALL_PLUGIN类型。   |
     | SHUTDOWN              | shutdown                                                                     | 2024-01-26新增SHUTDOWN类型。         |
     | SLAVE_START           | slave_start                                                                  | 2024-01-26新增SLAVE_START类型。      |
     | SLAVE_STOP            | slave_stop                                                                   | 2024-01-26新增SLAVE_STOP类型。       |
     | LOCK_TABLES           | lock_tables                                                                  | 2024-01-26新增LOCK_TABLES类型。      |
     | UNLOCK_TABLES         | unlock_tables                                                                | 2024-01-26新增UNLOCK_TABLES类型。    |
     | FLUSH                 | flush                                                                        | 2024-01-26新增FLUSH类型。            |
     | XA                    | xa_commit,xa_end,xa_prepare,xa_recover,xa_rollback,xa_start                  | 2024-01-26新增XA类型。               |
        
     **关闭SQL审计：**
     将![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002212222172.png)设置为单击![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002247222273.png)，关闭该SQL审计。
     勾选"确认关闭审计日志后，所有审计日志文件将立即删除。"复选框，表示同意删除审计日志。
     ![](https://support.huaweicloud.com/usermanual-rds-mysql/public_sys-resources/notice_3.0-zh-cn.png)
     SQL审计关闭后，所有审计日志都会被立即删除，不可恢复，请您谨慎操作。
     
     
   
- [配置LTS审计日志并查看分析视图]
  1. [登录RDS管理控制台](https://console.huaweicloud.com/rds/#/rds/management/list)。
  
  2. 单击管理控制台左上角的![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002593882307.png)，选择区域。
  
  3. 在"实例管理"页面，选择目标实例，单击实例名称，进入实例的"概览"页签。
  
  4. 在左侧导航栏单击"日志管理"。
  
  5. 选择"SQL审计日志"页签，单击页面右上方的"对接LTS配置"。
  
  6. 在右侧弹框中，勾选"日志对接LTS"，日志类型选择审计日志，在下拉框分别选择对应的日志组和日志流，单击"确定"。 
     图2LTS审计日志配置   
     ![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002633120148.png "点击放大")
     
     
  
  7. 如果已经配置LTS审计日志，在页面右上方，支持切换成分析视图，查看更详细的日志分析。 
     图3列表视图   
     ![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002636115686.png "点击放大")
     图4分析视图   
     ![](https://support.huaweicloud.com/usermanual-rds-mysql/zh-cn_image_0000002636128570.png "点击放大")
     - 在"日志搜索"页签，支持查看快速分析下方的结构化字段和索引配置字段、以及查看并下载日志内容。更多功能介绍，请参见[搜索与分析日志](https://support.huaweicloud.com/usermanual-lts/lts_07_0076.html)。
       关于分析视图中"原始日志"页面各字段说明，请参见[表6]。
        表6LTS审计日志字段说明 
       | 参数                | 说明                                                   |
       |:---|:---|
       | logType           | 日志类型，固定值audit_log。                                   |
       | instanceId        | 实例ID。                                                |
       | nodeId            | 实例下的节点ID。                                            |
       | _resource_id      | 资源ID，固定值DBS_AUDIT_LOG，用户无需关注。                        |
       | _resource_name    | 资源名称，固定值DBS_AUDIT_LOG，用户无需关注。                        |
       | _service_type     | 服务类型，固定值MySQL。                                       |
       | record_id         | 审计日志单条记录的记录ID，记录审计日志的每条SQL的唯一global id。              |
       | connection_id     | 该条记录执行的会话ID，与show processlist中的ID一致。                 |
       | connection_status | 会话状态，常见为执行语句的错误返回码，普通执行成功返回0。                        |
       | name              | 记录类型名称，通常情况下dml，ddl操作均为QUERY， 连接断开为CONNECT和QUIT。     |
       | timestamp         | 记录SQL执行完成时的UTC时间。                                    |
       | command_class     | 执行的SQL命令类型，内部为解析得到的SQL类型，例如select，update（连接断开不存在该项）。 |
       | sqltext           | 执行的SQL具体内容（连接断开审计不存在该项）。                             |
       | user              | 登录的账户。                                               |
       | host              | 登录的host，当本地登录时为localhost，远程登录为空。                     |
       | external_user     | 代理用户名称。                                              |
       | ip                | 通过远程连接的客户端IP，本地连接为空。                                 |
       | default_db        | 执行SQL时默认的数据库。                                        |
       | trx_id            | 执行SQL时的事务ID。                                         |
       | execute_time      | 执行SQL的耗时，单位：ms。                                      |
          
       
     
     - 在"统计图表"页签，支持使用表格、柱状图、折线图等图表类型展示不同场景数据。更多功能介绍，请参见[统计图表概述](https://support.huaweicloud.com/usermanual-lts/lts_05_0101.html)。
     
     - 在"日志分析"页签，支持对采集成功的日志数据进行搜索与分析。更多功能介绍，请参见[日志搜索与分析概述](https://support.huaweicloud.com/usermanual-lts/lts_0822.html)。
     
     - 在"实时日志"页签，支持查看实时上报的日志，实现对日志数据的快速检索与分析。更多功能介绍，请参见[查看实时日志](https://support.huaweicloud.com/usermanual-lts/lts_07_0088.html)。
     
     
     
     
   
#### 常见问题
#### 不开启SQL审计，只打开LTS审计日志开关是否也会产生SQL审计日志？
是的，也会产生。
#### LTS审计日志开关是开启状态，但是对应的日志流被删除，是否还会产生SQL审计日志？
在对应的日志流被删除的情况下，RDS for MySQL由于不感知任务流是否删除所以会继续产生审计日志，并且会尝试上报日志。对于上报失败的日志，由于本地最多保留50个日志，超过数量的日志会进行清理。
#### 如何下载SQL审计日志的CSV格式？
审计日志对接到LTS后，可以在LTS页面选择.csv格式进行下载。
#### 相关API
- [设置审计日志策略](https://support.huaweicloud.com/api-rds/rds_05_0001.html)
- [查询审计日志策略](https://support.huaweicloud.com/api-rds/rds_05_0002.html)
- [获取审计日志列表](https://support.huaweicloud.com/api-rds/rds_05_0003.html)
 
