SQL 数据库审核入门

审核 Azure SQL 数据库SQL 数据仓库会跟踪数据库事件,并将这些事件写入 Azure 存储帐户中的审核日志。 审核还可:

  • 帮助保持合规性、了解数据库活动,以及深入了解可以指明业务考量因素或疑似安全违规的偏差和异常。

  • 实现并促进遵从合规标准,但不能保证合规性。 有关支持标准法规的 Azure 计划的详细信息,请参阅 Azure 信任中心

Note

本主题适用于 Azure SQL 服务器,同时也适用于在 Azure SQL 服务器中创建的 SQL 数据库和 SQL 数据仓库数据库。 为简单起见,在提到 SQL 数据库和 SQL 数据仓库时,本文统称 SQL 数据库。

Azure SQL 数据库审核概述

可使用 SQL 数据库审核来:

  • 保留 选定事件的审核痕迹。 可以定义要审核的数据库操作的类别。
  • 报告 数据库活动。 可以使用预配置的报告和仪表板快速开始使用活动和事件报告。
  • 分析 报告。 可以查找可疑事件、异常活动和趋势。

可为不同类型的事件类别配置审核,如 为数据库设置审核 部分中所述。

Important

审核日志会写入 Azure 订阅的 Azure Blob 存储中的追加 Blob。

  • 追加 Blob 目前不支持高级存储。
  • 目前不支持 VNet 中的存储。

定义服务器级和数据库级审核策略

可为特定数据库定义审核策略,也可将审核策略定义为默认服务器策略:

  • 服务器策略适用于服务器上的所有现有数据库和新建数据库。

  • 如果启用服务器 blob 审核,它将一直应用于数据库。 将不考虑数据库审核设置审核数据库。

  • 除在服务器上启用 blob 审核外,在数据库或数据仓库上启用 blob 审核也不会替代或更改服务器 blob 审核的任何设置。 这两种审核会并存。 换言之,会并行对数据库执行两次审核;一次按服务器策略审核,一次按数据库策略审核。

    Note

    除非有以下需要,否则应该避免同时启用服务器 Blob 审核和数据库 Blob 审核:

    • 需要对特定数据库使用不同的存储帐户或保留期。
    • 对于与服务器上其他数据库不同的特定数据库,应审核事件类型或类别。 例如,可能拥有仅需要针对特定数据库进行审核的表插入。

    否则,建议仅启用服务器级 blob 审核,并对所有数据库禁用数据库级审核。

为数据库设置审核

以下部分介绍如何使用 Azure 门户配置审核。

  1. 转到 Azure 门户
  2. 导航到“SQL 数据库/服务器”窗格中“安全性”标题下的“审核”。

    导航窗格

  3. 如果想设置服务器审核策略,可以选择数据库审核页中的“查看服务器设置”链接。 然后,可查看或修改服务器审核设置。 服务器审核策略应用于此服务器上所有现有和新建数据库。

    导航窗格

  4. 如果希望在数据库级别启用审核,请将“审核”切换到“启用”。

    如果启用了服务器审核,数据库配置的审核将与服务器审核并存。

    导航窗格

  5. 若要配置将审核日志写入存储帐户的操作,请选择“存储”,打开“存储详细信息”。 依次选择要用于保存日志的 Azure 存储帐户以及保持期。 将删除旧日志。 。

    存储帐户

  6. 单击“保存” 。

  7. 若要自定义已审核的事件,可通过 PowerShell cmdletREST API 执行此操作。
  8. 配置审核设置后,可打开新威胁检测功能,并配置电子邮件用于接收安全警报。 使用威胁检测时,会接收针对异常数据库活动(可能表示潜在的安全威胁)发出的前瞻性警报。 有关详细信息,请参阅威胁检测入门

Important

在 Azure SQL 数据仓库或在具有 Azure SQL 数据仓库的服务器上启用审核将导致数据仓库恢复,即使在以前被暂停的情况下也是如此。 请确保在启用审核后再次暂停数据仓库

分析审核日志和报告

如果选择将审核日志写入到 Azure 存储帐户,可以使用多种方法来查看日志:

  • 审核日志会在安装期间选择的帐户中进行聚合。 可使用 Azure 存储资源管理器等工具浏览审核日志。 在 Azure 存储中,审核日志以 Blob 文件集合的形式保存在名为 sqldbauditlogs 的容器中。 有关存储文件夹层次、命名约定和日志格式的详细信息,请参阅 Blob 审核日志格式参考

  • 使用 Azure 门户。 打开相关数据库。 在数据库的“审核”页的顶部,单击“查看审核日志”。

    导航窗格

    此时会打开“审核记录”,可在其中查看日志。

    • 可单击“审核记录”页顶部的“筛选”,查看特定的日期。
    • 可以通过切换“审核源”在服务器审核策略和数据库审核策略创建的审核记录之间进行切换。
    • 通过选中“仅显示 SQL 注入的审核记录”复选框,可以仅查看与 SQL 注入相关的审核记录。

      导航窗格

  • 使用系统函数 sys.fn_get_audit_file (T-SQL) 以表格格式返回审核日志数据。 有关使用此函数的详细信息,请参阅 sys.fn_get_audit_file

  • 使用 SQL Server Management Studio 中的“合并审核文件”选项(从 SSMS 17 开始):

    1. 在 SSMS 菜单中,选择“文件” > “打开” > “合并审核文件”。

      导航窗格

    2. 此时会打开“添加审核文件”对话框。 通过“添加”选项,选择是合并本地磁盘中的审核文件还是从 Azure 存储中导入。 需要提供 Azure 存储详细信息和帐户密钥。

    3. 添加要合并的所有文件后,单击“确定”完成合并操作。

    4. 合并的文件会在 SSMS 中打开,可在其中进行查看和分析,以及将其作为 XEL 或 CSV 文件导出或导出到表中。

  • 使用 Power BI。 可在 Power BI 中查看和分析审核日志数据。 如需详细信息并访问可下载的模板,请参阅在 Power BI 中分析审核日志

  • 通过门户或使用 Azure 存储资源管理器等工具从 Azure 存储 blob 容器下载日志文件。

    • 在本地下载日志文件后,可双击打开文件,然后在 SSMS 中查看和分析日志。
    • 也可通过 Azure 存储资源管理器同时下载多个文件。 为此,请右键单击特定子文件夹,然后选择“另存为”,以便在本地文件夹中进行保存。
  • 其他方法:

    • 下载多个文件或包含日志文件的子文件夹后,可以按照前述 SSMS 合并审核文件说明在本地合并它们。
    • 以编程方式查看 blob 审核日志:

生产做法

审核异地复制的数据库

通过异地复制数据库,在主数据库上启用审核时,辅助数据库将有相同的审核策略。 还可以在独立于主数据库的“辅助服务器”上启用审核,从而在辅助数据库上设置审核。

  • 服务器级(推荐):同时在主服务器和辅助服务器上启用审核 - 基于各自的服务器级策略,将分别对主数据库和辅助数据库进行审核。
  • 数据库级:辅助数据库的数据库级审核只能从主数据库审核设置进行配置。

    • 必须在主数据库本身上启用审核,而不是在服务器上启用。
    • 在主数据库上启用审核后,也会在辅助数据库上启用审核。

      Important

      在数据库级审核中,辅助数据库的存储设置与主数据库相同,因而会导致生成跨区域流量。 建议仅启用服务器级审核,并对所有数据库禁用数据库级审核。

重新生成存储密钥

在生产环境中,可能会定期刷新存储密钥。 如果向 Azure 存储写入审核日志,则需在刷新密钥时重新保存审核策略。 过程如下:

  1. 打开“存储详细信息”。 在“存储访问密钥”框中,选择“辅助”并单击“确定”。 然后单击“审核配置”页顶部的“保存”。

    导航窗格

  2. 转到存储配置页,重新生成主访问密钥。

    导航窗格

  3. 返回“审核配置”页,将“存储访问密钥”从“辅助”切换为“主要”,然后单击“确定”。 然后单击“审核配置”页顶部的“保存”。
  4. 返回“存储配置”页并重新生成辅助访问密钥(为下一个密钥刷新周期做好准备)。

其他信息

  • 有关日志格式、存储文件夹的层次结构和命名约定的详细信息,请参阅 Blob 审核日志格式参考

    Important

    Azure SQL 数据库审核在审核记录中存储字符字段的 4000 个字符的数据。 当可审核操作返回的语句data_sensitivity_information 值包含超过 4000 个的字符时,超出前 4000 个字符的任何数据将被截去不进行审核

  • 审核日志会写入 Azure 订阅的 Azure Blob 存储中的追加 Blob。

    • 追加 Blob 目前不支持高级存储。
    • 目前不支持 VNet 中的存储。
  • 默认审核策略包括所有操作和下列操作组集合,将用于审核针对数据库执行的所有查询和存储过程以及成功和失败的登录:

    BATCH_COMPLETED_GROUP
    SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP
    FAILED_DATABASE_AUTHENTICATION_GROUP

    可以按照使用 Azure PowerShell 管理 SQL 数据库审核部分中所述,使用 PowerShell 配置不同类型的操作和操作组的审核。

使用 Azure PowerShell 管理 SQL 数据库审核

PowerShell cmdlet

有关脚本示例,请参阅使用 PowerShell 配置审核和威胁检测

使用 REST API 管理 SQL 数据库审核

REST API - Blob 审核

支持使用 WHERE 子句执行附加筛选的扩展策略: