Invoke-SqlVulnerabilityAssessmentScan

调用新的漏洞评估扫描。

语法

Invoke-SqlVulnerabilityAssessmentScan
      [-ScanId <String>]
      [-Baseline <SecurityCheckBaselineSet>]
      [-OmitMetadata]
      [<CommonParameters>]
Invoke-SqlVulnerabilityAssessmentScan
      -ConnectionString <String>
      [-ScanId <String>]
      [-Baseline <SecurityCheckBaselineSet>]
      [-OmitMetadata]
      [<CommonParameters>]
Invoke-SqlVulnerabilityAssessmentScan
      -ServerInstance <PSObject>
      -DatabaseName <String>
      [-Credential <PSCredential>]
      [-ScanId <String>]
      [-Baseline <SecurityCheckBaselineSet>]
      [-OmitMetadata]
      [<CommonParameters>]
Invoke-SqlVulnerabilityAssessmentScan
      -Path <String>
      [-ScanId <String>]
      [-Baseline <SecurityCheckBaselineSet>]
      [-OmitMetadata]
      [<CommonParameters>]
Invoke-SqlVulnerabilityAssessmentScan
      -InputObject <Database>
      [-ScanId <String>]
      [-Baseline <SecurityCheckBaselineSet>]
      [-OmitMetadata]
      [<CommonParameters>]

说明

Invoke-SqlVulnerabilityAssessmentScan cmdlet 对数据库运行扫描。 该 cmdlet 采用一知识库安全检查,用于标记安全漏洞,并突出显示与最佳做法的偏差,例如配置错误、权限过多和未受保护的敏感数据。 安全检查基于 Microsoft 建议的最佳做法,重点介绍对数据库及其宝贵数据带来最大风险的安全问题。 这些安全检查也代表了各种监管机构满足其合规性标准的许多要求。

扫描结果包括旨在解决每个问题的可操作步骤,并提供自定义修正脚本(若适用)。 可以通过为权限配置、功能配置和数据库设置设置设置可接受的基线,为环境自定义评估报告。

Module requirements: version 21+ on PowerShell 5.1; version 22+ on PowerShell 7.x.

This cmdlet was removed in v22.3+ of the module.

示例

示例 1:在 master 数据库上使用Windows 身份验证调用漏洞评估扫描

PS C:\> Invoke-SqlVulnerabilityAssessmentScan -ServerInstance "MyComputer\MainInstance" -Database "master" -ScanId "MyScan"

Id              : MyScan
ScanType        : BoxDatabase
ScanTriggerType : OnDemand
Server          : MyComputer\MainInstance
Database        : master
Platform        : SqlServer2017
SqlVersion      : 14.0.3015
StartTimeUtc    : 3/17/2018 8:58:02 PM
EndTimeUtc      : 3/17/2018 8:58:41 PM
ToolName        : PowerShell
ToolVersion     : 1.0
Results         : {VA1017, VA1019, VA1020, VA1021...}
SecurityChecks  : {[VA1017, Microsoft.SQL.VulnerabilityAssessment.SecurityCheck], [VA1019, Microsoft.SQL.VulnerabilityAssessment.SecurityCheck], [VA1020,
                  Microsoft.SQL.VulnerabilityAssessment.SecurityCheck], [VA1021, Microsoft.SQL.VulnerabilityAssessment.SecurityCheck]...}

在此示例中,我们使用 Windows 身份验证 在 master 数据库上调用漏洞评估扫描。

示例 2:使用当前路径上下文调用漏洞评估扫描

PS C:\> Set-Location "SQLSERVER:\SQL\MyComputer\MainInstance\Databases\MyDatabase"
PS SQLSERVER:\SQL\MyComputer\MainInstance> Invoke-SqlVulnerabilityAssessmentScan
WARNING: Using provider context. Server = MyComputer\MainInstance, Database = MyDatabase.

Id              : 2018-03-17T22-58-02
ScanType        : BoxDatabase
ScanTriggerType : OnDemand
Server          : MyComputer\MainInstance
Database        : MyDatabase
Platform        : SqlServer2017
SqlVersion      : 14.0.3015
StartTimeUtc    : 3/17/2018 8:58:02 PM
EndTimeUtc      : 3/17/2018 8:58:41 PM
ToolName        : PowerShell
ToolVersion     : 1.0
Results         : {VA1017, VA1019, VA1020, VA1021...}
SecurityChecks  : {[VA1017, Microsoft.SQL.VulnerabilityAssessment.SecurityCheck], [VA1019, Microsoft.SQL.VulnerabilityAssessment.SecurityCheck], [VA1020,
                  Microsoft.SQL.VulnerabilityAssessment.SecurityCheck], [VA1021, Microsoft.SQL.VulnerabilityAssessment.SecurityCheck]...}

此示例演示如何Invoke-SqlVulnerabilityAssessmentScan使用当前路径将数据库上下文设置为 MyDatabase。

示例 3:使用凭据调用漏洞评估扫描,并省略安全检查元数据

PS C:\> $cred = Get-Credential
PS C:\> Invoke-SqlVulnerabilityAssessmentScan -ServerInstance "MyComputer\MainInstance" -Database "master" -Credential $cred

Id              : 2018-03-17T22-58-02
ScanType        : BoxDatabase
ScanTriggerType : OnDemand
Server          : MyComputer\MainInstance
Database        : MyDatabase
Platform        : SqlServer2017
SqlVersion      : 14.0.3015
StartTimeUtc    : 3/17/2018 8:58:02 PM
EndTimeUtc      : 3/17/2018 8:58:41 PM
ToolName        : PowerShell
ToolVersion     : 1.0
Results         : {VA1017, VA1019, VA1020, VA1021...}
SecurityChecks  :

此示例演示如何使用 PSCredential 调用扫描。 它还演示了 -OmitMetadata 标志的使用 (请注意,结果不包含安全检查字典-这是检查的元数据,如标题、说明等) 。

示例 4:使用基线调用漏洞评估扫描

PS C:\> [string[][]]$expectedResults = ,("guest", "db_datareader", "SQLUSER", "NONE")
PS C:\> $baseline = New-SqlVulnerabilityAssessmentBaseline -SecurityCheckId "VA2109" -ExpectedResult $expectedResults
PS C:\> $baselineSet = New-SqlVulnerabilityAssessmentBaselineSet -Baselines $baseline
PS C:\> $scanResult = Invoke-SqlVulnerabilityAssessmentScan -ServerInstance "MyComputer\MainInstance" -Database "master" -Baseline $baselineSet
PS C:\> $result2109 = $scanResult.Results.GetEnumerator() | where {$_.Value.SecurityCheckId -eq "VA2109"
}

此示例演示如何创建基线集并使用它调用扫描。 “VA2109”结果中的 BaselineAdjustedSecurityCheckResult 属性包含基线调整的结果。 请注意,此结果的原始状态为“失败”,但基线调整后的结果状态已传递。

参数

-Baseline

漏洞评估安全检查基线集

类型:SecurityCheckBaselineSet
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-ConnectionString

指定要连接到数据库的连接字符串。 如果此参数存在,将忽略其他连接参数

类型:String
Position:Named
默认值:None
必需:True
接受管道输入:False
接受通配符:False

-Credential

指定用于连接到数据库的凭据。

类型:PSCredential
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-DatabaseName

指定数据库的名称。 此 cmdlet 连接到 ServerInstance 参数中指定的实例中的此数据库。

如果未指定 Database 参数,则使用的数据库取决于当前路径是否同时指定 SQLSERVER:\SQL 文件夹和数据库名称。 如果路径同时指定 SQL 文件夹和数据库名称,则此 cmdlet 将连接到路径中指定的数据库。

类型:String
Position:Named
默认值:None
必需:True
接受管道输入:False
接受通配符:False

-InputObject

指定扫描操作的输入对象。

类型:Database
Position:Named
默认值:None
必需:True
接受管道输入:False
接受通配符:False

-OmitMetadata

是否省略安全检查元数据 (例如标题、说明等) 请注意,Export-VulnerabilityAssessmentScan要求安全检查元数据正确执行。

类型:SwitchParameter
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-Path

指定要执行扫描的SQL Server实例的路径。

类型:String
Position:Named
默认值:None
必需:True
接受管道输入:False
接受通配符:False

-ScanId

漏洞评估扫描 ID

类型:String
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-ServerInstance

指定字符串或SQL Server管理对象 (SMO) 对象,该对象指定数据库引擎实例的名称。 对于默认实例,仅指定计算机名称:MyComputer。 对于命名实例,请使用 ComputerName\InstanceName 格式。

类型:PSObject
Position:Named
默认值:None
必需:True
接受管道输入:False
接受通配符:False

输入

None

输出

System.Object