Invoke-SqlVulnerabilityAssessmentScan

Invoca un nuevo examen de evaluación de vulnerabilidades.

Syntax

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>]

Description

El cmdlet Invoke-SqlVulnerabilityAssessmentScan ejecuta un examen en la base de datos. El cmdlet emplea una knowledge base de comprobaciones de seguridad que marcan vulnerabilidades de seguridad y resaltan las desviaciones de los procedimientos recomendados, como configuraciones incorrectas, permisos excesivos y datos confidenciales no protegidos. Las comprobaciones de seguridad se basan en los procedimientos recomendados de Microsoft y se centran en los problemas de seguridad que presentan los mayores riesgos para la base de datos y sus datos valiosos. Estas comprobaciones de seguridad también representan muchos de los requisitos de diversos organismos reguladores para cumplir sus estándares de cumplimiento.

Los resultados del examen incluyen pasos que requieren acción para corregir cada uno de los problemas y proporcionan scripts de solución personalizados donde sea aplicable. Un informe de evaluación se puede personalizar para su entorno estableciendo una línea base aceptable para las configuraciones de permisos, las configuraciones de características y la configuración de la base de datos.

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

Ejemplos

Ejemplo 1: Invocar un examen de evaluación de vulnerabilidades mediante autenticación de Windows en la base de datos maestra

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]...}

En este ejemplo, se invoca un examen de evaluación de vulnerabilidades en la base de datos maestra mediante autenticación de Windows.

Ejemplo 2: Invocar un examen de evaluación de vulnerabilidades mediante el contexto de ruta de acceso actual

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]...}

En este ejemplo se muestra cómo Invoke-SqlVulnerabilityAssessmentScan usa la ruta de acceso actual para establecer el contexto de la base de datos en MyDatabase.

Ejemplo 3: Invocar un examen de evaluación de vulnerabilidades mediante credenciales y omitir metadatos de comprobaciones de seguridad

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  :

En este ejemplo se muestra cómo invocar un examen mediante PSCredential. También muestra el uso de la marca -OmitMetadata (observe que el resultado no contiene el diccionario de comprobaciones de seguridad, es decir, los metadatos de las comprobaciones, como el título, la descripción, etc.).

Ejemplo 4: Invocar un examen de evaluación de vulnerabilidades con una línea base

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"
}

En este ejemplo se muestra cómo crear un conjunto de línea base e invocar un examen con él. La propiedad BaselineAdjustedSecurityCheckResult en el resultado de "VA2109" contiene el resultado ajustado de línea base. Observe que el estado original de este resultado es Error, pero se pasa el estado de resultado ajustado de línea base.

Parámetros

-Baseline

Conjunto de línea base de comprobación de seguridad de evaluación de vulnerabilidades

Type:SecurityCheckBaselineSet
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ConnectionString

Especifica una cadena de conexión para conectarse a la base de datos. Si este parámetro está presente, se omitirán otros parámetros de conexión.

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Credential

Especifica una credencial usada para conectarse a la base de datos.

Type:PSCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DatabaseName

Especifica el nombre de una base de datos. Este cmdlet se conecta a esta base de datos en la instancia especificada en el parámetro ServerInstance.

Si no se especifica el parámetro Database, la base de datos que se usa depende de si la ruta de acceso actual especifica la carpeta SQLSERVER:\SQL y un nombre de base de datos. Si la ruta de acceso especifica la carpeta SQL y un nombre de base de datos, este cmdlet se conecta a la base de datos especificada en la ruta de acceso.

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

Especifica el objeto de entrada para la operación de examen.

Type:Database
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-OmitMetadata

Si se omitirán los metadatos de comprobación de seguridad (por ejemplo, título, descripción, etc.) Tenga en cuenta que Export-VulnerabilityAssessmentScan requiere que los metadatos de seguridad se ejecuten correctamente.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

Especifica la ruta de acceso a la instancia de SQL Server para ejecutar el examen.

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-ScanId

Identificador de examen de evaluación de vulnerabilidades

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ServerInstance

Especifica una cadena de caracteres o un objeto SQL Server Objetos de administración (SMO) que especifica el nombre de una instancia del motor de base de datos. Para las instancias predeterminadas, especifique solo el nombre del equipo: MyComputer. Para las instancias con nombre, use el formato NombreDeEquipo\NombreDeInstancia.

Type:PSObject
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

Entradas

None

Salidas

System.Object