Compartilhar via


Invoke-SqlVulnerabilityAssessmentScan

Invoca uma nova verificação de Avaliação de Vulnerabilidade.

Sintaxe

ByContext (Padrão)

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

Description

O cmdlet Invoke-SqlVulnerabilityAssessmentScan executa uma verificação no banco de dados. O cmdlet emprega uma base de dados de conhecimento de verificações de segurança que sinalizam vulnerabilidades de segurança e realçam desvios de práticas recomendadas, como configurações incorretas, permissões excessivas e dados confidenciais desprotegidos. As verificações de segurança são baseadas nas práticas recomendadas da Microsoft e se concentram nos problemas de segurança que apresentam os maiores riscos para seu banco de dados e seus dados valiosos. Essas verificações de segurança também representam muitos dos requisitos de vários órgãos reguladores para atender aos seus padrões de conformidade.

Os resultados da verificação incluem etapas práticas para resolver cada problema e fornecer scripts de correções personalizadas quando aplicável. Um relatório de avaliação pode ser personalizado para seu ambiente definindo uma linha de base aceitável para configurações de permissão, configurações de recursos e configurações de banco de dados.

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

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

Exemplos

Exemplo 1: Invocar uma verificação de Avaliação de Vulnerabilidade usando a autenticação do Windows no banco de dados mestre

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

Neste exemplo, invocamos uma verificação de Avaliação de Vulnerabilidade no banco de dados mestre usando a autenticação do Windows.

Exemplo 2: Invocar uma verificação de Avaliação de Vulnerabilidade usando o contexto de caminho atual

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

Este exemplo demonstra como Invoke-SqlVulnerabilityAssessmentScan usa o caminho atual para definir o contexto do banco de dados como MyDatabase.

Exemplo 3: Invocar uma verificação de Avaliação de Vulnerabilidade usando credenciais e omitir metadados de verificação de segurança

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  :

Este exemplo demonstra como invocar uma verificação usando um PSCredential. Ele também demonstra o uso do sinalizador de -OmitMetadata (observe que o resultado não contém o dicionário de verificações de segurança - esses são os metadados das verificações, como título, descrição etc.).

Exemplo 4: Invocar uma verificação de Avaliação de Vulnerabilidade com uma linha de 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"
}

Este exemplo demonstra como criar um conjunto de linhas de base e invocar uma verificação com ele. A propriedade BaselineAdjustedSecurityCheckResult no resultado de 'VA2109' contém o resultado ajustado da linha de base. Observe que o status original desse resultado falhou, mas o status de resultado ajustado da linha de base é Passado.

Parâmetros

-Baseline

Um conjunto de linhas de base de verificação de segurança de Avaliação de Vulnerabilidade

Propriedades do parâmetro

Tipo:SecurityCheckBaselineSet
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-ConnectionString

Especifica uma cadeia de conexão para se conectar ao banco de dados. Se esse parâmetro estiver presente, outros parâmetros de conexão serão ignorados

Propriedades do parâmetro

Tipo:String
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

ByConnectionString
Cargo:Named
Obrigatório:True
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-Credential

Especifica uma credencial usada para se conectar ao banco de dados.

Propriedades do parâmetro

Tipo:PSCredential
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

ByConnectionParameters
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-DatabaseName

Especifica o nome de um banco de dados. Esse cmdlet se conecta a esse banco de dados na instância especificada no parâmetro ServerInstance.

Se o parâmetro banco de dados não for especificado, o banco de dados usado dependerá se o caminho atual especifica a pasta SQLSERVER:\SQL e um nome de banco de dados. Se o caminho especificar a pasta SQL e um nome de banco de dados, esse cmdlet se conectará ao banco de dados especificado no caminho.

Propriedades do parâmetro

Tipo:String
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

ByConnectionParameters
Cargo:Named
Obrigatório:True
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-InputObject

Especifica o objeto de entrada para a operação de verificação.

Propriedades do parâmetro

Tipo:Database
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

ByDBObject
Cargo:Named
Obrigatório:True
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-OmitMetadata

Se deseja omitir os metadados de verificação de segurança (por exemplo, título, descrição etc.) Observe que Export-VulnerabilityAssessmentScan requer que os metadados de verificação de segurança sejam executados corretamente.

Propriedades do parâmetro

Tipo:SwitchParameter
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-Path

Especifica o caminho para a instância do SQL Server para executar a verificação.

Propriedades do parâmetro

Tipo:String
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

ByPath
Cargo:Named
Obrigatório:True
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-ScanId

A ID de verificação da Avaliação de Vulnerabilidade

Propriedades do parâmetro

Tipo:String
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-ServerInstance

Especifica uma cadeia de caracteres ou um objeto SMO (SQL Server Management Objects) que especifica o nome de uma instância do Mecanismo de Banco de Dados. Para instâncias padrão, especifique apenas o nome do computador: MyComputer. Para instâncias nomeadas, use o formato ComputerName\InstanceName.

Propriedades do parâmetro

Tipo:PSObject
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

ByConnectionParameters
Cargo:Named
Obrigatório:True
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

CommonParameters

Este cmdlet suporta os parâmetros comuns: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Para obter mais informações, consulte about_CommonParameters.

Entradas

None

Saídas

System.Object