Invoke-SqlVulnerabilityAssessmentScan

调用新的漏洞评估扫描。

语法

ByContext (默认值)

Invoke-SqlVulnerabilityAssessmentScan
    [-ScanId <String>]
    [-Baseline <SecurityCheckBaselineSet>]
    [-OmitMetadata]
    [<CommonParameters>]

ByConnectionString

Invoke-SqlVulnerabilityAssessmentScan
    -ConnectionString <String>
    [-ScanId <String>]
    [-Baseline <SecurityCheckBaselineSet>]
    [-OmitMetadata]
    [<CommonParameters>]

ByConnectionParameters

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

ByPath

Invoke-SqlVulnerabilityAssessmentScan
    -Path <String>
    [-ScanId <String>]
    [-Baseline <SecurityCheckBaselineSet>]
    [-OmitMetadata]
    [<CommonParameters>]

ByDBObject

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
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-ConnectionString

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

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

ByConnectionString
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Credential

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

参数属性

类型:PSCredential
默认值:None
支持通配符:False
不显示:False

参数集

ByConnectionParameters
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-DatabaseName

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

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

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

ByConnectionParameters
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-InputObject

指定扫描作的输入对象。

参数属性

类型:Database
默认值:None
支持通配符:False
不显示:False

参数集

ByDBObject
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-OmitMetadata

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

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Path

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

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

ByPath
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-ScanId

漏洞评估扫描 ID

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-ServerInstance

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

参数属性

类型:PSObject
默认值:None
支持通配符:False
不显示:False

参数集

ByConnectionParameters
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

CommonParameters

此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters

输入

None

输出

System.Object