Compartir a través de


New-SqlColumnEncryptionKeyEncryptedValue

Crea el valor cifrado de una clave de cifrado de columna.

Sintaxis

New-SqlColumnEncryptionKeyEncryptedValue
   [-TargetColumnMasterKeySettings] <SqlColumnMasterKeySettings>
   [[-ColumnMasterKeySettings] <SqlColumnMasterKeySettings>]
   [[-EncryptedValue] <String>]
   [-KeyVaultAccessToken <String>]
   [-ManagedHsmAccessToken <String>]
   [-ProgressAction <ActionPreference>]
   [<CommonParameters>]

Description

El cmdlet New-SqlColumnEncryptionKeyEncryptedValue crea el valor cifrado de una clave de cifrado de columna. El valor cifrado devuelto es una cadena hexadecimal.

El cmdlet admite dos modos de operación:

  • Si no se especifica ningún valor cifrado, el cmdlet genera una nueva clave simétrica de texto no cifrado y cifra la clave con la clave maestra de columna especificada.

  • Si se especifica un valor cifrado, el cmdlet descifra primero el valor cifrado especificado y, a continuación, vuelve a cifrar la clave de texto no cifrado obtenida con la clave maestra de columna especificada. El cmdlet se comunica con un almacén de claves que contiene la clave maestra de columna. Si la clave se almacena en Azure, debe especificar un token de autenticación válido para un almacén de claves o un HSM administrado que contenga la clave. Como alternativa, puede autenticarse en Azure con Add-SqlAzureAuthenticationContext antes de llamar a este cmdlet.

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

Ejemplos

Ejemplo 1: Generación de una clave y cifrado mediante un certificado

$cmkSettings = New-SqlCertificateStoreColumnMasterKeySettings -CertificateStoreLocation 'CurrentUser' -certificateThumbprint 'f2260f28d909d21c642a3d8e0b45a830e79a1420'
New-SqlColumnEncryptionKeyEncryptedValue -TargetColumnMasterKeySettings $cmkSettings

Ejemplo 2: Genere un valor de clave de cifrado de columna y cifrelo mediante una clave maestra de columna que es una clave almacenada en un almacén de claves en Azure Key Vault.

# Obtain an access token for key vaults.
$keyVaultAccessToken = (Get-AzAccessToken -ResourceUrl https://vault.azure.net).Token

# Pass the token to the cmdlet. It will use the token to communicate with the key vault containing the column master key to sign the column master key metadata properties.
$cmkSettings = New-SqlAzureKeyVaultColumnMasterKeySettings -KeyUrl 'https://myvault.vault.azure.net/keys/CMK/4c05f1a41b12488f9cba2ea964b6a700' -AllowEnclaveComputations -KeyVaultAccessToken $keyVaultAccessToken

# Generate a column encryption key value and encrypt it with the column master key. Pass the access token, so that the cmdlet can communicate with Azure Key Vault.
New-SqlColumnEncryptionKeyEncryptedValue -TargetColumnMasterKeySettings $cmkSettings -KeyVaultAccessToken $keyVaultAccessToken

Ejemplo 3: Descifrar un valor de clave cifrada existente, que se generó mediante una clave maestra de columna que es un certificado. Vuelva a cifrar el valor de la clave mediante una clave maestra de columna que sea una clave en Azure Key Vault.

# Connect to Azure account.
Import-Module Az.Accounts -MinimumVersion 2.2.0
Connect-AzAccount

# Obtain an access token for key vaults.
$keyVaultAccessToken = (Get-AzAccessToken -ResourceUrl https://vault.azure.net).Token

# Create a SqlColumnMasterKeySettings object referencing a certificate.
$currentCmkSettings = New-SqlCertificateStoreColumnMasterKeySettings -CertificateStoreLocation 'CurrentUser' -certificateThumbprint 'f2260f28d909d21c642a3d8e0b45a830e79a1420'

# Create a SqlColumnMasterKeySettings object, referencing a column master key in a key vault in Azure Key Vault.
$targetCmkSettings = New-SqlAzureKeyVaultColumnMasterKeySettings -KeyUrl 'https://myvault.vault.azure.net/keys/CMK/4c05f1a41b12488f9cba2ea964b6a700'

# Decrypt a column encryption key value using the current column master key and re-encrypt it with the new column master key. Pass the access token, so that the cmdlet can communicate with Azure Key Vault. 
New-SqlColumnEncryptionKeyEncryptedValue -TargetColumnMasterKeySettings $targetCmkSettings -ColumnMasterKeySettings $currentCmkSettings -KeyVaultAccessToken $keyVaultAccessToken -EncryptedValue '0x016E000001630075007200720065006E00740075007300650072002F006D0079002F006200330039003900340035006200370031003100330037003700350032006400380061003100310033003900660035006200640036006400380066003700330038006600320033006200360032003000307925663D2C3E275DD272E15E606927DA4326F5735C2C8E84F91B9EFE44F503ED01C130984E83AF4513F8A4A8D0878D42364E958291AE25111A868D25B69FC5143EEC04131DA27D05F3442CB665ACB4BB3F6A7A9F07DBD5D212A772414A2CCA03BEBEB7BF0E22C644C715D739B983872AFB2D390229A0B5311BCA07E3C1D857EE8982320BBBE9382C960B9674E3CC3D618AD623D6A362BEAEF68B1B1BB49660DD643A4375A9285CD9EAA5B13BFE2792DA92025351E7B6067BA07B6178D03041F40F00D84326627094C9D6944DD912497B080058A529D2DA11C8D609604449714420B4E44ECD1EB26DEE18BF712146A51DD99A02E3D4EE692A503CF02F874497010772DE743DDFB2A74801AC9A94C876D1F93554B70CE0ECC437E7FC28BC11A08222977CDA807E256ED536C41700C631878226E513AFE1199A1DB4732F975AA09A1E75B8A19802AE018871A7A0AD5B1E29B942F30490EDABD310A4170B991EBCFDA2AFE43285D5406476204B381D8A33EEB0B967073B4C0127B1C7F0281AB310EE4B9A3C2D3EAB44A1F5D15D4739FFAEF6110ED4808446F6A05DBF4121B2B33A0AF5A457CD38F895B8F7ABDF792E3ADBC3AF55B1442625F88F80127D08DE9E4AC1BB2AAA46843A477135053CEEFA4327D8C999C16D8B49C225F34AD7588A5F9E93FB5532B1F1DC5AFB3CE23DDC8DC12327DD6B5985104D14F4A1BC0F61F0AACD'

Parámetros

-ColumnMasterKeySettings

Especifica el objeto SqlColumnMasterKeySettings que usa este cmdlet para buscar dónde se almacena la clave maestra de columna.

Tipo:SqlColumnMasterKeySettings
Posición:1
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-EncryptedValue

Especifica el valor cifrado existente.

Si especifica un valor para este parámetro, el cmdlet descifrará primero este valor mediante la clave maestra de columna a la que hace referencia el parámetro ColumnMasterKeySettings y, a continuación, volverá a cifrarlo mediante la clave maestra de columna a la que hace referencia el parámetro TargetColumnMasterKeySettings.

Tipo:String
Posición:2
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-KeyVaultAccessToken

Especifica un token de acceso para almacenes de claves en Azure Key Vault. Use este parámetro si la clave maestra de columna para cifrar o descifrar una clave de cifrado de columna simétrica se almacena en un almacén de claves de Azure Key Vault.

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-ManagedHsmAccessToken

Especifica un token de acceso para los HSM administrados en Azure Key Vault. Use este parámetro si la clave maestra de columna para cifrar o descifrar una clave de cifrado de columna simétrica se almacena en un HSM administrado en Azure Key Vault.

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-ProgressAction

Determina cómo Responde PowerShell a las actualizaciones de progreso generadas por un script, cmdlet o proveedor, como las barras de progreso generadas por el cmdlet Write-Progress. El cmdlet Write-Progress crea barras de progreso que muestran el estado de un comando.

Tipo:ActionPreference
Alias:proga
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-TargetColumnMasterKeySettings

Especifica el objeto SqlColumnMasterKeySettings que usa este cmdlet para determinar dónde se almacena la clave maestra de columna, que se usará para cifrar el nuevo valor cifrado.

Tipo:SqlColumnMasterKeySettings
Posición:0
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

Salidas

String