Invoke-SqlColumnMasterKeyRotation
Inicia a rotação de uma chave mestra de coluna.
Sintaxe
Invoke-SqlColumnMasterKeyRotation
-SourceColumnMasterKeyName <String>
-TargetColumnMasterKeyName <String>
[-KeyVaultAccessToken <String>]
[-ManagedHsmAccessToken <String>]
[-InputObject] <Database>
[-Script]
[-AccessToken <PSObject>]
[-TrustServerCertificate]
[-HostNameInCertificate <String>]
[-Encrypt <String>]
[-ProgressAction <ActionPreference>]
[<CommonParameters>]
Invoke-SqlColumnMasterKeyRotation
-SourceColumnMasterKeyName <String>
-TargetColumnMasterKeyName <String>
[-KeyVaultAccessToken <String>]
[-ManagedHsmAccessToken <String>]
[[-Path] <String>]
[-Script]
[-AccessToken <PSObject>]
[-TrustServerCertificate]
[-HostNameInCertificate <String>]
[-Encrypt <String>]
[-ProgressAction <ActionPreference>]
[<CommonParameters>]
Description
O cmdlet Invoke-SqlColumnMasterKeyRotation inicia a substituição de uma chave mestra de coluna de origem existente por uma nova chave mestra de coluna de destino para o recurso Always Encrypted.
O cmdlet recupera todos os objetos de chave de criptografia de coluna que contêm valores de chave criptografados criptografados com a chave mestra da coluna de origem especificada.
Em seguida, o cmdlet descriptografa os valores criptografados atuais, criptografa novamente os valores de texto sem formatação resultantes com a chave mestra da coluna de destino e atualiza os objetos de chave de criptografia de coluna afetados para adicionar os novos valores criptografados.
Como resultado, cada chave de criptografia de coluna afetada contém dois valores criptografados: um produzido usando a chave mestra da coluna de origem atual e outro, produzido usando a chave mestra da coluna de destino.
Se uma chave mestra de coluna de origem ou de destino for armazenada no Azure, você precisará especificar um token de autenticação válido (ou tokens) para um cofre de chaves ou um HSM gerenciado que contém a chave. Como alternativa, você pode autenticar no Azure com Add-SqlAzureAuthenticationContext antes de chamar esse cmdlet.
Module requirements: version 21+ on PowerShell 5.1; version 22+ on PowerShell 7.x.
Exemplos
Exemplo 1: iniciar o processo de rotação da chave mestra de coluna.
Invoke-SqlColumnMasterKeyRotation -SourceColumnMasterKeyName "CMK1" -TargetColumnMasterKeyName "CMK2"
Esse comando inicia o processo de girar a chave mestra de coluna chamada CMK1 e substituí-la pela chave mestra de coluna chamada CMK2.
Exemplo 2: Iniciar o processo de rotação da chave mestra de coluna com tokens de autenticação especificados
# Connect to Azure account.
Import-Module Az.Accounts -MinimumVersion 2.2.0
Connect-AzAccount
# Obtain access tokens.
$keyVaultAccessToken = (Get-AzAccessToken -ResourceUrl https://vault.azure.net).Token
$managedHSMAccessToken = (Get-AzAccessToken -ResourceUrl https://managedhsm.azure.net).Token
# Pass the tokens to the cmdlet.
Invoke-SqlColumnMasterKey -SourceColumnMasterKeyName CMK1 -TargetColumnMasterKeyName CMK2 -KeyVaultAccessToken $keyVaultAccessToken -ManagedHSMAccessToken $managedHSMAccessToken
O exemplo inicia o processo de girar a chave mestra de coluna chamada CMK1 e substituí-la pela chave mestra de coluna chamada CMK2.
Presumimos que uma das chaves esteja armazenada em um cofre de chaves e a outra chave seja armazenada em um HSM gerenciado no Azure Key Vault.
O Invoke-SqlColumnMasterKey
usará os tokens de autenticação obtidos para se comunicar com o cofre de chaves e os pontos de extremidade HSM gerenciados.
Parâmetros
-AccessToken
O token de acesso usado para autenticar no SQL Server, como uma alternativa ao usuário/senha ou à Autenticação do Windows.
Isso pode ser usado, por exemplo, para se conectar a SQL Azure DB
e SQL Azure Managed Instance
usando um Service Principal
ou um Managed Identity
.
O parâmetro a ser usado pode ser uma cadeia de caracteres que representa o token ou um objeto PSAccessToken
conforme retornado executando Get-AzAccessToken -ResourceUrl https://database.windows.net
.
Esse parâmetro é novo na v22 do módulo.
Tipo: | PSObject |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-Encrypt
O tipo de criptografia a ser usado ao se conectar ao SQL Server.
Esse valor é mapeado para a propriedade Encrypt
SqlConnectionEncryptOption
no objeto SqlConnection do driver Microsoft.Data.SqlClient.
Na v22 do módulo, o padrão é Optional
(para compatibilidade com v21). Na v23+ do módulo, o valor padrão será 'Obrigatório', o que pode criar uma alteração significativa para scripts existentes.
Esse parâmetro é novo na v22 do módulo.
Tipo: | String |
Valores aceitos: | Mandatory, Optional, Strict |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-HostNameInCertificate
O nome do host a ser usado na validação do certificado TLS/SSL do SQL Server. Você deve passar esse parâmetro se a instância do SQL Server estiver habilitada para o Force Encryption e quiser se conectar a uma instância usando nome de host/nome curto. Se esse parâmetro for omitido, passar o FQDN (Nome de Domínio Totalmente Qualificado) para -ServerInstance será necessário para se conectar a uma instância do SQL Server habilitada para o Force Encryption.
Esse parâmetro é novo na v22 do módulo.
Tipo: | String |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-InputObject
Especifica o objeto de banco de dados SQL, para o qual esse cmdlet executa a operação.
Tipo: | Database |
Cargo: | 1 |
Valor padrão: | None |
Obrigatório: | True |
Aceitar a entrada de pipeline: | True |
Aceitar caracteres curinga: | False |
-KeyVaultAccessToken
Especifica um token de acesso para cofres de chaves no Azure Key Vault. Use esse parâmetro se a chave mestra da coluna de destino e/ou atual estiver armazenada em um cofre de chaves no Azure Key Vault.
Tipo: | String |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-ManagedHsmAccessToken
Especifica um token de acesso para HSMs gerenciados no Azure Key Vault. Use esse parâmetro se a chave mestra da coluna de destino e/ou atual for armazenada em um HSM gerenciado no Azure Key Vault.
Tipo: | String |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-Path
Especifica o caminho do banco de dados SQL, para o qual esse cmdlet executa a operação.
Se você não especificar um valor para esse parâmetro, o cmdlet usará o local de trabalho atual.
Tipo: | String |
Cargo: | 1 |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-ProgressAction
Determina como o PowerShell responde às atualizações de progresso geradas por um script, cmdlet ou provedor, como as barras de progresso geradas pelo cmdlet Write-Progress. O cmdlet Write-Progress cria barras de progresso que mostram o status de um comando.
Tipo: | ActionPreference |
Aliases: | proga |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-Script
Indica que esse cmdlet executa um script Transact-SQL que executa a tarefa.
Tipo: | SwitchParameter |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-SourceColumnMasterKeyName
Especifica o nome da chave mestra da coluna de origem.
Tipo: | String |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | True |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-TargetColumnMasterKeyName
Especifica o nome da chave mestra da coluna de destino.
Tipo: | String |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | True |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-TrustServerCertificate
Indica se o canal será criptografado ao ignorar a cadeia de certificados para validar a confiança.
Na v22 do módulo, o padrão é $true
(para compatibilidade com v21). Na v23+ do módulo, o valor padrão será "$false", o que pode criar uma alteração significativa para scripts existentes.
Esse parâmetro é novo na v22 do módulo.
Tipo: | SwitchParameter |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
Entradas
Microsoft.SqlServer.Management.Smo.Database