你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
管理 Azure SQL 数据库中的漏洞发现
Microsoft Defender for Cloud 为 Azure SQL 数据库提供了漏洞评估。 漏洞评估会扫描数据库中的软件漏洞,并提供结果列表。 你可以使用结果修正软件漏洞并禁用结果。
先决条件
在继续操作之前,请确保你知道使用的是快速配置还是经典配置。
若要查看正在使用的配置,请执行以下操作:
- 在 Azure 门户中打开 Azure SQL 数据库、SQL 托管实例数据库或 Azure Synapse 中的特定资源。
- 在“安全性”标题下,选择 Defender for Cloud 。
- 在“启用状态”中,选择“配置”以打开整个服务器或托管实例的 Microsoft Defender for SQL 设置窗格。
如果漏洞设置显示用于配置存储帐户的选项,则你使用的是经典配置。 如果不是,则使用的是快速配置。
快速配置
查看扫描历史记录
选择漏洞评估窗格中的“扫描历史记录”,查看以前对此数据库运行的所有扫描的历史记录。
如果快速配置与以前的扫描相同,则不会存储扫描结果。 扫描历史记录中显示的扫描时间是上次扫描结果更改的时间。
禁用 Microsoft Defender for Cloud 的特定发现(预览)
如果组织需要忽略发现结果,而不是修正漏洞,则可以禁用发现结果。 禁用发现结果不会影响安全分数,也不会产生有害的噪音。 可以在扫描结果的“不适用”部分看到禁用的发现结果。
当发现结果与在禁用规则中定义的条件相匹配时,它不会显示在发现结果列表中。 典型方案可能包括:
- 禁用严重性为中等或更低级别的发现结果
- 禁用不可修补的发现结果
- 禁用与定义的范围无关的基准的发现结果
重要
若要禁用特定发现结果,你需要拥有在 Azure Policy 中编辑策略的权限。 若要了解详细信息,请参阅 Azure Policy 中的 Azure RBAC 权限。
若要创建规则,请执行以下操作:
在“应修正关于计算机上 SQL Server 的漏洞评估结果”的建议详细信息页中,选择“禁用规则” 。
选择相关范围。
定义你的条件。 可以使用以下任一条件:
- 发现结果 ID
- 严重性
- 基准
针对在计算机中的 SQL Server 上检测到的漏洞评估结果创建禁用规则
选择“应用规则”。 更改最多可能需要 24 小时才能生效。
若要查看、替代或删除规则,请执行以下操作:
- 选择“禁用规则”。
- 在范围列表中,具有有效规则的订阅显示为“已应用规则”。
- 若要查看或删除规则,请选择省略号菜单(“...”)。
使用 Azure 逻辑应用配置电子邮件通知
若要接收数据库漏洞评估状态的定期更新,可以使用可自定义的 Azure 逻辑应用模板。
使用模板可以:
- 选择电子邮件报告的时间。
- 包含禁用的规则的漏洞评估状态具有一致视图。
- 发送 Azure SQL 服务器和 SQL VM 的报告。
- 自定义报告结构和外观,以符合组织标准。
以编程方式管理漏洞评估
具有以下功能的最新 REST API 版本支持快速配置:
说明 | 作用域 | API |
---|---|---|
基线批量操作 | 系统数据库 | SQL 漏洞评估基线 SQL 漏洞评估基线 |
基线批量操作 | 用户数据库 | 数据库 SQL 漏洞评估基线 |
单规则基线操作 | 用户数据库 | 数据库 SQL 漏洞评估规则基线 |
单规则基线操作 | 系统数据库 | SQL 漏洞评估规则基线 SQL 漏洞评估规则基线 |
单个扫描结果 | 用户数据库 | 数据库 SQL 漏洞评估扫描结果 |
单个扫描结果 | 系统数据库 | SQL 漏洞评估扫描结果 |
扫描详细信息(摘要) | 用户数据库 | 数据库 SQL 漏洞评估扫描 |
扫描详细信息(摘要) | 系统数据库 | SQL 漏洞评估扫描 |
执行手动扫描 | 用户数据库 | 数据库 SQL 漏洞评估执行扫描 |
执行手动扫描 | 系统数据库 | SQL 漏洞评估执行扫描 |
VA 设置(快速配置仅支持 GET) | 用户数据库 | 数据库 SQL 漏洞评估设置 |
VA 设置操作 | 服务器 | SQL 漏洞评估设置 SQL 漏洞评估 |
使用 Azure 资源管理器模板
使用以下 ARM 模板创建新的 Azure SQL 逻辑服务器,其中包含 SQL 漏洞评估的快速配置。
若要使用 Azure 资源管理器模板配置漏洞评估基线,请使用 Microsoft.Sql/servers/databases/sqlVulnerabilityAssessments/baselines
类型。 在添加基线之前,确保已启用 vulnerabilityAssessments
。
下面是有关如何使用 ARM 模板设置基线的几个示例:
基于最新扫描结果设置批处理基线:
{ "type": "Microsoft.Sql/servers/databases/sqlVulnerabilityAssessments/baselines", "apiVersion": "2022-02-01-preview", "name": "[concat(parameters('serverName'),'/', parameters('databaseName') , '/default/default')]", "properties": { "latestScan": true } }
基于特定结果设置批处理基线:
{ "type": "Microsoft.Sql/servers/databases/sqlVulnerabilityAssessments/baselines", "apiVersion": "2022-02-01-preview", "name": "[concat(parameters('serverName'),'/', parameters('databaseName') , '/default/default')]", "properties": { "latestScan": false, "results": { "VA2065": [ [ "FirewallRuleName3", "62.92.15.67", "62.92.15.67" ], [ "FirewallRuleName4", "62.92.15.68", "62.92.15.68" ] ], "VA2130": [ [ "dbo" ] ] } } }
为特定规则设置基线:
{ "type": "Microsoft.Sql/servers/databases/sqlVulnerabilityAssessments/baselines/rules", "apiVersion": "2022-02-01-preview", "name": "[concat(parameters('serverName'),'/', parameters('databaseName') , '/default/default/VA1143')]", "properties": { "latestScan": false, "results": [ [ "True" ] ] } }
基于最新扫描结果在 master 数据库上设置批处理基线:
{ "type": "Microsoft.Sql/servers/databases/sqlVulnerabilityAssessments/baselines", "apiVersion": "2022-02-01-preview", "name": "[concat(parameters('serverName'),'/master/default/default')]", "properties": { "latestScan": true } }
使用 PowerShell
PowerShell cmdlet 不支持快速配置,但可以使用 PowerShell 并使用 REST API 调用最新的漏洞评估功能,例如:
- 在 Azure SQL 服务器上启用快速配置
- 基于 Azure SQL 服务器中所有数据库的最新扫描结果设置基线
- 快速配置 PowerShell 命令参考
使用 Azure CLI
使用 Azure CLI 调用快速配置。
疑难解答
还原回经典配置
若要将 Azure SQL 数据库从快速漏洞评估配置更改为经典配置:
从 Azure 门户禁用 Defender for Azure SQL 计划。
使用 PowerShell 通过经典体验重新配置:
Update-AzSqlServerAdvancedThreatProtectionSetting ` -ResourceGroupName "demo-rg" ` -ServerName "dbsrv1" ` -Enable 1 Update-AzSqlServerVulnerabilityAssessmentSetting ` -ResourceGroupName "demo-rg" ` -ServerName "dbsrv1" ` -StorageAccountName "mystorage" ` -RecurringScansInterval Weekly ` -ScanResultsContainerName "vulnerability-assessment"
你可能需要根据《将漏洞评估扫描结果存储在可从防火墙和 VNet 后面访问的存储帐户中》来调整
Update-AzSqlServerVulnerabilityAssessmentSetting
。
错误
“漏洞评估在此服务器或其基础数据库的一个不兼容版本上启用”
可能的原因:
由于服务器策略错误,切换到快速配置失败。
解决方案:请重试以启用快速配置。 如果问题仍然存在,请尝试在 Azure SQL 资源中禁用 Microsoft Defender for SQL,选择“保存”,再次启用 Microsoft Defender for SQL,然后选择“保存”。
由于数据库策略错误,切换到快速配置失败。 数据库策略在 Defender for SQL 漏洞评估的 Azure 门户中不可见,因此我们在切换到快速配置过程中的验证阶段对其进行检查。
解决方案:禁用相关服务器的所有数据库策略,然后再次尝试切换到快速配置。
请考虑使用提供的 PowerShell 脚本来获取帮助。
经典配置
查看扫描历史记录
选择漏洞评估窗格中的“扫描历史记录”,查看以前对此数据库运行的所有扫描的历史记录。
禁用 Microsoft Defender for Cloud 的特定发现(预览)
如果组织需要忽略发现结果,而不是修正漏洞,则可以选择禁用发现结果。 禁用发现结果不会影响安全分数,也不会产生有害的噪音。
当发现结果与在禁用规则中定义的条件相匹配时,它不会显示在发现结果列表中。 典型方案可能包括:
- 禁用严重性为中等或更低级别的发现结果
- 禁用不可修补的发现结果
- 禁用与定义的范围无关的基准的发现结果
重要
- 若要禁用特定发现结果,你需要拥有在 Azure Policy 中编辑策略的权限。 若要了解详细信息,请参阅 Azure Policy 中的 Azure RBAC 权限。
- 禁用的结果仍将包含在每周 SQL 漏洞评估电子邮件报告中。
- 禁用的规则显示在扫描结果的“不适用”部分中。
若要创建规则,请执行以下操作:
在“应修正关于计算机上 SQL Server 的漏洞评估结果”的建议详细信息页中,选择“禁用规则” 。
选择相关范围。
定义你的条件。 可以使用以下任一条件:
- 发现结果 ID
- 严重性
- 基准
选择“应用规则”。 更改最多可能需要 24 小时才能生效。
若要查看、替代或删除规则,请执行以下操作:
选择“禁用规则”。
在范围列表中,具有有效规则的订阅显示为“已应用规则”。
若要查看或删除规则,请选择省略号菜单(“...”)。
以编程方式管理漏洞评估
Azure PowerShell
注意
本文使用 Azure Az PowerShell 模块,这是与 Azure 交互时推荐使用的 PowerShell 模块。 若要开始使用 Az PowerShell 模块,请参阅安装 Azure PowerShell。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az。
重要
仍然支持 PowerShell Azure 资源管理器模块,但是所有未来的开发都是针对 Az.Sql 模块。 若要了解这些 cmdlet,请参阅 AzureRM.Sql。 Az 模块和 AzureRm 模块中的命令参数大体上是相同的。
可以使用 Azure PowerShell cmdlet 以编程方式管理漏洞评估。 受支持的 cmdlet 如下:
有关脚本示例,请参阅 Azure SQL 漏洞评估 PowerShell 支持。
Azure CLI
重要
以下 Azure CLI 命令适用于在 VM 或本地计算机上托管的 SQL 数据库。 有关涉及 Azure SQL 数据库的漏洞评估,请参阅“Azure 门户”或“PowerShell”部分。
可以使用 Azure CLI 以编程方式管理漏洞评估。 支持的命令为:
链接形式的命令名称 | 说明 |
---|---|
az security va sql baseline delete |
删除 SQL 漏洞评估规则基线。 |
az security va sql baseline list |
查看所有规则的 SQL 漏洞评估基线。 |
az security va sql baseline set |
获取 SQL 漏洞评估基线。 替换当前基线。 |
az security va sql baseline show |
查看 SQL 漏洞评估规则基线。 |
az security va sql baseline update |
更新 SQL 漏洞评估规则基线。 替换当前规则基线。 |
az security va sql results list |
查看所有 SQL 漏洞评估扫描结果。 |
az security va sql results show |
查看 SQL 漏洞评估扫描结果。 |
az security va sql scans list |
列出所有 SQL 漏洞评估扫描摘要。 |
az security va sql scans show |
查看 SQL 漏洞评估扫描摘要。 |
资源管理器模板
若要使用 Azure 资源管理器模板配置漏洞评估基线,请使用 Microsoft.Sql/servers/databases/vulnerabilityAssessments/rules/baselines
类型。
在添加基线之前,请确保已启用 vulnerabilityAssessments
。
下面是一个示例,演示了如何将 master
数据库的基线规则 VA2065 和 user
数据库的基线规则 VA1143 定义为资源管理器模板中的资源:
"resources": [
{
"type": "Microsoft.Sql/servers/databases/vulnerabilityAapiVersion": "2018-06-01",
"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/vulnerabilityAapiVersion": "2018-06-01",
"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/vulnerabilityapiVersion": "2018-06-01",
"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"
]
}
]
}
}
相关内容
- 详细了解 Microsoft Defender for Azure SQL。
- 详细了解数据发现和分类。
- 了解关于将漏洞评估扫描结果存储在可从防火墙和 VNet 后面访问的存储帐户中的详细信息。
- 查看有关 Azure SQL 数据库的常见问题。