# 管理SQL审计日志
RDS for SQL Server实例支持手动设置SQL审计日志策略。SQL审计功能会将对服务级、数据库级、表级的主要变更操作记录进审计日志文件，方便用户查看并下载。**本章节介绍如何手动开启和下载SQL审计日志，以及SQL审计日志对接LTS的操作步骤。**
#### 运行日志中的审计日志与手动设置审计日志策略的区别
表1功能区别说明 
| 功能                                                                                                                                                            | 是否默认开启          | 日志存放位置 | 保存时长                                                                                                           | 对性能的影响            |
|:---|:---|:---|:---|:---|
| [运行日志中的审计日志](https://support.huaweicloud.com/usermanual-rds-mssql/rds_sqlserver_01_0003.html#rds_sqlserver_01_0003__section16136525155812)                      | 默认开启，并且不支持关闭。  | 虚拟机   | 随文件数轮转，保留时间短。                                                                                                  | 非全量审计数据，无性能影响。    |
| [手动设置审计日志策略](https://support.huaweicloud.com/usermanual-rds-mssql/rds_sqlserver_sql_auditing_log.html#rds_sqlserver_sql_auditing_log__section16136525155812) | 支持手动开启，开启后可以关闭。  | OBS桶   | 控制台自行设置，保留时间长。 保留天数默认为7天，可设置范围为1\~732天。 | 非全量审计数据，无性能影响。  |
| [审计日志对接LTS](https://support.huaweicloud.com/usermanual-rds-mssql/rds_sqlserver_sql_auditing_log.html#rds_sqlserver_sql_auditing_log__section3587717134311)    | 支持手动对接，也可以解除对接。 | LTS    | 保留时长由LTS设置。                                                                                                      | 全量数据，对性能会有部分消耗。 |
   
#### 审计日志功能介绍
使用RDS for SQL Server Audit 功能，您可以对服务器级别和数据库级别事件组以及各个事件进行审核，RDS for SQL Server审核包括零个或多个审核操作项目。
- 目前支持用户修改操作组和过滤条件，[表2]展示了支持用户自定义配置的操作组。
- [表3]介绍了服务器级审核操作组，并提供了适用的等效RDS for SQL Server事件类。有关详细信息，请参阅[SQL Server 审核操作组官方说明](https://docs.microsoft.com/zh-cn/sql/relational-databases/security/auditing/sql-server-audit-action-groups-and-actions?view=sql-server-2017)。
![](https://support.huaweicloud.com/usermanual-rds-mssql/public_sys-resources/note_3.0-zh-cn.png)
- 审计日志的每个文件最大50MB，可以保留50个文件。
- RDS for SQL Server 2008 web版和RDS for SQL Server 2008 标准版不支持SQL审计功能。
- 创建job，修改参数，修改服务器属性参数，sql agent属性参数，数据库扩展属性等暂无审计。
- 审计日志中出现"succeeded"字段，表示触发事件的操作是否成功。 该字段不可为 null。 对于除登录事件之外的所有事件，它仅报告权限检查（而不是操作）成功或失败。
- 表级、列级架构变化审计描述请以RDS for SQL Server引擎审计结果为准。
- 如果需要读取审计日志内容，可以从控制台获取审计日志文件名后，直接进行查询： **select \* from msdb.dbo.rds_fn_get_audit_file('D:\\ServerAudit\\audit\\RDSAudit_test.sqlaudit', default, default)**
  如果将审计日志下载到本地，需要连上本地的SQL Server后，通过本地路径进行查询（本地账号需要有CONTROL SERVER权限）：
  **select \* from sys.fn_get_audit_file('\\\\path\\RDSAudit_test.sqlaudit', default, default)**
  
 
 表2用户自定义配置的操作组 
| 操作组名称                                    | 描述                                                           |
|:---|:---|
| SUCCESSFUL_LOGIN_GROUP                    | 指示主体已成功登录到 SQL Server。 此类中的事件由新连接引发或由连接池中重用的连接引发。          |
| FAILED_LOGIN_GROUP                         | 指示主体尝试登录到SQL Server，但是失败。此类中的事件由新连接引发或由连接池中重用的连接引发。        |
| SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP | 指示一个主体已成功登录到一个独立数据库。                                        |
| FAILED_DATABASE_AUTHENTICATION_GROUP   | 指示某个主体尝试登录到隔离数据库但未成功。 此类中的事件由新连接引发或由连接池中重用的连接引发。             |
| BATCH_COMPLETED_GROUP                    | 该事件在批处理文本、存储过程或事务管理操作执行完成后触发，用于审核从客户端发送的整个批处理或存储过程文本（包括结果）。 |
   
 表3审计包含的操作组 
| 操作组名称                                     | 描述                                                                        |
|:---|:---|
| APPLICATION_ROLE_CHANGE_PASSWORD_GROUP    | 更改应用程序角色的密码引发事件。                                                           |
| DATABASE_CHANGE_GROUP                   | 创建、更改、删除数据库。                                                             |
| DATABASE_OBJECT_CHANGE_GROUP               | 针对数据库对象（如架构）执行create/alter/drop语句时将引发此事件。                                |
| DATABASE_OBJECT_OWNERSHIP_CHANGE_GROUP     | 在数据库范围内更改对象所有者时，将触发此事件。                                                    |
| DATABASE_OBJECT_PERMISSION_CHANGE_GROUP | 针对数据库对象（例如，程序集和架构）发出GRANT、REVOKE或DENY语句时将引发此事件。                            |
| DATABASE_OWNERSHIP_CHANGE_GROUP      | 使用alter authorization语句更改数据库的所有者时，引发此事件。                                  |
| DATABASE_PERMISSION_CHANGE_GROUP         | sqlserver中任何主体针对某语句权限发出的GRANT、REVOKE或DENY语句时均引发此事件（仅适用于数据库事件，例如授予对某数据库的权限） |
| DATABASE_PRINCIPAL_CHANGE_GROUP            | 在数据库中创建、更改或删除主体（如用户）时，将引发此事件。                                             |
| DATABASE_ROLE_MEMBER_CHANGE_GROUP          | 向数据库角色添加登录名或从中删除登录名时将引发此事件。                                             |
| LOGIN_CHANGE_PASSWORD_GROUP              | 通过alter login语句或sp_password 存储过程更改登录密码时，将引发此事件。                          |
| SCHEMA_OBJECT_CHANGE_GROUP                | 针对架构执行create、alter或drop 操作时引发此事件。                                         |
| SCHEMA_OBJECT_OWNERSHIP_CHANGE_GROUP      | 检查更改架构对象（例如表、过程或函数）的所有者的权限时，会引发此事件。                                        |
| SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP   | 对架构对象执行grant、deny或revoke语句时将引发此事件。                                         |
| SERVER_OBJECT_CHANGE_GROUP               | 针对服务器对象执行create、alter、drop操作时引发此事件。                                      |
| SERVER_OBJECT_OWNERSHIP_CHANGE_GROUP     | 服务器范围中的对象的所有者发生更改时将引发此事件。                                                 |
| SERVER_OBJECT_PERMISSION_CHANGE_GROUP     | sqlserver中的任何主体针对某服务器对象权限发出grant、revoke、deny语句时，将引发此事件。                  |
| SERVER_PERMISSION_CHANGE_GROUP            | 为获取服务器范围内的权限而发出grant、revoke、deny语句时，将引发此事件。                               |
| SERVER_PRINCIPAL_CHANGE_GROUP            | 创建、更改、删除服务器主体时将引发此事件。                                                      |
| SERVER_ROLE_MEMBER_CHANGE_GROUP          | 向固定服务器角色添加登录名或从中删除登录名时将引发此事件。                                            |
| SERVER_STATE_CHANGE_GROUP                  | 修改SQL Server服务状态时将引发此事件。                                                 |
| USER_CHANGE_PASSWORD_GROUP                 | 每当使用alter user语句更改包含数据库用户的密码时，都将引发此事件。（SQL Server 2008版本不涉及）。              |
   
#### 开启或下载SQL审计日志
- [开启SQL审计日志]
  
  1. [登录RDS管理控制台](https://console.huaweicloud.com/rds/#/rds/management/list)。
  
  2. 单击管理控制台左上角的![](https://support.huaweicloud.com/usermanual-rds-mssql/zh-cn_image_0000002572991262.png)，选择区域。
  
  3. 在"实例管理"页面，选择目标实例，单击实例名称，进入实例的"概览"页签。
  
  4. 在左侧导航栏单击"日志管理"，选择"SQL审计日志"。
  
  5. 单击"设置SQL审计"，在弹出框中设置SQL审计日志保留策略，单击"确定"，保存设置策略。 
     如果已经[配置LTS审计日志]，在页面右上方，支持切换成分析视图，查看更详细的日志分析。更多内容，请参见[管理日志组](https://support.huaweicloud.com/usermanual-lts/lts_04_0003.html)。
     **开启或修改SQL审计：**
     - 将单击![](https://support.huaweicloud.com/usermanual-rds-mssql/zh-cn_image_0000002520758034.png)设置为![](https://support.huaweicloud.com/usermanual-rds-mssql/zh-cn_image_0000002551798059.png)，开启SQL审计日志保留策略。
     
     - 保留天数默认为7天，可设置范围为1\~732天。
     
     - 添加审计操作组，可配置的操作组参考[表2]。
     
     - 设置筛选条件，目前支持client_ip、application_name、database_name字段进行过滤。
     
     
     图1RDS for SQL Server审计日志   
     ![](https://support.huaweicloud.com/usermanual-rds-mssql/zh-cn_image_0000002706711067.png "点击放大")
     **关闭SQL审计：**
     将![](https://support.huaweicloud.com/usermanual-rds-mssql/zh-cn_image_0000002551878103.png)设置为单击![](https://support.huaweicloud.com/usermanual-rds-mssql/zh-cn_image_0000002520758150.png)，关闭该SQL审计。
     勾选"确认关闭审计日志后，所有审计日志文件将立即删除。"复选框，表示同意删除审计日志。
     ![](https://support.huaweicloud.com/usermanual-rds-mssql/public_sys-resources/notice_3.0-zh-cn.png)
     SQL审计关闭后，所有审计日志都会被立即删除，不可恢复，请您谨慎操作。
     
     
   
- [下载审计日志]
  1. [登录RDS管理控制台](https://console.huaweicloud.com/rds/#/rds/management/list)。
  
  2. 单击管理控制台左上角的![](https://support.huaweicloud.com/usermanual-rds-mssql/zh-cn_image_0000002572991262.png)，选择区域。
  
  3. 在"实例管理"页面，选择目标实例，单击实例名称，进入实例的"概览"页签。
  
  4. 在左侧导航栏单击"日志管理"，选择"SQL审计日志"。
  
  5. 在审计日志列表右上方选择时间范围，勾选目标日志，并单击列表左上方的"下载"，批量下载SQL审计日志。 
     您还可以选择单个审计日志，单击操作列中的"下载"，下载目标SQL审计日志。
     
     
   
- [配置LTS审计日志]
  
  1. [登录RDS管理控制台](https://console.huaweicloud.com/rds/#/rds/management/list)。
  
  2. 单击管理控制台左上角的![](https://support.huaweicloud.com/usermanual-rds-mssql/zh-cn_image_0000002572991262.png)，选择区域。
  
  3. 在"实例管理"页面，选择目标实例，单击实例名称，进入实例的"概览"页签。
  
  4. 在左侧导航栏单击"日志管理"。
  
  5. 选择"SQL审计日志"页签，单击页面右上方的"对接LTS配置"。
  
  6. 在右侧弹框中，日志类型选择审计日志，在下拉框分别选择对应的日志组和日志流，单击"确定"。 
     图2LTS审计日志配置   
     ![](https://support.huaweicloud.com/usermanual-rds-mssql/zh-cn_image_0000002520918228.png "点击放大")
     - 访问日志提供了实例所请求的所有详细日志，日志存在LTS云日志服务中。
     
     - 配置完成后不会立即生效，存在10分钟左右的时延，请知悉。
     
     - LTS审计日志配置成功后，会产生一定费用，具体计费可参考LTS的[定价详情](https://www.huaweicloud.com/pricing.html#/lts)。
     
     - 开启SQL审计日志对接至LTS后，可以在LTS控制台界面看到明文日志，请谨慎操作。
     
     - 在业务高峰期，本地可能会暂存较多的日志文件，有磁盘打满风险，建议同步开启磁盘自动扩容。
     
     - 在您进行LTS审计日志配置后，会默认上传所有审计策略。
     
     
     
     
   
