在这篇文章中,我将解释如何使用SQL Server漏洞评估来进行安全测试。在上一篇文章中,我已经解释了关于多层安全的基本理解,我们配置这些安全来保护我们的SQL Server实例。我还解释了我们应该在每一层进行安全测试,以了解我们的系统的安全程度。我希望你能阅读这篇文章,了解SQL Server环境的安全测试,以了解更多关于它们的信息。
对于任何数据库环境来说,安全是一个非常关键的领域。数据库的安全措施帮助一个组织保护其数据,以保持其隐私和完整性。应定期进行安全测试,以确保所有的安全策略被正确配置,以保护系统。
SQL Server也提供了各种功能,我们可以利用这些功能对我们的数据库进行安全测试。其中一个功能是SQL Server漏洞评估。这个功能可以扫描你正在运行的数据库,并显示所有的弱点和它们可能的解决方案。
SQL Server 漏洞评估
SQL Server中的漏洞评估帮助我们发现和补救潜在的数据库漏洞。我们可以扫描任何数据库,以确定该数据库的所有现有漏洞,然后将建议的补救措施或行动项目应用到数据库中,以防止外部威胁。这个工具在数据库安全测试工作中非常有帮助。
当你对任何数据库运行漏洞评估时,它将扫描该数据库并显示一份详细的报告,其中有多个标志,并有各自的行动项目来修复该漏洞。
扫描过程是根据一组规则进行的,这些规则被检查和验证,无论它是否存在于该数据库中。每条规则都会在报告中记录下其规则测试结果。如果规则通过了,那么它将被记录在被称为 "通过"的绿色标签中,如果这个规则没有被满足,测试失败,那么它的结果将被报告在被称为 "失败"的红色交叉标签中。我们还可以对SQL Server中的系统数据库进行扫描,以确定实例级的漏洞。
该报告将分为两部分。
- 通过
- 失败的
每条失败的规则都会显示一份详细的报告,其中有你可以采取的行动项目来修复该漏洞。 以下是漏洞评估仪表板报告的截图。
使用漏洞评估工具扫描数据库
我们通常会扫描我们的系统和数据库,作为安全测试的一部分,或主动采取措施寻找系统中的漏洞。在这里,我将扫描一个SQL Server数据库,以确定该数据库的所有安全风险。
运行扫描的第一个任务是启动SQL Server管理工作室。请注意,你使用的是SQL Server management studio v17.4或更高版本,因为只有这些版本支持漏洞评估功能。在SQL Server管理工作室中连接到你的SQL Server实例。
选择你要运行扫描的确定的数据库。在这个数据库上点击右键,然后选择任务,然后是漏洞评估,最后点击扫描漏洞...,如下图所示。

一旦你点击了上述选项,就会出现另一个窗口,如下图所示。这个屏幕将允许你选择你想要保存扫描报告的位置。您可以看到默认的位置被选择来保存这个报告,您可以点击浏览...按钮来改变这个位置。一旦您选择了保存该报告的目标位置,请点击 "确定"按钮。

扫描报告将在上述步骤完成后一分钟内显示在SQL Server management studio的右侧窗格中。下面的屏幕显示的是它的仪表板报告。以下是你应该关注的要点,以了解这个报告。
- 高级别的仪表板报告显示了失败或通过的规则数量。我们可以看到3条规则是失败的,而32条是通过的。
- 失败的检查被进一步分类为高、中、低级别风险类别。它将帮助你确定风险的严重程度。
- 在这些数字下面有两个标签 "失败"和 "通过",以进一步深入了解所有这些检查。一旦你点击它们,你可以得到关于每个检查的详细信息。
- 你也可以通过点击显示在暗红色箭头附近的标签,将这份报告导出到Excel中。

所有失败的检查都显示在上面的图片中。如果你想检查所有通过的检查的细节,那么你只需要点击上图中的Passed标签,列出所有的检查,如下图所示。

你可以看到在上述报告中显示了5列。
- ID是每个安全检查的识别号码
- 安全检查是在扫描期间执行的检查的名称和细节
- 类别代表它的区域,你需要从那里查看
- 状态是显示该检查是通过还是失败
- 附加信息是指您是否将该规则的基准线设置为失败。
现在,我们有一个扫描报告来访问和分析每个检查的细节,特别是失败的检查。让我们继续了解如何分析这些检查。
分析扫描报告
我们已经学会了如何在上面的章节中查看报告。让我们来分析这个报告,以确定在这次安全测试中,这个扫描报告中所报告的问题。你只需要点击任何一个安全检查,一个额外的窗口将出现在报告的底部,如下图所示。
你可以看到所选的安全检查已经详细解释了它的名称、风险、状态、描述、影响、规则查询、实际结果和补救措施。你可以通过每个安全检查,了解更多关于它的信息。

让我们分析一下失败的安全检查。点击扫描报告中显示的 "失败"标签。所有失败的安全检查都会显示在各自的列中,并有详细说明。我决定首先分析高严重性风险,所以点击它以获得其深入的信息,如它为什么会失败,它的补救措施是什么。
你可以分析一下下面的屏幕。这个安全检查的状态显示为失败。它还显示了在规则查询部分执行了哪些查询来评估这个检查。你可以通过阅读影响部分了解更多关于这个安全检查的影响。实际结果将显示这个规则检查的结果。
正如我所解释的,这份报告也会显示一组行动项目,你可以用它来补救失败的安全检查。在这里,我们可以看到补救措施是建议删除那些不应该访问数据库角色的成员。这个工具的好处是它还提供了补救脚本,你可以在你的数据库上运行,以解决这个问题。
请看下面的屏幕,了解这个安全测试结果的所有上述细节。

让我们按照上面的步骤分析另一个失败的安全检查,它显示为中等风险级别。使用漏洞评估对这个数据库进行的安全测试明确地让我们知道,我们的数据可能会被破坏,因为它没有被保护,它应该被加密以保护数据。如果你想保护你的数据,你可以考虑下面建议的补救措施。

设置或删除基线
有时我们需要对一些安全规则进行例外处理,因为它们不需要,或者在其补救措施中存在一些路障。这个工具甚至允许我们为每个安全检查设置一个基线,扫描会认为这个基线值是通过的,不会在**"失败**"选项卡中显示。
考虑上面的截图,其中一个安全检查的修复是实施TDE(透明数据加密),但是,由于一些限制或路障,你不能实施它。现在,我们希望这个检查在下一次安全测试中被显示为通过。我们可以通过批准安全检查的激动人心的结果作为它的基线来实现。下次无论你在哪里为这个数据库运行漏洞评估,作为数据库安全测试的一部分,那么这个安全检查将假定现有的配置为基线,并将其标记为通过,以显示这个安全检查为绿色。
让我们了解一下如何为各种安全检查配置这种基线。当你点击显示在仪表板扫描报告中的任何安全检查时,它将在报告的底部窗口显示其细节,如下图所示。你可以在安全检查的细节窗格中看到每个安全检查的2个选项。
- 批准为基线
- 清除基线
你需要点击下图蓝色矩形中突出显示的 "批准为基线"选项,将此结果设置为该安全检查的可接受基线。
如果您想在将来删除任何基线或任何现有的基线,那么您只需要点击清除基线选项来删除基线。如果您没有实施建议的补救措施,下一次扫描报告将开始报告该安全检查为失败。

我已经点击了批准为该安全检查的基线,它将显示一个弹出窗口,提到该步骤的描述。点击 "是"按钮,将此结果作为数据保护安全检查的可接受基线。
一旦基线将被批准并设置为任何安全检查,你可以通过查看屏幕底部的蓝色箭头来获得其确认,如下图所示。它说基线已成功设置为安全检查ID VA1219。

您还可以在这个报告的顶部窗格中看到一个警告,它建议再次运行扫描报告以查看更新的结果,即我们设置了基线的安全检查是报告为失败还是在下一个报告中被通过。
让我们按照我在上一节描述的相同步骤再次运行扫描报告。下面的屏幕显示了它的更新报告,在这里我们只能看到两个失败的安全检查。这意味着我们批准的上述安全检查的基线已经通过,在这个数据库的安全测试中没有被报告为失败。

现在我们只有2个失败的检查和33个通过的检查。让我们看看上述安全检查的状态,我们已经批准了基线。你也可以识别一个特定的安全检查是否有任何基线设置。 点击上图中的Passed标签,找到该安全检查。
在这里,你可以确定一个特定的安全检查是在没有可接受的基线的情况下通过,还是在有自定义基线批准的情况下通过。我们可以看到安全ID VA1219显示在通过的部分,它也被突出显示在下面图片的蓝色矩形中。
你必须关注最后一列名为 "附加信息"的栏目,以确定该特定的安全检查是按照指定的自定义基线通过还是按照标准的最佳实践通过。你可以看到在这一列中报告了 "按自定义基线"以及它的状态,在下图中也显示了作为自定义基线通过的这个标签,而其余的所有规则都被检查并通过,没有提到任何基线。
请确保在制定或批准这种基线之前得到适当的批准,因为安全测试是为了找出漏洞,而不是为了找到另一种方法来保持你的安全测试报告为绿色。

如果你想删除这个自定义基线,并想按照标准的最佳做法来扫描这种安全检查,那么你可以删除这个基线,然后重新运行扫描报告。我已经通过点击 "清除基线"删除了上述配置的基线,如下图所示。请看下面的屏幕,我删除了上述基线。

现在,重新运行扫描以生成新的报告,在这里我们可以看到安全ID VA1219又被报告在失败的检查下。失败的检查总数现在又是3,而通过的检查现在只有32。

打开现有的扫描报告
我们知道,所有这些在安全测试中生成的扫描报告都可以在以后根据我们的需要进行访问。 当我们对任何数据库进行扫描时,我们提供了一个保存这些报告的位置,如果你没有提供任何位置,它将采用默认位置。
进入SQL Server管理工作室,右击任何数据库,选择任务,然后是漏洞评估,最后,在这里你需要点击打开现有的扫描。

接下来,它将要求你找到你所需要的位置,在那里你已经保存了你的扫描报告。选择所需的位置,并在选择您要打开的扫描报告后点击 "打开"按钮。

一旦您点击了 "打开"按钮,扫描报告将在SQL Server管理工作室中打开,如下图所示。

你可以保存这些报告,并在以后使用它们作为你的数据库安全测试的结果。
总结
安全测试是一项非常重要的工作,我们应该定期进行,以确保我们使用所有的最佳实践作为我们安全策略的一部分。SQL Server中的漏洞评估是一个非常好的工具,可以扫描数据库,并确定数据库的弱点,以及扫描报告中建议的补救措施。这些扫描可以针对任何数据库进行,包括所有的系统数据库。扫描报告将列出所有的详细信息以及补救建议,你可以参考并在以后部署在你的系统上,以修复开放的安全风险。