Eventi
Ottieni gratuitamente la certificazione in Microsoft Fabric.
19 nov, 23 - 10 dic, 23
Per un periodo di tempo limitato, il team della community di Microsoft Fabric offre buoni per esami DP-600 gratuiti.
Prepara oraQuesto browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure
Lechiavi master della colonna proteggono le chiavi usate in Always Encrypted per crittografare le chiavi di crittografia della colonna. 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).
Always Encrypted supporta più archivi chiavi per l'archiviazione di chiavi master della colonna 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.
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 è un insieme di credenziali delle chiavi di Azure. 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.
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 di archivio della chiave master della colonna personalizzato, in modo che sia possibile usare qualsiasi archivio chiavi, anche se non è disponibile un provider predefinito specifico. 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.
SQL Server Management Studio, Azure Data Studio e il modulo SqlServer di PowerShell supportano le chiavi master della colonna archiviate in:
Insieme di credenziali delle chiavi e HSM gestiti in Azure Key Vault.
Nota
Gli HSM gestiti richiedono SSMS 18.9 o versioni successive e il modulo SqlServer di PowerShell versione 21.1.18235 o successive. 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).
Una chiave master della colonna può essere un certificato archiviato nell'archivio certificati Windows. 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:
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.
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
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).
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 nel percorso dell'archivio certificati del computer locale per poter usare il certificato come una chiave master della 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.
Usare i cmdlet Import-PfxCertificate ed Export-PfxCertificate per importare ed esportare un certificato.
Per concedere all'utente l'autorizzazione di lettura per un certificato archiviato nel percorso dell'archivio certificati del computer locale, seguire questi passaggi:
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 insieme di credenziali delle 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.
Per informazioni su come creare una chiave in un insieme di credenziali delle chiavi, vedere:
Per informazioni su come creare una chiave in un HSM gestito, vedere:
Per informazioni dettagliate su come creare una chiave master della colonna in un insieme di credenziali delle chiavi 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 insieme di credenziali delle chiavi, vedere l'esercitazione sulla procedura guidata di Always Encrypted (Azure Key Vault).
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.
Se si archiviano le chiavi master della colonna in un insieme di credenziali delle chiavi e si usano le autorizzazioni del ruolo per l'autorizzazione:
L'identità dell'applicazione deve essere un membro dei ruoli che consentono le azioni del piano dati seguenti nell'insieme di credenziali delle chiavi:
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 o un ruolo che consentano le azioni del piano dati seguenti nell'insieme di credenziali delle chiavi:
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 insieme di credenziali delle chiavi e si usano i criteri di accesso per l'autorizzazione:
Per informazioni generali su come configurare l'autenticazione e l'autorizzazione per gli insiemi di credenziali delle chiavi, vedere Autorizzare un'entità di sicurezza ad accedere a Key Vault.
L'identità di applicazione deve essere membro di ruoli che consentono le azioni del piano dati seguenti nell'HSM gestito:
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 o un ruolo che consentano le azioni del piano dati seguenti sulle chiavi:
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:
Una chiave master della colonna per Always Encrypted può essere archiviata in un archivio chiavi che implementa l'API Cryptography Next Generation (CNG). In genere, questo tipo di archivio è un modulo di protezione 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 del client Always Encrypted, ovvero un provider di archivio della chiave master della colonna interno al driver, usa il provider di archiviazione chiavi per crittografare e decrittografare le chiavi di crittografia della colonna, protette con la chiave master della colonna archiviata nell'archivio 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).
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.
Vedere la documentazione per il modulo di protezione hardware.
È 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)
Vedere Effettuare il provisioning di chiavi Always Encrypted con SQL Server Management Studio.
Vedere la documentazione per il modulo di protezione hardware e il provider di archiviazione chiavi per informazioni su come configurare il provider di archiviazione chiavi in un computer e su come concedere l'accesso al modulo di protezione hardware a utenti e applicazioni.
Una chiave master della colonna per Always Encrypted può essere archiviata in un archivio chiavi che implementa l'API Cryptography (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 del client Always Encrypted, ovvero un provider di archivio della chiave master della colonna interno al driver, usa il provider del servizio di crittografia per crittografare e decrittografare le chiavi di crittografia della colonna, protette con la chiave master della colonna archiviata nell'archivio chiavi.
Nota
CAPI è un'API legacy deprecata. Se è disponibile un provider di archiviazione chiavi per il modulo di protezione hardware, è necessario usare quello 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.
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.
Vedere la documentazione per il modulo di protezione hardware.
Vedere Effettuare il provisioning di chiavi Always Encrypted con SQL Server Management Studio.
Vedere la documentazione per il modulo di protezione hardware e il provider del servizio di crittografia per informazioni su come configurare il provider del servizio di crittografia in un computer e su come concedere l'accesso al modulo di protezione hardware a utenti e applicazioni.
Eventi
Ottieni gratuitamente la certificazione in Microsoft Fabric.
19 nov, 23 - 10 dic, 23
Per un periodo di tempo limitato, il team della community di Microsoft Fabric offre buoni per esami DP-600 gratuiti.
Prepara ora