Condividi tramite


New-SqlColumnEncryptionKey

Crea un oggetto chiave di crittografia della colonna nel database.

Sintassi

New-SqlColumnEncryptionKey
   -ColumnMasterKeyName <String>
   [-EncryptedValue <String>]
   [-KeyVaultAccessToken <String>]
   [-ManagedHsmAccessToken <String>]
   [-Name] <String>
   [-InputObject] <Database>
   [-Script]
   [-AccessToken <PSObject>]
   [-TrustServerCertificate]
   [-HostNameInCertificate <String>]
   [-Encrypt <String>]
   [-ProgressAction <ActionPreference>]
   [<CommonParameters>]
New-SqlColumnEncryptionKey
   -ColumnMasterKeyName <String>
   [-EncryptedValue <String>]
   [-KeyVaultAccessToken <String>]
   [-ManagedHsmAccessToken <String>]
   [-Name] <String>
   [[-Path] <String>]
   [-Script]
   [-AccessToken <PSObject>]
   [-TrustServerCertificate]
   [-HostNameInCertificate <String>]
   [-Encrypt <String>]
   [-ProgressAction <ActionPreference>]
   [<CommonParameters>]

Descrizione

Il cmdlet New-SqlColumnEncryptionKey crea un oggetto chiave di crittografia della colonna nel database. Un oggetto chiave di crittografia della colonna incapsula un valore crittografato di una chiave di crittografia simmetrica che può essere usata successivamente per crittografare le colonne di database usando la funzionalità Always Encrypted.

Questo cmdlet supporta due modalità di funzionamento:

  • Se viene specificato il valore crittografato di una chiave di crittografia della colonna, il cmdlet crea semplicemente un nuovo oggetto chiave di crittografia della colonna incapsulando il valore crittografato specificato.

  • Se il valore crittografato di una chiave di crittografia della colonna non viene specificato, il cmdlet genera innanzitutto un valore di chiave di testo non crittografato, lo crittografa con la chiave master della colonna specificata e quindi crea un nuovo oggetto chiave di crittografia della colonna che incapsula il valore crittografato generato. In questa modalità, 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 e crittografare una chiave di crittografia della colonna

New-SqlColumnEncryptionKey -Name 'CEK1' -ColumnMasterKeyName 'CMK1'

Questo comando genera un valore di testo non crittografato di una chiave di crittografia della colonna, crittografa il valore di testo non crittografato con la chiave master specificata e quindi crea un oggetto chiave di crittografia della colonna, incapsulando il valore crittografato generato nel database.

Esempio 2: Generare e crittografare una chiave di crittografia della colonna usando una chiave master della colonna archiviata in un insieme di credenziali delle chiavi in Azure Key Vault.

In questo esempio un token per gli insiemi di credenziali delle chiavi in Azure Key Vault viene passato al cmdlet .

# 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

Esempio 3: Creare un oggetto chiave di crittografia della colonna per un valore crittografato esistente di una chiave di crittografia della colonna.

New-SqlColumnEncryptionKey -Name 'CEK1' -ColumnMasterKeyName 'CMK1' -EncryptedValue '0x01700000016C006F00630061006C006D0061006300680069006E0065002F006D0079002F003200660061006600640038003100320031003400340034006500620031006100320065003000360039003300340038006100350064003400300032003300380065006600620063006300610031006300284FC4316518CF3328A6D9304F65DD2CE387B79D95D077B4156E9ED8683FC0E09FA848275C685373228762B02DF2522AFF6D661782607B4A2275F2F922A5324B392C9D498E4ECFC61B79F0553EE8FB2E5A8635C4DBC0224D5A7F1B136C182DCDE32A00451F1A7AC6B4492067FD0FAC7D3D6F4AB7FC0E86614455DBB2AB37013E0A5B8B5089B180CA36D8B06CDB15E95A7D06E25AACB645D42C85B0B7EA2962BD3080B9A7CDB805C6279FE7DD6941E7EA4C2139E0D4101D8D7891076E70D433A214E82D9030CF1F40C503103075DEEB3D64537D15D244F503C2750CF940B71967F51095BFA51A85D2F764C78704CAB6F015EA87753355367C5C9F66E465C0C66BADEDFDF76FB7E5C21A0D89A2FCCA8595471F8918B1387E055FA0B816E74201CD5C50129D29C015895CD073925B6EA87CAF4A4FAF018C06A3856F5DFB724F42807543F777D82B809232B465D983E6F19DFB572BEA7B61C50154605452A891190FB5A0C4E464862CF5EFAD5E7D91F7D65AA1A78F688E69A1EB098AB42E95C674E234173CD7E0925541AD5AE7CED9A3D12FDFE6EB8EA4F8AAD2629D4F5A18BA3DDCC9CF7F352A892D4BEBDC4A1303F9C683DACD51A237E34B045EBE579A381E26B40DCFBF49EFFA6F65D17F37C6DBA54AA99A65D5573D4EB5BA038E024910A4D36B79A1D4E3C70349DADFF08FD8B4DEE77FDB57F01CB276ED5E676F1EC973154F86'

Parametri

-AccessToken

Token di accesso usato per eseguire l'autenticazione a SQL Server, come alternativa all'autenticazione utente/password o windows.

Può essere usato, ad esempio, per connettersi a SQL Azure DB e SQL Azure Managed Instance usando un Service Principal o un Managed Identity.

Il parametro da usare può essere una stringa che rappresenta il token o un oggetto PSAccessToken restituito eseguendo Get-AzAccessToken -ResourceUrl https://database.windows.net.

Questo parametro è nuovo nella versione 22 del modulo.

Tipo:PSObject
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-ColumnMasterKeyName

Specifica il nome della chiave master della colonna utilizzata per produrre il valore crittografato specificato della chiave di crittografia della colonna oppure il nome della chiave master della colonna utilizzata per produrre il nuovo valore crittografato.

Tipo:String
Posizione:Named
Valore predefinito:None
Necessario:True
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Encrypt

Tipo di crittografia da usare per la connessione a SQL Server.

Questo valore esegue il mapping alla proprietà EncryptSqlConnectionEncryptOption sull'oggetto SqlConnection del driver Microsoft.Data.SqlClient.

Nella versione 22 del modulo, il valore predefinito è Optional (per compatibilità con v21). Nella versione 23+ del modulo, il valore predefinito sarà "Obbligatorio", che potrebbe creare una modifica di rilievo per gli script esistenti.

Questo parametro è nuovo nella versione 22 del modulo.

Tipo:String
Valori accettati:Mandatory, Optional, Strict
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-EncryptedValue

Specifica una stringa esadecimale che rappresenta un valore di chiave di crittografia della colonna crittografata.

Tipo:String
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-HostNameInCertificate

Nome host da usare per convalidare il certificato TLS/SSL di SQL Server. È necessario passare questo parametro se l'istanza di SQL Server è abilitata per Forza crittografia e si vuole connettersi a un'istanza usando nome host/nome breve. Se questo parametro viene omesso, è necessario passare il nome di dominio completo (FQDN) a -ServerInstance per connettersi a un'istanza di SQL Server abilitata per Forza crittografia.

Questo parametro è nuovo nella versione 22 del modulo.

Tipo:String
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-InputObject

Specifica l'oggetto di database SQL per il quale questo cmdlet esegue l'operazione.

Tipo:Database
Posizione:2
Valore predefinito:None
Necessario:True
Accettare l'input della pipeline:True
Accettare caratteri jolly: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 da usare per crittografare la nuova chiave di crittografia della colonna viene archiviata in un insieme di credenziali delle chiavi in Azure Key Vault.

Tipo:String
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly: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 da usare per crittografare la nuova chiave di crittografia della colonna viene archiviata in un modulo di protezione hardware gestito in Azure Key Vault.

Tipo:String
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Name

Specifica il nome dell'oggetto chiave di crittografia della colonna da creare.

Tipo:String
Posizione:1
Valore predefinito:None
Necessario:True
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Path

Specifica il percorso del database SQL per il quale questo cmdlet esegue l'operazione. Se non si specifica un valore per questo parametro, il cmdlet usa la posizione di lavoro corrente.

Tipo:String
Posizione:2
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-ProgressAction

Determina in che modo PowerShell risponde agli aggiornamenti dello stato generati da uno script, un cmdlet o un provider, ad esempio le barre di stato generate dal cmdlet Write-Progress. Il cmdlet Write-Progress crea barre di stato che mostrano lo stato di un comando.

Tipo:ActionPreference
Alias:proga
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Script

Indica che questo cmdlet esegue uno script Transact-SQL che esegue l'operazione.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-TrustServerCertificate

Indica se il canale verrà crittografato durante il bypass della catena di certificati per convalidare l'attendibilità.

Nella versione 22 del modulo, il valore predefinito è $true (per compatibilità con v21). Nella versione 23+ del modulo, il valore predefinito sarà "$false", che potrebbe creare una modifica di rilievo per gli script esistenti.

Questo parametro è nuovo nella versione 22 del modulo.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

Input

Microsoft.SqlServer.Management.Smo.Database

Output

SqlColumnEncryptionKey