
# 开启TaurusDB SQL审计日志
#### 操作场景
当您开通SQL审计功能，系统会将所有的SQL操作记录下来存入日志文件，方便用户[下载](https://support.huaweicloud.com/usermanual-taurusdb/taurusdb_03_0718.html)并查询。TaurusDB默认关闭SQL审计功能，开启此功能可能会影响数据库性能，性能影响程度与审计日志的吞吐量相关。
本章节指导您如何打开、修改或关闭SQL审计日志。
#### 支持的数据库内核版本
内核版本必须大于等于2.0.60.241200。如果您的数据库引擎版本较低，请参考[升级内核小版本](https://support.huaweicloud.com/usermanual-taurusdb/taurusdb_05_2265.html)升级到最新版本。内核版本的查询方法请参见[如何查看云数据库 TaurusDB实例的版本号](https://support.huaweicloud.com/taurusdb_faq/taurusdb_faq_0141.html)。
#### 使用须知
表1审计日志约束 
| 审计日志类型  | 约束限制                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
|:---|:---|
| SQL审计日志 | - 支持TaurusDB企业版和Serverless。  - SQL审计日志仅会记录在内核中已执行完成的SQL**。**  - 规格变更期间，需要进行配置同步，会导致部分流量不被SQL审计日志记录。  - SQL审计日志使用UTC时间，不受时区配置的影响。  - SQL审计日志开通后，系统会将SQL操作记录下来，生成的审计日志文件会暂存在本地，随后上传到OBS并保存在备份存储空间。  - SQL审计日志清理周期为1小时，每隔1小时清理超过保留天数的审计日志。修改审计日志的保留天数后1个小时后生效。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| LTS审计日志 | - 访问日志提供了实例所请求的所有详细日志，日志存在LTS云日志服务中。  - 配置完成后不会立即生效，存在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，超过的部分会被截断。    - 日志配置解除后，所产生的日志记录不会再向LTS服务上传。  - 日志配置解除后，不会立即生效，会有10分钟左右的时延。   |
   
#### 配置审计日志
- [开启SQL审计日志]
  1. [登录TaurusDB管理控制台](https://console.huaweicloud.com/gaussdbformysql/#/management/list)。
  
  2. 单击管理控制台左上角的![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002671347251.png)，选择区域。
  
  3. 在"实例管理"页面，选择目标实例，单击实例名称，进入实例的"实例概览"页签。
  
  4. 在左侧导航栏选择"SQL审计"。
  
  5. 单击"设置SQL审计"，在弹框中开启审计日志开关，设置SQL审计日志保留天数和操作类型，保留天数默认为7天，可设置范围为1\~732天。 
     图1设置SQL审计   
     ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002550357199.png "点击放大")
     
     开启SQL审计后，支持数据定义（DDL）、数据操作（DML）、数据控制（DCL）、以及其他操作类型的权限，详情见下表。
     其中MySQL客户端使用PreparedStatement和定时任务执行的SQL语句分别属于PREPARED_STATEMENT和CREATE大类，JDBC使用PreparedStatement产生的SQL语句无法过滤。
     表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         |
     | DROP     | drop_db, drop_event, drop_function, drop_index, drop_procedure, drop_table, drop_trigger, drop_view                             |
     | RENAME   | rename_table                                                                                                                    |
     | TRUNCATE | truncate                                                                                                                        |
     | REPAIR   | repair                                                                                                                          |
     | OPTIMIZE | optimize                                                                                                                        |
        
     表3DML操作类型的权限 
     | 类型      | 具体权限                    |
     |:---|:---|
     | INSERT  | insert, insert_select   |
     | DELETE  | delete, delete_multi    |
     | UPDATE  | update, 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               |
     | REVOKE                  | revoke, revoke_all, revoke_roles |
     | ALTER_USER              | alter_user                       |
     | ALTER_USER_DEFAULT_ROLE | 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                                         |
     | CALL_PROCEDURE        | call_procedure                                                               |
     | KILL                  | kill                                                                         |
     | SET_OPTION            | set_option                                                                   |
     | CHANGE_DB             | change_db                                                                    |
     | UNINSTALL_PLUGIN      | uninstall_plugin                                                             |
     | INSTALL_PLUGIN        | install_plugin                                                               |
     | SHUTDOWN              | shutdown                                                                     |
     | SLAVE_START           | slave_start                                                                  |
     | SLAVE_STOP            | slave_stop                                                                   |
     | LOCK_TABLES           | lock_tables                                                                  |
     | UNLOCK_TABLES         | unlock_tables                                                                |
     | FLUSH                 | flush                                                                        |
     | XA                    | xa_commit,xa_end,xa_prepare,xa_recover,xa_rollback,xa_start                  |
        
     
     
  
  6. 单击"确定"，保存设置策略。
  
  7. 如果您需要关闭SQL审计功能，单击"设置SQL审计"，将![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002550317195.png)设置为单击![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002518637456.png)，单击"确定"关闭该SQL审计。
     
     勾选"确认关闭审计日志后，所有审计日志文件将立即删除。"复选框，表示同意删除审计日志。
     ![](https://support.huaweicloud.com/usermanual-taurusdb/public_sys-resources/caution_3.0-zh-cn.png)
     SQL审计关闭后，所有审计日志都会被立即删除，不可恢复，请您谨慎操作。
     
     
   
- [配置LTS审计日志]
  1. [登录TaurusDB管理控制台](https://console.huaweicloud.com/gaussdbformysql/#/management/list)。
  
  2. 单击管理控制台左上角的![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002671347251.png)，选择区域。
  
  3. 在"实例管理"页面，选择目标实例，单击实例名称，进入实例的"实例概览"页签。
  
  4. 在左侧导航栏单击"SQL审计"。
  
  5. 单击"LTS审计日志配置"右侧的![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002238975002.png)。
  
  6. 在弹框中为需要配置的日志类型选择日志组和日志流，单击"确定"。 
     图2LTS审计日志配置   
     ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002273814309.png "点击放大")
     
     
     
  
  7. 配置成功后，如需修改日志组和日志流，单击"编辑"。 
     图3修改日志组和日志流   
     ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002238815182.png "点击放大")
     
     
     
  
  8. 弹框中修改成功后单击"确定"，保存修改。
   
#### 解除审计日志配置
1. [登录TaurusDB管理控制台](https://console.huaweicloud.com/gaussdbformysql/#/management/list)。
2. 单击管理控制台左上角的![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002671347251.png)，选择区域。
3. 在"实例管理"页面，选择目标实例，单击实例名称，进入实例的"实例概览"页签。
4. 在左侧导航栏单击"SQL审计"。
5. 单击"LTS审计日志配置"右侧的![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002273814329.png "点击放大")。
6. 弹框中单击"是"，解除配置。 
   图4解除审计日志配置   
   ![](https://support.huaweicloud.com/usermanual-taurusdb/figure/zh-cn_image_0000002238815202.png "点击放大")
   
   
   
 
#### 常见问题
#### 不开启SQL审计，只打开LTS审计日志开关是否也会产生SQL审计日志？
是的，也会产生。
#### LTS审计日志开关是开启状态，但是对应的日志流被删除，是否还会产生SQL审计日志？
在对应的日志流被删除的情况下，TaurusDB由于不感知任务流是否删除所以会继续产生审计日志，并且会尝试上报日志。对于上报失败的日志，由于本地最多保留50个日志，超过数量的日志会进行清理。
#### 相关API
- [获取审计日志列表](https://support.huaweicloud.com/api-taurusdb/ListAuditLogs.html)
- [设置审计日志策略](https://support.huaweicloud.com/api-taurusdb/SetAuditLogPolicy.html)
- [查询审计日志策略](https://support.huaweicloud.com/api-taurusdb/ShowAuditLogPolicy.html)
- [生成审计日志下载链接](https://support.huaweicloud.com/api-taurusdb/ShowAuditLogDownloadLink.html)
 
