您现在访问的是微软AZURE全睃版技术文档网站,若需覝访问由世纪互蝔违蝥的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn.

SQL 漏洞评估可帮助识别数据库漏洞

适用于: Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics

SQL 漏洞评估是一项易于配置的服务,可发现、跟踪并帮助修正潜在的数据库漏洞。 可以使用此工具积极提升数据库安全性。

漏洞评估是 Azure Defender for SQL 产品/服务(高级 SQL 安全功能的统一包)的一部分。 可通过中心 Azure Defender for SQL 门户访问和管理漏洞评估。

备注

Azure SQL 数据库、Azure SQL 托管实例和 Azure Synapse Analytics 支持漏洞评估。 本文其余部分将 Azure SQL 数据库、Azure SQL 托管实例和 Azure Synapse 中的数据库统称为数据库,并且服务器指的是为 Azure SQL 数据库和 Azure Synapse 托管数据库的服务器

什么是 SQL 漏洞评估?

SQL 漏洞评估是一种提供对于安全状态的可见性的服务。 漏洞评估包括用于解决安全问题和增强数据库安全性的可操作步骤。 它可帮助监视难以跟踪更改的动态数据库环境,并改善 SQL 安全状况。

漏洞评估是一种内置于 Azure SQL 数据库中的扫描服务。 该服务采用一个可以标记安全漏洞的规则知识库。 它会重点列出违背最佳做法的情况,例如配置不当、权限过度分配以及敏感数据未受保护。

这些规则基于 Microsoft 的最佳做法,并专注于对数据库及其重要数据有最大风险的安全问题。 它们涵盖了数据库级别的问题以及服务器级别的安全问题,例如服务器防火墙设置和服务器级别的权限。

扫描结果包括旨在解决每个问题的可操作步骤,并提供自定义修正脚本(若适用)。 可以通过设置以下各项的可接受基线,来为环境自定义评估报告:

  • 权限配置
  • 功能配置
  • 数据库设置

配置漏洞评估

执行以下步骤可配置漏洞评估:

  1. Azure 门户中打开 Azure SQL 数据库、SQL 托管实例数据库或 Azure Synapse 中的特定资源。

  2. 在“安全性”标题下,选择“安全中心” 。

  3. 选择“配置”,打开整个服务器或托管实例的 Azure Defender for SQL 设置窗格。

    打开 Defender for SQL 配置页

    备注

    SQL 漏洞评估要求 Azure Defender for SQL 计划能够运行扫描。 有关如何启用 Azure Defender for SQL 的详细信息,请参阅 Azure Defender for SQL

  4. 在“服务器设置”页中,定义 Azure Defender for SQL 设置:

    配置 SQL 漏洞评估扫描

    1. 配置一个存储帐户,以在其中存储针对服务器或托管实例上所有数据库的扫描结果。 有关存储帐户的详细信息,请参阅关于 Azure 存储帐户

      提示

      有关在防火墙和 VNet 后面存储漏洞评估扫描的详细信息,请参阅将漏洞评估扫描存储在可从防火墙和 Vnet 后面访问的存储帐户中

    2. 若要将漏洞评估配置为每周自动运行,以检测安全错误配置,请将“定期扫描”设置为“开” 。 结果会发送到你在“发送扫描报告到”中提供的电子邮件地址。 你还可通过启用“向管理员和订阅所有者发送电子邮件通知”,将电子邮件通知发送给管理员和订阅所有者。

  5. SQL 漏洞评估扫描也可按需运行:

    1. 在资源的“安全中心”页上,选择“查看漏洞评估中的其他发现”,访问上一次扫描的扫描结果。

      打开“扫描结果”和“手动扫描”选项

    2. 若要运行按需扫描以扫描数据库中的漏洞,请从工具栏中选择“扫描”:

      将扫描选为运行 SQL 资源的按需运行漏洞评估扫描

备注

扫描是轻型的安全功能。 运行扫描只需花费几秒时间,并且完全是只读操作。 此操作不会对数据库做出任何更改。

修正漏洞

漏洞扫描完成时,报告会显示在 Azure 门户中。 报告会显示:

  • 安全状态概述
  • 发现的问题数,以及
  • 根据风险的严重性整理的摘要
  • 供进一步调查使用的结果列表

SQL 漏洞评估扫描仪中的 Sampl 扫描报告

若要修正发现的漏洞:

  1. 查看结果并确定报告中发现的哪些问题是环境中真正存在的安全问题。

  2. 选择每个失败的结果以了解其影响,以及安全检查失败的原因。

    提示

    结果详细信息页包括了说明如何解决该问题的可操作的修正信息。

    检查漏洞扫描的结果

  3. 在查看评估结果时,可将特定结果标记为环境中可接受的基线。 基线本质上是对结果报告方式的自定义。 在后续扫描中,与基线相匹配的结果被视为通过。 建立基线安全状态后,漏洞评估仅报告与基线的偏差。 这样,你可以专注于处理相关问题。

    批准查找作为基线以便将来进行扫描

  4. 如果更改基线,请使用“扫描”按钮来运行按需扫描并查看自定义报告。 添加到基线的任何发现将会出现在“通过”中,其中指示了它们因基线更改而通过。

    通过的评估表明它们已通过每个自定义基线

你的漏洞评估扫描现可用于确保数据库维持高级别的安全性,并满足组织策略。

高级功能

导出评估报告

选择“导出扫描结果”,创建可供下载的扫描结果 Excel 报表。 此报告包含显示了评估摘要的摘要选项卡。 此报告包括所有失败的检查。 它还包括一个“结果”选项,其中包含全部扫描结果。 结果包括运行的所有检查,以及每项检查的结果详细信息。

查看扫描历史记录

选择漏洞评估窗格中的“扫描历史记录”,查看以前对此数据库运行的所有扫描的历史记录。 选择列表中某个特定扫描,查看该扫描的详细结果。

禁用 Azure 安全中心内的特定发现结果(预览)

如果组织需要忽略发现结果,而不是修正漏洞,则可以选择禁用发现结果。 禁用发现结果不会影响安全分数,也不会产生有害的噪音。

当发现结果与在禁用规则中定义的条件相匹配时,它不会显示在发现结果列表中。 典型方案包括:

  • 禁用严重性低于中等的结果
  • 禁用不可修补的发现结果
  • 禁用与定义的范围无关的基准的发现结果

重要

若要禁用特定发现结果,你需要拥有在 Azure Policy 中编辑策略的权限。 若要了解详细信息,请参阅 Azure Policy 中的 Azure RBAC 权限

若要创建规则,请执行以下操作:

  1. 在“应修正关于计算机上 SQL Server 的漏洞评估结果”的建议详细信息页中,选择“禁用规则” 。

  2. 选择相关范围。

  3. 定义你的条件。 可以使用以下任一条件:

    • 发现结果 ID
    • 严重性
    • 基准

    针对在计算机中 SQL Server 上检测到的漏洞评估结果创建禁用规则

  4. 选择“应用规则”。 更改可能最多需要 24 小时才能生效。

  5. 若要查看、替代或删除规则,请执行以下操作:

    1. 选择“禁用规则”。

    2. 在范围列表中,具有有效规则的订阅显示为“已应用规则”。

      修改或删除现有规则

    3. 若要查看或删除规则,请选择省略号菜单(“...”)。

以编程方式管理漏洞评估

备注

本文已经过更新,以便使用 Azure Az PowerShell 模块。 若要与 Azure 交互,建议使用的 PowerShell 模块是 Az PowerShell 模块。 若要开始使用 Az PowerShell 模块,请参阅安装 Azure PowerShell。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

重要

仍然支持 PowerShell Azure 资源管理器模块,但是所有未来的开发都是针对 Az.Sql 模块。 若要了解这些 cmdlet,请参阅 AzureRM.Sql。 Az 模块和 AzureRm 模块中的命令参数大体上是相同的。

可以使用 Azure PowerShell cmdlet 以编程方式管理漏洞评估。 受支持的 cmdlet 如下:

Cmdlet 名称(链接) 说明
Clear-AzSqlDatabaseVulnerabilityAssessmentRuleBaseline 清除漏洞评估规则基线。
在使用此 cmdlet 清除基线之前请先设置基线。
Clear-AzSqlDatabaseVulnerabilityAssessmentSetting 清除数据库的漏洞评估设置。
Clear-AzSqlInstanceDatabaseVulnerabilityAssessmentRuleBaseline 清除托管数据库的漏洞评估规则基线。
在使用此 cmdlet 清除基线之前请先设置基线。
Clear-AzSqlInstanceDatabaseVulnerabilityAssessmentSetting 清除托管数据库的漏洞评估设置。
Clear-AzSqlInstanceVulnerabilityAssessmentSetting 清除托管实例的漏洞评估设置。
Convert-AzSqlDatabaseVulnerabilityAssessmentScan 将数据库的漏洞评估扫描结果转换为 Excel 文件。
Convert-AzSqlInstanceDatabaseVulnerabilityAssessmentScan 将托管数据库的漏洞评估扫描结果转换为 Excel 文件。
Get-AzSqlDatabaseVulnerabilityAssessmentRuleBaseline 获取给定规则的数据库漏洞评估规则基线。
Get-AzSqlInstanceDatabaseVulnerabilityAssessmentRuleBaseline 获取给定规则的托管数据库漏洞评估规则基线。
Get-AzSqlDatabaseVulnerabilityAssessmentScanRecord 获取与给定数据库关联的所有漏洞评估扫描记录。
Get-AzSqlInstanceDatabaseVulnerabilityAssessmentScanRecord 获取与给定托管数据库关联的所有漏洞评估扫描记录。
Get-AzSqlDatabaseVulnerabilityAssessmentSetting 返回数据库的漏洞评估设置。
Get-AzSqlInstanceDatabaseVulnerabilityAssessmentSetting 返回托管数据库的漏洞评估设置。
Set-AzSqlDatabaseVulnerabilityAssessmentRuleBaseline 设置漏洞评估规则基线。
Set-AzSqlInstanceDatabaseVulnerabilityAssessmentRuleBaseline 设置托管数据库的漏洞评估规则基线。
Start-AzSqlDatabaseVulnerabilityAssessmentScan 触发对于数据库的漏洞评估扫描的启动。
Start-AzSqlInstanceDatabaseVulnerabilityAssessmentScan 触发对于托管数据库的漏洞评估扫描的启动。
Update-AzSqlDatabaseVulnerabilityAssessmentSetting 更新数据库的漏洞评估设置。
Update-AzSqlInstanceDatabaseVulnerabilityAssessmentSetting 更新托管数据库的漏洞评估设置。
Update-AzSqlInstanceVulnerabilityAssessmentSetting 更新托管实例的漏洞评估设置。
   

有关脚本示例,请参阅 Azure SQL 漏洞评估 PowerShell 支持

使用资源管理器模板

若要使用 Azure 资源管理器模板配置漏洞评估基线,请使用 Microsoft.Sql/servers/databases/vulnerabilityAssessments/rules/baselines 类型。

在添加基线之前,请确保已启用 vulnerabilityAssessments

下面是一个示例,演示了如何将 master 数据库的基线规则 VA2065 和 user 数据库的基线规则 VA1143 定义为资源管理器模板中的资源:

   "resources": [
      {
         "type": "Microsoft.Sql/servers/databases/vulnerabilityAssessments/rules/baselines",
         "apiVersion": "2018-06-01-preview",
         "name": "[concat(parameters('server_name'),'/', parameters('database_name') , '/default/VA2065/master')]",
         "properties": {
            "baselineResults": [
               {
                  "result": [
                     "FirewallRuleName3",
                     "StartIpAddress",
                     "EndIpAddress"
                  ]
               },
               {
                  "result": [
                     "FirewallRuleName4",
                     "62.92.15.68",
                     "62.92.15.68"
                  ]
               }
            ]
         },
         "type": "Microsoft.Sql/servers/databases/vulnerabilityAssessments/rules/baselines",
         "apiVersion": "2018-06-01-preview",
         "name": "[concat(parameters('server_name'),'/', parameters('database_name'), '/default/VA2130/Default')]",
         "dependsOn": [
            "[resourceId('Microsoft.Sql/servers/vulnerabilityAssessments', parameters('server_name'), 'Default')]"
         ],
         "properties": {
            "baselineResults": [
               {
                  "result": [
                     "dbo"
                  ]
               }
            ]
         }
      }
   ]

对于 master 数据库和 user 数据库,资源名称的定义方式不同:

  • Master 数据库 - "name": "[concat(parameters('server_name'),'/', parameters('database_name') , '/default/VA2065/master')]",
  • 用户数据库 - "name": "[concat(parameters('server_name'),'/', parameters('database_name') , '/default/VA2065/default')]",

若要将布尔类型处理为 true/false,请使用二进制输入(例如 "1"/"0")设置基线结果。

   {
      "type": "Microsoft.Sql/servers/databases/vulnerabilityAssessments/rules/baselines",
      "apiVersion": "2018-06-01-preview",
      "name": "[concat(parameters('server_name'),'/', parameters('database_name'), '/default/VA1143/Default')]",

      "dependsOn": [
         "[resourceId('Microsoft.Sql/servers/vulnerabilityAssessments', parameters('server_name'), 'Default')]"
      ],

      "properties": {
         "baselineResults": [
            {
               "result": [
                  "1"
               ]
            }
         ]
      }

   }

数据驻留

SQL 漏洞评估使用安全中心 SQL 漏洞评估建议下的公开可用查询来查询 SQL 服务器,并存储查询结果。 数据存储在已配置的用户拥有的存储帐户中。

SQL 漏洞评估允许通过选择存储帐户的位置来指定存储数据的区域。 用户负责存储帐户的安全性和数据复原能力。

后续步骤