New-SqlColumnEncryptionKeyEncryptedValue

Crea il valore crittografato di una chiave di crittografia della colonna.

Sintassi

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

Descrizione

Il cmdlet New-SqlColumnEncryptionKeyEncryptedValue crea il valore crittografato di una chiave di crittografia della colonna. Il valore crittografato restituito è una stringa esadecimale.

Il cmdlet supporta due modalità di funzionamento:

  • Se non viene specificato alcun valore crittografato, il cmdlet genera una nuova chiave simmetrica in testo non crittografato e crittografa la chiave con la chiave master della colonna specificata.

  • Se viene specificato un valore crittografato, il cmdlet decrittografa innanzitutto il valore crittografato specificato e quindi crittografa nuovamente la chiave di testo non crittografato ottenuta con la chiave master della colonna specificata. Il cmdlet comunica con un archivio chiavi che contiene la chiave master della colonna. Se la chiave viene archiviata in Azure, è necessario specificare un token di autenticazione valido per un insieme di credenziali delle chiavi o un modulo di protezione hardware gestito che contiene la chiave. In alternativa, è possibile eseguire l'autenticazione in Azure con Add-SqlAzureAuthenticationContext prima di chiamare questo cmdlet.

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

Esempio

Esempio 1: Generare una chiave e crittografarla usando un certificato

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

Esempio 2: Generare un valore della chiave di crittografia della colonna e crittografarlo usando una chiave master della colonna archiviata in un insieme di credenziali delle chiavi in 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

Esempio 3: Decrittografare un valore di chiave crittografata esistente, generato usando una chiave master della colonna che è un certificato. Crittografare nuovamente il valore della chiave usando una chiave master della colonna che è una chiave in 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'

Parametri

-ColumnMasterKeySettings

Specifica l'oggetto SqlColumnMasterKeySettings usato da questo cmdlet per trovare la posizione in cui è archiviata la chiave master della colonna.

Type:SqlColumnMasterKeySettings
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EncryptedValue

Specifica il valore crittografato esistente.

Se si specifica un valore per questo parametro, il cmdlet decrittograferà prima di tutto questo valore usando la chiave master della colonna a cui fa riferimento il parametro ColumnMasterKeySettings e quindi la crittografa nuovamente usando la chiave master della colonna a cui fa riferimento il parametro TargetColumnMasterKeySettings.

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

-KeyVaultAccessToken

Specifica un token di accesso per gli insiemi di credenziali delle chiavi in Azure Key Vault. Usare questo parametro se la chiave master della colonna per crittografare o decrittografare una chiave di crittografia della colonna simmetrica viene archiviata in un insieme di credenziali delle chiavi in Azure Key Vault.

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

-ManagedHsmAccessToken

Specifica un token di accesso per i moduli di protezione hardware gestiti in Azure Key Vault. Usare questo parametro se la chiave master della colonna per crittografare o decrittografare una chiave di crittografia della colonna simmetrica viene archiviata in un modulo di protezione hardware gestito in Azure Key Vault.

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

-TargetColumnMasterKeySettings

Specifica l'oggetto SqlColumnMasterKeySettings utilizzato da questo cmdlet per determinare dove viene archiviata la chiave master della colonna, da utilizzare per crittografare il nuovo valore crittografato.

Type:SqlColumnMasterKeySettings
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

Output

String