Condividi tramite


Configurare Always Encrypted tramite PowerShell

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di Azure

Il modulo SqlServer di PowerShell include i cmdlet per la configurazione di Always Encrypted in Database SQL di Azure o in SQL Server.

Considerazioni sulla sicurezza quando si usa PowerShell per configurare Always Encrypted

Poiché l'obiettivo principale di Always Encrypted è garantire la sicurezza dei dati sensibili crittografati anche se il sistema di database viene compromesso, l'esecuzione di uno script di PowerShell che elabora chiavi o dati sensibili nel computer SQL Server può ridurre o annullare i vantaggi della funzionalità. For more security-related recommendations, see Security Considerations for Key Management.

È possibile usare PowerShell per gestire chiavi Always Encrypted con e senza separazione dei ruoli offrendo il controllo su coloro che hanno accesso alle chiavi di crittografia effettive nell'archivio chiavi e coloro che hanno accesso al database.

For more recommendations, see Security Considerations for Key Management.

Prerequisiti

Installare il modulo SqlServer di PowerShell versione 22.0.50 o successive in un computer protetto che NON sia il computer che ospita l'istanza di SQL Server. Il modulo può essere installato direttamente da PowerShell Gallery. Per altri dettagli, vedere le istruzioni di download.

Importazione del modulo SqlServer

Per caricare il modulo SqlServer:

  1. Usare il cmdlet Set-ExecutionPolicy per impostare i criteri di esecuzione degli script appropriati.
  2. Usare il cmdlet Import-Module per importare il modulo SqlServer.

Questo esempio carica il modulo SqlServer.

# Import the SQL Server Module.  
Import-Module "SqlServer" -MinimumVersion 22.0.50

Connecting to a database

Alcuni dei cmdlet Always Encrypted possono essere usati con dati o metadati del database e richiedono la connessione al database. Quando si configura Always Encrypted con il modulo SqlServer è consigliabile connettersi al database con i due metodi seguenti:

  1. Connettersi tramite il cmdlet Get-SqlDatabase.
  2. Connettersi tramite il provider SQL Server PowerShell.

Utilizzo di Get-SqlDatabase

Il cmdlet Get-SqlDatabase consente di connettersi a un database in SQL Server o nel database SQL di Azure. Restituisce un oggetto di database, che può essere passato usando il parametro InputObject di un cmdlet che si connette al database.

Utilizzo di SQL Server PowerShell

# Import the SqlServer module
Import-Module "SqlServer" -MinimumVersion 22.0.50

# Connect to your database
# Set the valid server name, database name and authentication keywords in the connection string
$serverName = "<Azure SQL server name>.database.windows.net"
$databaseName = "<database name>"
$connStr = "Server = " + $serverName + "; Database = " + $databaseName + "; Authentication = Active Directory Integrated"
$database = Get-SqlDatabase -ConnectionString $connStr

# List column master keys for the specified database.
Get-SqlColumnMasterKey -InputObject $database

Alternatively, you can use piping:

$database | Get-SqlColumnMasterKey

Utilizzo del provider di SQL Server PowerShell

Il provider SQL Server PowerShell espone la gerarchia degli oggetti SQL Server in percorsi simili ai percorsi del file system. Con SQL Server PowerShell è possibile spostarsi tra i percorsi usando alias di Windows PowerShell simili ai comandi normalmente usati per spostarsi tra i percorsi del file system. Dopo essere passati all'istanza di destinazione e al database, i cmdlet successivi vengono eseguiti nel database come illustrato nell'esempio seguente.

Nota

This method of connecting to a database works only for SQL Server (it isn't supported in Azure SQL Database).

# Import the SqlServer module.
Import-Module "SqlServer" -MinimumVersion 22.0.50
# Navigate to the database in the remote instance.
cd SQLSERVER:\SQL\servercomputer\DEFAULT\Databases\yourdatabase
# List column master keys in the above database.
Get-SqlColumnMasterKey

In alternativa, è possibile specificare un percorso di database usando il parametro generico Path anziché passare al database.

# Import the SqlServer module.
Import-Module "SqlServer" -MinimumVersion 22.0.50
# List column master keys for the specified database.
Get-SqlColumnMasterKey -Path SQLSERVER:\SQL\servercomputer\DEFAULT\Databases\yourdatabase

Always Encrypted Tasks using PowerShell

Always Encrypted Cmdlet Reference

Per Always Encrypted sono disponibili i cmdlet di PowerShell seguenti:

CMDLET Descrizione
Add-SqlAzureAuthenticationContext Esegue l'autenticazione in Azure e acquisisce un token di autenticazione.
Add-SqlColumnEncryptionKeyValue Aggiunge un nuovo valore crittografato per un oggetto chiave di crittografia della colonna esistente nel database.
Complete-SqlColumnMasterKeyRotation Completes the rotation of a column master key
Get-SqlColumnEncryptionKey Restituisce tutti gli oggetti chiave di crittografia della colonna definiti nel database oppure un solo oggetto chiave di crittografia della colonna con il nome specificato.
Get-SqlColumnMasterKey Restituisce tutti gli oggetti chiave master della colonna definiti nel database oppure un solo oggetto chiave master della colonna con il nome specificato.
Invoke-SqlColumnMasterKeyRotation Initiates the rotation of a column master key.
New-SqlAzureKeyVaultColumnMasterKeySettings Crea un oggetto SqlColumnMasterKeySettings che descrive una chiave asimmetrica archiviata in Azure Key Vault.
New-SqlCngColumnMasterKeySettings Crea un oggetto SqlColumnMasterKeySettings che descrive una chiave asimmetrica archiviata in un archivio chiavi che supporta l'API CNG (Cryptography Next Generation).
New-SqlColumnEncryptionKey Crea un oggetto chiave di crittografia della colonna nel database.
New-SqlColumnEncryptionKeyEncryptedValue Produces an encrypted value of a column encryption key.
New-SqlColumnEncryptionSettings Crea un oggetto SqlColumnEncryptionSettings che incapsula le informazioni sulla crittografia di una singola colonna, tra cui la chiave di crittografia della colonna e il tipo di crittografia.
New-SqlColumnMasterKey Creates a column master key object in the database.
New-SqlColumnMasterKeySettings Crea un oggetto SqlColumnMasterKeySettings per una chiave master della colonna con il provider specificato e il percorso della chiave.
New-SqlCspColumnMasterKeySettings Crea un oggetto SqlColumnMasterKeySettings che descrive una chiave asimmetrica archiviata in un archivio chiavi con un CSP (Cryptography Service Provider) che supporta l'API Cryptography (CAPI).
Remove-SqlColumnEncryptionKey Rimuove l'oggetto chiave di crittografia della colonna dal database.
Remove-SqlColumnEncryptionKeyValue Rimuove un valore crittografato da un oggetto chiave di crittografia della colonna esistente nel database.
Remove-SqlColumnMasterKey Rimuove l'oggetto chiave master della colonna dal database.
Set-SqlColumnEncryption Crittografa, decrittografa o ricrittografa le colonne specificate nel database.