# 管理运行日志中的审计日志
RDS for SQL Server实例默认开启运行日志中的SQL审计功能，并且不支持关闭。SQL审计功能会将对服务级、数据库级、表级的主要变更操作记录进审计日志文件，方便用户查看并下载。**本章节介绍如何查看和下载运行日志中的审计日志。**
#### 运行日志中的审计日志与手动设置审计日志策略的区别
表1功能区别说明 
| 功能                                                                                                                                                            | 是否默认开启          | 日志存放位置 | 保存时长                                                                            | 对性能的影响            |
|:---|:---|:---|:---|:---|
| [运行日志中的审计日志]                                                                                                     | 默认开启，并且不支持关闭。  | 虚拟机   | 随文件数轮转，保留时间短。                                                                   | 非全量审计数据，无性能影响。    |
| [手动设置审计日志策略](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版本不涉及）。              |
   
#### 查看或下载审计日志
- [查看审计日志]
  
  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. 在"下载"页面，记录所生成的审计日志文件名。
     
     图1RDS for SQL Server审计日志   
     ![](https://support.huaweicloud.com/usermanual-rds-mssql/zh-cn_image_0000002520763396.png "点击放大")
     ![](https://support.huaweicloud.com/usermanual-rds-mssql/public_sys-resources/note_3.0-zh-cn.png)
     审计日志文件名称以RDSAudit开头，会自动添加GUID和时间戳组合为文件名。
     
     
  
  6. 通过SQL Server客户端连接目标实例，具体操作请参见[通过公网连接SQL Server实例](https://support.huaweicloud.com/usermanual-rds-mssql/rds_mssql_connect_06.html)。
  
  7. 目标实例连接成功后，通过执行如下sql查看审计日志详情。 
     **select \* from msdb.dbo.rds_fn_get_audit_file(** *file_pattern* **,** *initial_file_name* **,** *audit_record_offset* **)**
     表4参数说明 
     | 参数                     | 说明                                       |
     |:---|:---|
     | *file_pattern*          | 指定要读取的审核文件集目录（或路径）和文件名。                  |
     | *initial_file_name*       | 指定审核文件集中要开始读取审核记录的特定文件的路径和名称。            |
     | *audit_record_offset* | 指定一个已知位置，该位置包含initial_file_name指定的文件。 |
        
     查看审计日志详情，示例如下：
     **select \* from msdb.dbo.rds_fn_get_audit_file('D:\\ServerAudit\\audit\\\*.sqlaudit', default, default)**
     图2审计日志详情   
     ![](https://support.huaweicloud.com/usermanual-rds-mssql/zh-cn_image_0000002249955001.png "点击放大")
     
     
   
- [下载审计日志]
  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. 选择目标日志文件，单击操作列中的"下载"。 
     1. 系统会在"下载"弹出框中自动加载下载准备任务，加载时长受日志文件大小及网络环境影响。
        - 下载准备过程中，状态显示为"准备中..."。
        
        - 下载准备完成，状态显示为"准备完成"。
        
        - 下载准备工作失败，状态显示为"异常"。
         
     
     2. 在"下载"弹出框中，对于"准备完成"的日志文件，单击"确定"，下载审计日志。单击"取消"，则不下载审计日志文件，直接返回下载页签。 下载链接有效期为5分钟。如果超时，提示用户下载链接已失效，关闭窗口后执行[5]重新下载日志文件。
        
     
     
     
     
   
