New-SqlColumnEncryptionKey
Erstellt ein Spaltenverschlüsselungsschlüsselobjekt in der Datenbank.
Syntax
ByObject
New-SqlColumnEncryptionKey
[-Name] <String>
[-InputObject] <Database>
-ColumnMasterKeyName <String>
[-EncryptedValue <String>]
[-KeyVaultAccessToken <String>]
[-ManagedHsmAccessToken <String>]
[-Script]
[-AccessToken <PSObject>]
[-TrustServerCertificate]
[-HostNameInCertificate <String>]
[-Encrypt <String>]
[<CommonParameters>]
ByPath
New-SqlColumnEncryptionKey
[-Name] <String>
[[-Path] <String>]
-ColumnMasterKeyName <String>
[-EncryptedValue <String>]
[-KeyVaultAccessToken <String>]
[-ManagedHsmAccessToken <String>]
[-Script]
[-AccessToken <PSObject>]
[-TrustServerCertificate]
[-HostNameInCertificate <String>]
[-Encrypt <String>]
[<CommonParameters>]
Beschreibung
Das Cmdlet New-SqlColumnEncryptionKey erstellt ein Spaltenverschlüsselungsschlüsselobjekt in der Datenbank. Ein Spaltenverschlüsselungsschlüsselobjekt kapselt einen verschlüsselten Wert eines symmetrischen kryptografischen Schlüssels, der anschließend zum Verschlüsseln von Datenbankspalten mit dem Feature "Immer verschlüsselt" verwendet werden kann.
Dieses Cmdlet unterstützt zwei Betriebsmodi:
Wenn der verschlüsselte Wert eines Spaltenverschlüsselungsschlüssels angegeben ist, erstellt das Cmdlet einfach ein neues Spaltenverschlüsselungsschlüsselobjekt, das den angegebenen verschlüsselten Wert kapselt.
Wenn der verschlüsselte Wert eines Spaltenverschlüsselungsschlüssels nicht angegeben ist, generiert das Cmdlet zuerst einen Nur-Text-Schlüsselwert, verschlüsselt ihn mit dem angegebenen Spaltenmasterschlüssel und erstellt dann ein neues Spaltenverschlüsselungsschlüsselobjekt, das den generierten verschlüsselten Wert kapselt. In diesem Modus kommuniziert das Cmdlet 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 und Verschlüsseln eines Spaltenverschlüsselungsschlüssels
New-SqlColumnEncryptionKey -Name 'CEK1' -ColumnMasterKeyName 'CMK1'
Dieser Befehl generiert einen Nur-Text-Wert eines Spaltenverschlüsselungsschlüssels, verschlüsselt den Nur-Text-Wert mit dem angegebenen Masterschlüssel und erstellt dann ein Spaltenverschlüsselungsschlüsselobjekt, das den generierten verschlüsselten Wert in der Datenbank kapselt.
Beispiel 2: Generieren und Verschlüsseln eines Spaltenverschlüsselungsschlüssels mithilfe eines Spaltenmasterschlüssels, der in einem Schlüsseltresor in Azure Key Vault gespeichert ist.
In diesem Beispiel wird ein Token für Schlüsseltresor in Azure Key Vault an das Cmdlet übergeben.
# Connect to Azure account.
Import-Module Az.Accounts -MinimumVersion 2.2.0
Connect-AzAccount
# Obtain the access token.
$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.
New-SqlColumnEncryptionKey -Name 'CEK1' -ColumnMasterKeyName 'CMK1' -KeyVaultAccessToken $keyVaultAccessToken
Beispiel 3: Erstellen eines Spaltenverschlüsselungsschlüsselobjekts für einen vorhandenen verschlüsselten Wert eines Spaltenverschlüsselungsschlüssels.
New-SqlColumnEncryptionKey -Name 'CEK1' -ColumnMasterKeyName 'CMK1' -EncryptedValue '0x01700000016C006F00630061006C006D0061006300680069006E0065002F006D0079002F003200660061006600640038003100320031003400340034006500620031006100320065003000360039003300340038006100350064003400300032003300380065006600620063006300610031006300284FC4316518CF3328A6D9304F65DD2CE387B79D95D077B4156E9ED8683FC0E09FA848275C685373228762B02DF2522AFF6D661782607B4A2275F2F922A5324B392C9D498E4ECFC61B79F0553EE8FB2E5A8635C4DBC0224D5A7F1B136C182DCDE32A00451F1A7AC6B4492067FD0FAC7D3D6F4AB7FC0E86614455DBB2AB37013E0A5B8B5089B180CA36D8B06CDB15E95A7D06E25AACB645D42C85B0B7EA2962BD3080B9A7CDB805C6279FE7DD6941E7EA4C2139E0D4101D8D7891076E70D433A214E82D9030CF1F40C503103075DEEB3D64537D15D244F503C2750CF940B71967F51095BFA51A85D2F764C78704CAB6F015EA87753355367C5C9F66E465C0C66BADEDFDF76FB7E5C21A0D89A2FCCA8595471F8918B1387E055FA0B816E74201CD5C50129D29C015895CD073925B6EA87CAF4A4FAF018C06A3856F5DFB724F42807543F777D82B809232B465D983E6F19DFB572BEA7B61C50154605452A891190FB5A0C4E464862CF5EFAD5E7D91F7D65AA1A78F688E69A1EB098AB42E95C674E234173CD7E0925541AD5AE7CED9A3D12FDFE6EB8EA4F8AAD2629D4F5A18BA3DDCC9CF7F352A892D4BEBDC4A1303F9C683DACD51A237E34B045EBE579A381E26B40DCFBF49EFFA6F65D17F37C6DBA54AA99A65D5573D4EB5BA038E024910A4D36B79A1D4E3C70349DADFF08FD8B4DEE77FDB57F01CB276ED5E676F1EC973154F86'
Parameter
-AccessToken
Das Zugriffstoken, das zur Authentifizierung bei SQL Server verwendet wird, als Alternative zur Benutzer-/Kennwort- oder Windows-Authentifizierung.
Dies kann z. B. verwendet werden, um eine Verbindung mit SQL Azure DB einer SQL Azure Managed Instance oder einer Service PrincipalManaged Identity.
Der zu verwendende Parameter kann entweder eine Zeichenfolge sein, die das Token darstellt, oder ein PSAccessToken Objekt, das durch Ausführen Get-AzAccessToken -ResourceUrl https://database.windows.netzurückgegeben wird.
Dieser Parameter ist neu in v22 des Moduls.
Parametereigenschaften
| Typ: | PSObject |
| 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 |
-ColumnMasterKeyName
Gibt den Namen des Spaltenmasterschlüssels an, der verwendet wurde, um den angegebenen verschlüsselten Wert des Spaltenverschlüsselungsschlüssels zu erzeugen, oder den Namen des Spaltenmasterschlüssels, der zum Erzeugen des neuen verschlüsselten Werts verwendet wird.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Encrypt
Der Verschlüsselungstyp, der beim Herstellen einer Verbindung mit SQL Server verwendet werden soll.
Dieser Wert ist der Encrypt Eigenschaft SqlConnectionEncryptOption für das SqlConnection-Objekt des Microsoft.Data.SqlClient-Treibers zugeordnet.
In v22 des Moduls ist Optional der Standardwert (aus Kompatibilität mit v21). In v23+ des Moduls lautet der Standardwert "Verpflichtend", wodurch für vorhandene Skripts eine bahnbrechende Änderung erstellt werden kann.
Dieser Parameter ist neu in v22 des Moduls.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Zulässige Werte: | Mandatory, Optional, Strict |
| 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 |
-EncryptedValue
Gibt eine hexadezimale Zeichenfolge an, bei der es sich um einen verschlüsselten Verschlüsselungsschlüsselwert handelt.
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 |
-HostNameInCertificate
Der Hostname, der beim Überprüfen des TLS/SSL-Zertifikats von SQL Server verwendet werden soll. Sie müssen diesen Parameter übergeben, wenn Ihre SQL Server-Instanz für die Erzwingungsverschlüsselung aktiviert ist und Sie eine Verbindung mit einer Instanz mit hostname/shortname herstellen möchten. Wenn dieser Parameter nicht angegeben wird, ist das Übergeben des vollqualifizierten Domänennamens (Fully Qualified Domain Name, FQDN) an -ServerInstance erforderlich, um eine Verbindung mit einer SQL Server-Instanz herzustellen, die für die Erzwingungsverschlüsselung aktiviert ist.
Dieser Parameter ist neu in v22 des Moduls.
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 |
-InputObject
Gibt das SQL-Datenbankobjekt an, für das dieses Cmdlet den Vorgang ausführt.
Parametereigenschaften
| Typ: | Database |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
ByObject
| Position: | 2 |
| Obligatorisch.: | True |
| Wert aus Pipeline: | True |
| 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, den Sie zum Verschlüsseln des neuen Spaltenverschlüsselungsschlüssels verwenden möchten, in einem Schlüsseltresor in 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, den Sie zum Verschlüsseln des neuen Spaltenverschlüsselungsschlüssels verwenden möchten, in einem verwalteten HSM in 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 |
-Name
Gibt den Namen des zu erstellenden Spaltenverschlüsselungsschlüsselobjekts an.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | 1 |
| Obligatorisch.: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Path
Gibt den Pfad der SQL-Datenbank an, für die dieses Cmdlet den Vorgang ausführt. Wenn Sie keinen Wert für diesen Parameter angeben, verwendet das Cmdlet den aktuellen Arbeitsspeicherort.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
ByPath
| Position: | 2 |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Script
Gibt an, dass dieses Cmdlet ein Transact-SQL Skript ausführt, das den Vorgang ausführt.
Parametereigenschaften
| Typ: | SwitchParameter |
| 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 |
-TrustServerCertificate
Gibt an, ob der Kanal verschlüsselt wird, während die Zertifikatkette umgangen wird, um die Vertrauensstellung zu überprüfen.
In v22 des Moduls ist $true der Standardwert (aus Kompatibilität mit v21). In v23+ des Moduls lautet der Standardwert "$false", wodurch möglicherweise eine änderung für vorhandene Skripts geändert wird.
Dieser Parameter ist neu in v22 des Moduls.
Parametereigenschaften
| Typ: | SwitchParameter |
| 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 |
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.