Freigeben über


New-SqlColumnEncryptionKeyEncryptedValue

Erstellt den verschlüsselten Wert eines Spaltenverschlüsselungsschlüssels.

Syntax

Default (Standardwert)

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

Beschreibung

Das Cmdlet New-SqlColumnEncryptionKeyEncryptedValue erstellt den verschlüsselten Wert eines Spaltenverschlüsselungsschlüssels. Der zurückgegebene verschlüsselte Wert ist eine hexadezimale Zeichenfolge.

Das Cmdlet unterstützt zwei Betriebsmodi:

  • Wenn kein verschlüsselter Wert angegeben wird, generiert das Cmdlet einen neuen symmetrischen Klartextschlüssel und verschlüsselt den Schlüssel mit dem angegebenen Spaltenmasterschlüssel.

  • Wenn ein verschlüsselter Wert angegeben wird, entschlüsselt das Cmdlet zuerst den angegebenen verschlüsselten Wert und verschlüsselt dann den abgerufenen Nur-Text-Schlüssel mit dem angegebenen Spaltenmasterschlüssel erneut. Das Cmdlet kommuniziert mit einem Schlüsselspeicher, der den Spaltenmasterschlüssel enthält. Wenn der Schlüssel in Azure gespeichert ist, müssen Sie ein gültiges Authentifizierungstoken für einen Schlüsseltresor oder ein verwaltetes HSM angeben, das den Schlüssel enthält. Alternativ können Sie sich bei Azure mit Add-SqlAzureAuthenticationContext authentifizieren, bevor Sie dieses Cmdlet aufrufen.

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

Beispiele

Beispiel 1: Generieren eines Schlüssels und Verschlüsseln eines Schlüssels mithilfe eines Zertifikats

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

Beispiel 2: Generieren Sie einen Spaltenverschlüsselungsschlüsselwert, und verschlüsseln Sie ihn mithilfe eines Spaltenmasterschlüssels, der in einem Schlüsseltresor in Azure Key Vault gespeichert ist.

# 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

Beispiel 3: Entschlüsseln eines vorhandenen verschlüsselten Schlüsselwerts, der mit einem Spaltenmasterschlüssel erstellt wurde, der ein Zertifikat ist. Verschlüsseln Sie den Schlüsselwert erneut mithilfe eines Spaltenmasterschlüssels, der ein Schlüssel im Azure Key Vault ist.

# 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'

Parameter

-ColumnMasterKeySettings

Gibt das SqlColumnMasterKeySettings -Objekt an, das dieses Cmdlet verwendet, um zu ermitteln, wo der Spaltenmasterschlüssel gespeichert ist.

Parametereigenschaften

Typ:SqlColumnMasterKeySettings
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:1
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-EncryptedValue

Gibt den vorhandenen verschlüsselten Wert an.

Wenn Sie einen Wert für diesen Parameter angeben, entschlüsselt das Cmdlet diesen Wert zunächst mithilfe des Spaltenmasterschlüssels, auf den der ColumnMasterKeySettings-Parameter verweist, und verschlüsselt ihn dann mithilfe des Spaltenmasterschlüssels, auf den der Parameter TargetColumnMasterKeySettings verweist.

Parametereigenschaften

Typ:String
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:2
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-KeyVaultAccessToken

Gibt ein Zugriffstoken für Schlüsseltresor in Azure Key Vault an. Verwenden Sie diesen Parameter, wenn der Spaltenmasterschlüssel zum Verschlüsseln oder Entschlüsseln eines symmetrischen Spaltenverschlüsselungsschlüssels in einem Schlüsseltresor im Azure Key Vault gespeichert ist.

Parametereigenschaften

Typ:String
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-ManagedHsmAccessToken

Gibt ein Zugriffstoken für verwaltete HSMs im Azure Key Vault an. Verwenden Sie diesen Parameter, wenn der Spaltenmasterschlüssel zum Verschlüsseln oder Entschlüsseln eines symmetrischen Spaltenverschlüsselungsschlüssels in einem verwalteten HSM im Azure Key Vault gespeichert wird.

Parametereigenschaften

Typ:String
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-TargetColumnMasterKeySettings

Gibt das SqlColumnMasterKeySettings -Objekt an, das dieses Cmdlet verwendet, um zu bestimmen, wo der Spaltenmasterschlüssel zum Verschlüsseln des neuen verschlüsselten Werts verwendet werden soll.

Parametereigenschaften

Typ:SqlColumnMasterKeySettings
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:0
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

CommonParameters

Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.

Ausgaben

String