Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Database SQL di Azure
Istanza gestita di SQL di Azure
Le chiavi master delle colonne sono chiavi che proteggono le chiavi usate in Always Encrypted per crittografare le chiavi di crittografia delle colonne. Le chiavi master della colonna devono essere archiviate in un archivio attendibile e devono essere accessibili alle applicazioni che le richiedono per crittografare o decrittografare i dati e agli strumenti per la configurazione di Always Encrypted e la gestione delle chiavi di Always Encrypted.
Questo articolo fornisce informazioni dettagliate per la selezione di un archivio chiavi e la creazione di chiavi master della colonna per Always Encrypted. Per una panoramica dettagliata, vedere Overview of Key Management for Always Encrypted (Panoramica della gestione delle chiavi per Always Encrypted).
Selezione di un archivio di chiavi per la chiave master della colonna
Always Encrypted supporta più archivi di chiavi per l'archiviazione delle chiavi master delle colonne Always Encrypted. Gli archivi chiavi supportati variano a seconda dei driver e della versione in uso.
Esistono due categorie generali di archivi da considerare: gli archivi chiavi localie gli archivi chiavi centralizzati.
Archivio chiavi centralizzato o locale?
Gliarchivi chiavi locali possono essere usati solo dalle applicazioni nei computer che contengono l'archivio chiavi locale. In altre parole, è necessario replicare l'archivio chiavi e la chiave per ogni computer che esegue l'applicazione. Un esempio di archivio chiavi locale è l'archivio certificati Windows. Quando si usa un archivio chiavi locale, è necessario verificare che l'archivio chiavi esista in ogni computer che ospita l'applicazione e che il computer contenga le chiavi master della colonna richieste dall'applicazione per accedere ai dati protetti con Always Encrypted. Quando si esegue il provisioning di una chiave master della colonna per la prima volta o quando si modifica (ruota) la chiave, è necessario verificare che la chiave venga distribuita a tutti i computer che ospitano una o più applicazioni.
Gliarchivi chiavi centralizzati vengono usati dalle applicazioni in più computer. Un esempio di archivio chiavi centralizzato è Azure Key Vault. Un archivio chiavi centralizzato in genere facilita la gestione delle chiavi perché non è necessario avere più copie delle chiavi master della colonna in più computer. Verificare che le applicazioni siano configurate per la connessione all'archivio chiavi centralizzato.
Quali sono gli archivi di chiavi supportati nei driver client abilitati per Always Encrypted?
I driver dei client abilitati per Always Encrypted sono driver dei client di SQL Server con un supporto predefinito che consente di incorporare Always Encrypted nelle applicazioni client. I driver abilitati per Always Encrypted includono alcuni provider predefiniti per gli archivi chiavi più diffusi. Alcuni driver consentono anche di implementare e registrare un provider personalizzato per l'archivio di chiavi master di colonna, in modo che sia possibile usare qualsiasi archivio di chiavi, anche se non è disponibile un provider integrato. Quando si sceglie tra un provider predefinito e un provider personalizzato considerare che l'utilizzo un provider predefinito in genere implica meno modifiche alle applicazioni. In alcuni casi, è richiesta solo la modifica a una stringa di connessione del database.
I provider predefiniti disponibili dipendono dal driver, dalla versione del driver e dal sistema operativo selezionati. Consultare la documentazione di Always Encrypted per il driver specifico per determinare quali archivi chiavi sono supportati in modo predefinito e se il driver supporta provider di archivi chiavi personalizzati - Sviluppare applicazioni usando Always Encrypted.
Quali archivi chiavi sono supportati negli strumenti SQL?
SQL Server Management Studio, Azure Data Studio e il modulo SqlServer di PowerShell supportano le chiavi master della colonna archiviate in:
Vault delle chiavi e HSM gestiti in Azure Key Vault.
Nota
I HSM gestiti richiedono SSMS 18.9 o versione più recente e il modulo SqlServer PowerShell versione 21.1.18235 o più recente. Attualmente Azure Data Studio non supporta gli HSM gestiti.
Archivio certificati Windows.
Archivi di chiavi, ad esempio il modulo di protezione hardware, che forniscono API Cryptography Next Generation (CNG) o API di crittografia (CAPI).
Creazione delle chiavi master delle colonne nell'Archivio dei certificati di Windows
Una chiave master della colonna può essere un certificato archiviato nel Windows Certificate Store. Un driver abilitato per Always Encrypted non verifica la data di scadenza o una catena di autorità di certificazione. Un certificato viene usato semplicemente come una coppia di chiavi composta da una chiave pubblica e da una privata.
Per essere una chiave master della colonna valida, un certificato deve:
- essere un certificato X.509.
- essere memorizzato in una delle due località dell'archivio certificati: computer locale o utente corrente. Per creare un certificato nella posizione dell'archivio certificati del computer locale, è necessario essere un amministratore nel computer di destinazione.
- contenere una chiave privata. La lunghezza consigliata delle chiavi nel certificato è di 2048 bit o superiore.
- venire creato per lo scambio di chiavi.
Esistono diversi modi per creare un certificato che corrisponda a una chiave master della colonna valida, ma l'opzione più semplice consiste nel creare un certificato autofirmato.
Creare un certificato autofirmato con PowerShell
Usare il cmdlet New-SelfSignedCertificate per creare un certificato autofirmato. L'esempio seguente mostra come generare un certificato che può essere usato come chiave master della colonna per Always Encrypted.
# New-SelfSignedCertificate is a Windows PowerShell cmdlet that creates a self-signed certificate. The below examples show how to generate a certificate that can be used as a column master key for Always Encrypted.
$cert = New-SelfSignedCertificate -Subject "AlwaysEncryptedCert" -CertStoreLocation Cert:CurrentUser\My -KeyExportPolicy Exportable -Type DocumentEncryptionCert -KeyUsage KeyEncipherment -KeySpec KeyExchange -KeyLength 2048
# To create a certificate in the local machine certificate store location you need to run the cmdlet as an administrator.
$cert = New-SelfSignedCertificate -Subject "AlwaysEncryptedCert" -CertStoreLocation Cert:LocalMachine\My -KeyExportPolicy Exportable -Type DocumentEncryptionCert -KeyUsage KeyEncipherment -KeySpec KeyExchange -KeyLength 2048
Creare un certificato autofirmato usando SQL Server Management Studio (SSMS)
Per informazioni dettagliate, vedere Effettuare il provisioning di chiavi Always Encrypted con SQL Server Management Studio. Per un'esercitazione dettagliata che usa SQL Server Management Studio e archivia le chiavi di Always Encrypted nell'archivio certificati Windows, vedere l' esercitazione guidata su Always Encrypted (archivio certificati Windows).
Rendere disponibili i certificati a utenti e applicazioni
Se la chiave master della colonna è un certificato archiviato nel percorso dell'archivio certificati del computer locale , è necessario esportare il certificato con la chiave privata e importarlo in tutti i computer che ospitano le applicazioni che si prevede eseguiranno la crittografia o la decrittografia dei dati archiviati nelle colonne crittografate oppure negli strumenti per la configurazione di Always Encrypted e per la gestione delle chiavi di Always Encrypted. Inoltre, a ogni utente deve essere concessa un'autorizzazione di lettura per il certificato archiviato nell'archivio certificati del computer locale per poter utilizzare il certificato come chiave master di colonna.
Se la chiave master della colonna è un certificato archiviato nel percorso dell'archivio certificati dell' utente corrente , è necessario esportare il certificato con la chiave privata e importarlo nel percorso dell'archivio certificati dell'utente corrente di tutti gli account che eseguono le applicazioni che si prevede eseguiranno la crittografia o la decrittografia dei dati archiviati nelle colonne crittografate oppure negli strumenti per la configurazione di Always Encrypted e per la gestione delle chiavi di Always Encrypted, in tutti i computer che contengono tali applicazioni/strumenti. Non è necessaria la configurazione dell'autorizzazione: dopo l'accesso a un computer, un utente può accedere a tutti i certificati nel percorso dell'archivio certificati dell'utente corrente.
Utilizzando PowerShell
Usare i cmdlet Import-PfxCertificate ed Export-PfxCertificate per importare ed esportare un certificato.
Uso di Microsoft Management Console
Per concedere all'utente l'autorizzazione di lettura per un certificato archiviato nel percorso dell'archivio certificati del computer locale, seguire questi passaggi:
- Aprire un prompt dei comandi e digitare mmc.
- Nella console di MMC, nel File menu, fare clic su Aggiungi/Rimuovi Snap-in.
- Nella finestra di dialogo Aggiungi/Rimuovi snap-in fare clic su Aggiungi.
- Nella finestra di dialogo Aggiungi snap-in autonomo fare clic su Certificatie quindi su Aggiungi.
- Nella finestra di dialogo Snap-in certificati fare clic su Account del computere quindi su Fine.
- Nella finestra di dialogo Aggiungi snap-in autonomo fare clic su Chiudi.
- Nella finestra di dialogo Aggiungi/Rimuovi snap-in fare clic su OK.
- Nello snap-in Certificati, trovare il certificato nella cartella Certificati > Personale, fare clic con il pulsante destro del mouse sul certificato, scegliere Tutte le attività e quindi fare clic su Gestisci chiavi private.
- Nella finestra di dialogo Sicurezza aggiungere le autorizzazioni di lettura per un account utente, se necessario.
Creare Chiavi Master di Colonna in Azure Key Vault
Azure Key Vault contribuisce a proteggere i segreti e le chiavi crittografiche e rappresenta una scelta valida per l'archiviazione delle chiavi master della colonna per Always Encrypted, soprattutto se le applicazioni sono ospitate in Azure. Per creare una chiave nell' insieme di credenziali delle chiavi di Azure, è necessario una sottoscrizione di Azure e un insieme di credenziali delle chiavi di Azure. Una chiave può essere archiviata in un deposito chiavi o in un HSM gestito. Per essere una chiave master della colonna valida, la chiave gestita in Azure Key Vault deve essere una chiave RSA.
Uso dell'interfaccia della riga di comando di Azure, del portale di Azure o di PowerShell
Per informazioni su come creare una chiave in un repository di chiavi, vedere:
- Guida introduttiva: Impostare e recuperare una chiave da Azure Key Vault tramite l'interfaccia della riga di comando di Azure
- Guida introduttiva: Impostare e riprendere una chiave gestita da Azure Key Vault tramite Azure PowerShell
- Guida introduttiva: Impostare e recuperare una chiave da Azure Key Vault tramite il portale Azure
Per informazioni su come creare una chiave in un HSM gestito, vedere:
SQL Server Management Studio (SSMS)
Per informazioni dettagliate su come creare una chiave master della colonna in un insieme di credenziali o in un HSM gestito in Azure Key Vault usando SSMS, vedere Effettuare il provisioning di chiavi Always Encrypted con SQL Server Management Studio. Per un'esercitazione dettagliata che usa SSMS e archivia le chiavi di Always Encrypted in un Key Vault, vedere esercitazione guidata di Always Encrypted (Azure Key Vault).
Rendere disponibili le chiavi di Azure Key Vault ad applicazioni e utenti
Per accedere a una colonna crittografata, l'applicazione deve essere in grado di accedere ad Azure Key Vault e necessita anche di autorizzazioni specifiche per la chiave master della colonna per decriptare la chiave di crittografia della colonna che protegge la colonna.
Per gestire le chiavi per Always Encrypted, sono necessarie autorizzazioni per elencare e creare chiavi master della colonna in Azure Key Vault e per eseguire operazioni di crittografia usando le chiavi.
Archivi di chiavi
Se archiviate le chiavi master di colonna in un key vault e usate le autorizzazioni del ruolo:
L'identità dell'applicazione deve essere un membro dei ruoli che consentono le seguenti azioni del piano dati nella cassaforte delle chiavi:
- Microsoft.KeyVault/vaults/keys/decrypt/action
- Microsoft.KeyVault/vaults/keys/read
- Microsoft.KeyVault/vaults/keys/verify/action
Il modo più semplice per concedere all'applicazione l'autorizzazione necessaria consiste nell'aggiungere la propria identità al ruolo Utente della crittografia di Key Vault. È possibile creare un ruolo personalizzato anche con le autorizzazioni necessarie.
Un utente che gestisce le chiavi per Always Encrypted deve essere un membro di ruoli che consentano le seguenti azioni relative al piano dati nell'insieme di credenziali delle chiavi.
- Microsoft.KeyVault/vaults/keys/create/action
- Microsoft.KeyVault/vaults/keys/decrypt/action
- Microsoft.KeyVault/vaults/keys/encrypt/action
- Microsoft.KeyVault/vaults/keys/read
- Microsoft.KeyVault/vaults/keys/sign/action
- Microsoft.KeyVault/vaults/keys/verify/action
Il modo più semplice per concedere all'utente l'autorizzazione necessaria consiste nell'aggiungere l'utente al ruolo Utente della crittografia di Key Vault. È possibile creare un ruolo personalizzato anche con le autorizzazioni necessarie.
Se si archiviano le chiavi master della colonna in un Key Vault e si usano criteri di accesso per l'autorizzazione:
- L'identità dell'applicazione richiede le seguenti autorizzazioni per la politica di accesso dell'insieme di credenziali: get, unwrapKey e verify.
- Un utente che gestisce le chiavi per Always Encrypted necessita dei seguenti permessi per i criteri di accesso nell'insieme di credenziali chiave: create, get, list, sign, unwrapKey, wrapKey, verify.
Per informazioni generali su come configurare l'autenticazione e l'autorizzazione per Key Vault, vedere Autorizzare un'entità di sicurezza ad accedere a Key Vault.
HSM gestiti
L'identità della tua applicazione deve essere membro di ruoli che consentono le seguenti azioni sul piano dati nel tuo HSM gestito:
- Microsoft.KeyVault/managedHsm/chiavi/decriptare/action
- Microsoft.KeyVault/managedHsm/keys/read/action
- Microsoft.KeyVault/managedHsm/keys/verify/action
Microsoft consiglia di creare un ruolo personalizzato contenente solo le autorizzazioni precedenti.
Un utente che gestisce le chiavi per Always Encrypted deve essere un membro di un ruolo che consenta le azioni del piano dati seguenti sulla chiave:
- Microsoft.KeyVault/managedHsm/keys/create/action
- Microsoft.KeyVault/managedHsm/chiavi/decriptare/action
- Microsoft.KeyVault/managedHsm/keys/encrypt/action
- Microsoft.KeyVault/managedHsm/keys/read
- Microsoft.KeyVault/managedHsm/keys/sign/action
- Microsoft.KeyVault/managedHsm/keys/verify/action
Il modo più semplice per concedere all'utente le autorizzazioni precedenti consiste nell'aggiungere l'utente al ruolo Utente della crittografia dell'HSM gestito. È possibile creare un ruolo personalizzato anche con le autorizzazioni necessarie.
Per ulteriori informazioni sul controllo di accesso per gli HSM gestiti, vedere:
Creazione di chiavi master di colonna nei moduli di sicurezza hardware utilizzando CNG
Una chiave master della colonna per Always Encrypted può essere archiviata in un key store che implementa la API di Cryptography Next Generation (CNG). In genere, questo tipo di archivio è un modulo di sicurezza hardware (HSM). Un modulo di protezione hardware (HSM) è un dispositivo fisico che protegge e gestisce le chiavi digitali e fornisce l'elaborazione della crittografia. I moduli di protezione hardware vengono generalmente forniti come schede plug-in o dispositivi esterni collegati direttamente a un computer (HSM locale) o a un server di rete.
Per rendere disponibile un modulo di protezione hardware alle applicazioni di un determinato computer, è necessario installare e configurare un provider di archiviazione chiavi (KSP) che implementa CNG nel computer. Un driver client Always Encrypted, che funge da provider di archivio della chiave master della colonna all'interno del driver, utilizza il Provider di Archiviazione delle Chiavi (KSP) per crittografare e decrittografare le chiavi di crittografia della colonna, che sono protette con la chiave master della colonna archiviata nello store delle chiavi.
Windows include il provider di archiviazione chiavi del software Microsoft, un provider di archiviazione chiavi basato su software che è possibile usare per i test. Vedere CNG Key Storage Providers (Provider di archiviazione chiavi CNG).
Creazione di Chiavi Master delle Colonne in un archivio chiavi utilizzando CNG/KSP
Una chiave master della colonna deve essere una chiave asimmetrica, ovvero una coppia di chiavi pubblica/privata, che usa l'algoritmo RSA. La lunghezza della chiave consigliata è di almeno 2048.
Utilizzo di strumenti specifici per moduli HSM
Consultare la documentazione del modulo di protezione hardware.
Utilizzando PowerShell
È possibile usare le API .NET per creare una chiave in un archivio chiavi usando CNG in PowerShell.
$cngProviderName = "Microsoft Software Key Storage Provider" # If you have an HSM, you can use a KSP for your HSM instead of a Microsoft KSP
$cngAlgorithmName = "RSA"
$cngKeySize = 2048 # Recommended key size for Always Encrypted column master keys
$cngKeyName = "AlwaysEncryptedKey" # Name identifying your new key in the KSP
$cngProvider = New-Object System.Security.Cryptography.CngProvider($cngProviderName)
$cngKeyParams = New-Object System.Security.Cryptography.CngKeyCreationParameters
$cngKeyParams.provider = $cngProvider
$cngKeyParams.KeyCreationOptions = [System.Security.Cryptography.CngKeyCreationOptions]::OverwriteExistingKey
$keySizeProperty = New-Object System.Security.Cryptography.CngProperty("Length", [System.BitConverter]::GetBytes($cngKeySize), [System.Security.Cryptography.CngPropertyOptions]::None);
$cngKeyParams.Parameters.Add($keySizeProperty)
$cngAlgorithm = New-Object System.Security.Cryptography.CngAlgorithm($cngAlgorithmName)
$cngKey = [System.Security.Cryptography.CngKey]::Create($cngAlgorithm, $cngKeyName, $cngKeyParams)
Utilizzo di SQL Server Management Studio
Vedere Effettuare il provisioning di chiavi Always Encrypted con SQL Server Management Studio.
Rendere disponibili le chiavi CNG a utenti e applicazioni
Consultare la documentazione dell'HSM (Hardware Security Module) e del KSP (Key Storage Provider) per sapere come configurare il KSP su una macchina e come concedere l'accesso all'HSM ad applicazioni e utenti.
Creazione di chiavi master della colonna nei moduli di protezione hardware con CAPI
Una chiave master della colonna per Always Encrypted può essere archiviata in un archivio chiavi che implementa l'API di crittografia (CAPI). In genere, questo tipo di archivio è un modulo di protezione hardware (HSM), ovvero un dispositivo fisico che protegge e gestisce le chiavi digitali e fornisce l'elaborazione della crittografia. I moduli di protezione hardware vengono generalmente forniti come schede plug-in o dispositivi esterni collegati direttamente a un computer (HSM locale) o a un server di rete.
Per rendere disponibile un modulo di protezione hardware alle applicazioni di un determinato computer, è necessario installare e configurare un provider del servizio di crittografia (CSP) che implementa CAPI nel computer. Un driver client Always Encrypted (un provider di gestione delle chiavi master delle colonne all'interno del driver) utilizza il provider del servizio di crittografia (CSP) per crittografare e decrittografare le chiavi di crittografia delle colonne, protette con la chiave master della colonna memorizzata nell'archivio chiavi.
Nota
CAPI è un'API legacy deprecata. Se è disponibile un KSP per il tuo modulo di sicurezza hardware, dovresti usarlo invece di CSP/CAPI.
Un provider del servizio di crittografia deve supportare l'algoritmo RSA da usare con Always Encrypted.
Windows include i provider del servizio di crittografia seguenti basati su software, ovvero non supportati da un modulo di protezione hardware, che supportano RSA e che possono essere usati per i test: Microsoft Enhanced RSA e AES Cryptographic Provider.
Creazione di chiavi master di colonna in un archivio di chiavi con CAPI/CSP
Una chiave master della colonna deve essere una chiave asimmetrica, ovvero una coppia di chiavi pubblica/privata, che usa l'algoritmo RSA. La lunghezza della chiave consigliata è di almeno 2048.
Utilizzo di strumenti specifici per HSM
Consultare la documentazione del modulo di protezione hardware.
Usando SQL Server Management Studio (SSMS)
Vedere Effettuare il provisioning di chiavi Always Encrypted con SQL Server Management Studio.
Rendere disponibili le chiavi CNG a utenti e applicazioni
Consultare la documentazione per il modulo di protezione hardware (HSM) e il provider del servizio di crittografia (CSP) per informazioni su come configurare il CSP su un computer e su come concedere l'accesso al HSM a utenti e applicazioni.
Passaggi successivi
- Effettuare il provisioning di chiavi Always Encrypted con SQL Server Management Studio
- Effettuare il provisioning di chiavi Always Encrypted con PowerShell