Creare e archiviare chiavi master della colonna (Always Encrypted)Create and Store Column Master Keys (Always Encrypted)

QUESTO ARGOMENTO SI APPLICA A: sìSQL Server (a partire dalla versione 2016)sìDatabase SQL di AzurenoAzure SQL Data Warehouse noParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Lechiavi master della colonna proteggono le chiavi usate in Always Encrypted per crittografare le chiavi di crittografia della colonna.Column Master Keys are key-protecting keys used in Always Encrypted to encrypt column encryption keys. 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.Column master keys must be stored in a trusted key store, and the keys need to be accessible to applications that need to encrypt or decrypt data, and tools for configuring Always Encrypted and managing Always Encrypted keys.

Questo articolo fornisce informazioni dettagliate per la selezione di un archivio chiavi e la creazione di chiavi master della colonna per Always Encrypted.This article provides details for selecting a key store and creating column master keys for Always Encrypted. Per una panoramica dettagliata, vedere Overview of Key Management for Always Encrypted (Panoramica della gestione delle chiavi per Always Encrypted).For a detailed overview, see Overview of Key Management for Always Encrypted.

Scelta di un archivio chiavi per la chiave master della colonnaSelecting a Key Store for your Column Master Key

Always Encrypted supporta più archivi chiavi per l'archiviazione di chiavi master della colonna Always Encrypted.Always Encrypted supports multiple key stores for storing Always Encrypted column master keys. Gli archivi chiavi supportati variano a seconda dei driver e della versione in uso.Supported key stores vary depending on which driver and version you are using.

Esistono due categorie generali di archivi da considerare: gli archivi chiavi localie gli archivi chiavi centralizzati.There are two high-level categories of key stores to consider - Local Key Stores, and Centralized Key Stores.

Archivio chiavi centralizzato o locale?Local or Centralized Key Store?

  • Gliarchivi chiavi locali possono essere usati solo dalle applicazioni nei computer che contengono l'archivio chiavi locale.Local Key Stores - can only be used by applications on computers that contain the local key store. In altre parole, è necessario replicare l'archivio chiavi e la chiave per ogni computer che esegue l'applicazione.In other words, you need to replicate the key store and key to each computer running your application. Un esempio di archivio chiavi locale è l'archivio certificati Windows.An example of a local key store is Windows Certificate Store. 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.When using a local key store, you need to make sure that the key store exists on each machine hosting your application, and that the computer contains the column master keys your application needs to access data protected using 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.When you provision a column master key for the first time, or when you change (rotate) the key, you need to make sure the key gets deployed to all machines hosting your application(s).

  • Gliarchivi chiavi centralizzati vengono usati dalle applicazioni in più computer.Centralized Key Stores - serve applications on multiple computers. Un esempio di archivio chiavi centralizzato è un insieme di credenziali delle chiavi di Azure.An example of a centralized key store is 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.A centralized key store usually makes key management easier because you don't need to maintain multiple copies of your column master keys on multiple machines. È necessario verificare che le applicazioni siano configurate per la connessione all'archivio chiavi centralizzato.You need to ensure that your applications are configured to connect to the centralized key store.

Quali sono gli archivi chiavi supportati nei driver dei client abilitati per Always Encrypted?Which Key Stores are Supported in Always Encrypted Enabled Client Drivers?

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.Always Encrypted enabled client drivers are SQL Server client drivers that have built-in support for incorporating Always Encrypted into your client applications. I driver abilitati per Always Encrypted includono alcuni provider predefiniti per gli archivi chiavi più diffusi.Always Encrypted enabled drivers include a few built-in providers for popular key stores. 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.Note that some drivers also let you implement and register a custom column master key store provider, so that you can use any key store, even if there is no built-in provider for it. 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.When deciding between a built-in provider and a custom provider consider that using a built-in provider typically means fewer changes to your applications (in some cases, only changing a database connection string is required).

I provider predefiniti disponibili dipendono dal driver, dalla versione del driver e dal sistema operativo selezionati.The available built-in providers depend on which driver, driver version, and operating system is selected. 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.Please consult Always Encrypted documentation for your specific driver to determine which key stores are supported out-of-the-box and if your driver supports custom key store providers.

Strumenti supportatiSupported Tools

È possibile usare SQL Server Management Studio e il modulo SqlServer PowerShell per configurare Always Encrypted e gestire le chiavi di Always Encrypted.You can use SQL Server Management Studio and the SqlServer PowerShell module to configure Always Encrypted and manage Always Encrypted keys. Per un elenco degli archivi chiavi supportati da questo strumento, vedere:For a list of which key stores these tool support, see:

Creazione di chiavi master della colonna nell'archivio certificati WindowsCreating Column Master Keys in Windows Certificate Store

Una chiave master della colonna può essere un certificato archiviato nell'archivio certificati Windows.A column master key can be a certificate stored in Windows Certificate Store. Un driver abilitato per Always Encrypted non verifica la data di scadenza o una catena di autorità di certificazione.Note that an Always Encrypted-enabled driver does not verify an expiration date or a certificate authority chain. Un certificato viene usato semplicemente come una coppia di chiavi composta da una chiave pubblica e da una privata.A certificate is simply used as a key pair consisting of a public and private key.

Per essere una chiave master della colonna valida, un certificato deve:To be a valid column master key, a certificate must:

  • essere un certificato X.509.be an X.509 certificate.
  • essere archiviato in uno dei percorsi dell'archivio certificati: computer locale o utente corrente.be stored in one of the two certificate store locations: local machine or current user. Per creare un certificato nel percorso dell'archivio certificati del computer locale, è necessario essere un amministratore nel computer di destinazione.(To create a certificate in the local machine certificate store location, you must be an administrator on the target machine.)
  • contenere una chiave privata. La lunghezza consigliata delle chiavi nel certificato è di 2048 bit o superiore.contain a private key (the recommended length of the keys in the certificate is 2048 bits or greater).
  • essere creato per lo scambio di chiavi.be created for key exchange.

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.There are multiple ways to create a certificate that is a valid column master key but the simplest option is to create a self-signed certificate.

Creare un certificato autofirmato usando PowerShellCreate a self-signed certificate using PowerShell

Usare il cmdlet New-SelfSignedCertificate per creare un certificato autofirmato.Use the New-SelfSignedCertificate cmdlet to create a self-signed certificate. L'esempio seguente mostra come generare un certificato che può essere usato come chiave master della colonna per Always Encrypted.The following example shows how to generate a certificate that can be used as a column master key for 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)Create a self-signed certificate using SQL Server Management Studio (SSMS)

Per informazioni dettagliate, vedere Configure Always Encrypted using SQL Server Management Studio (Configurare Always Encrypted usando SQL Server Management Studio).For details, see Configure Always Encrypted using 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).For a step-by-step tutorial that uses SSMS and stores Always Encrypted keys in the Windows Certificate Store, see Always Encrypted Wizard tutorial (Windows Certificate Store).

Rendere disponibili i certificati a utenti e applicazioniMaking Certificates Available to Applications and Users

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.If your column master key is a certificate stored in the local machine certificate store location, you need to export the certificate with the private key and import it to all machines that host applications that are expected to encrypt or decrypt data stored in encrypted columns, or tools for configuring Always Encrypted and for managing the Always Encrypted keys. 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.Also, each user must be granted a read permission for the certificate stored in the local machine certificate store location to be able to use the certificate as a column master key.

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.If your column master key is a certificate stored in the current user certificate store location, you need to export the certificate with the private key and import it to the current user certificate store location of all user accounts running applications that are expected to encrypt or decrypt data stored in encrypted columns, or tools for configuring Always Encrypted and managing Always Encrypted keys (on all machines containing those applications/tools). 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.No permission configuration is required - after logging on to a machine, a user can access all certificates in their current user certificate store location.

Utilizzo di PowerShellUsing PowerShell

Usare i cmdlet Import-PfxCertificate ed Export-PfxCertificate per importare ed esportare un certificato.Use the Import-PfxCertificate and Export-PfxCertificate cmdlets to import and export a certificate.

Uso di Microsoft Management ConsoleUsing 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:To grant a user the Read permission for a certificate stored in the local machine certificate store location, follow these steps:

  1. Aprire un prompt dei comandi e digitare mmc.Open a command prompt and type mmc.
  2. Nella console MMC scegliere Aggiungi/Rimuovi snap-in dal menu File.In the MMC console, on the File menu, click Add/Remove Snap-in.
  3. Nella finestra di dialogo Aggiungi/Rimuovi snap-in fare clic su Aggiungi.In the Add/Remove Snap-in dialog box, click Add.
  4. Nella finestra di dialogo Aggiungi snap-in autonomo fare clic su Certificatie quindi su Aggiungi.In the Add Standalone Snap-in dialog box, click Certificates, click Add.
  5. Nella finestra di dialogo Snap-in certificati fare clic su Account del computere quindi su Fine.In the Certificates snap-in dialog box, click Computer account, and then click Finish.
  6. Nella finestra di dialogo Aggiungi snap-in autonomo fare clic su Chiudi.In the Add Standalone Snap-in dialog box, click Close.
  7. Nella finestra di dialogo Aggiungi/Rimuovi snap-in fare clic su OK.In the Add/Remove Snap-in dialog box, click OK.
  8. In 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.From the Certificates snap-in, locate the certificate in the Certificates > Personal folder, right-click the Certificate, point to All Tasks, and then click Manage Private Keys.
  9. Nella finestra di dialogo Sicurezza aggiungere le autorizzazioni di lettura per un account utente, se necessario.In the Security dialog box, add read permission for a user account if needed.

Creazione di chiavi master della colonna nell'insieme di credenziali delle chiavi di AzureCreating Column Master Keys in Azure Key Vault

L'insieme di credenziali delle chiavi di Azure contribuisce a proteggere i segreti e le chiavi di crittografia e rappresenta una scelta valida per l'archiviazione delle chiavi master della colonna per Always Encrypted, soprattutto se le applicazioni sono ospitate in Azure.Azure Key Vault helps safeguard cryptographic keys and secrets, and is a convenient option for storing column master keys for Always Encrypted, especially if your applications are hosted 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.To create a key in Azure Key Vault, you need an Azure subscription and an Azure Key Vault.

Utilizzo di PowerShellUsing PowerShell

L'esempio seguente crea un nuovo insieme di credenziali delle chiavi di Azure e una chiave, quindi concede le autorizzazioni all'utente desiderato.The following example creates a new Azure Key Vault and key, and then grants permissions to the desired user.

# Create a column master key in Azure Key Vault.
Login-AzureRmAccount
$SubscriptionId = "<Azure subscription ID>"
$resourceGroup = "<resource group name>"
$azureLocation = "<key vault location>"
$akvName = "<key vault name>"
$akvKeyName = "<column master key name>"
$azureCtx = Set-AzureRMContext -SubscriptionId $SubscriptionId # Sets the context for the below cmdlets to the specified subscription.
New-AzureRmResourceGroup –Name $resourceGroup –Location $azureLocation # Creates a new resource group - skip, if you desire group already exists.
New-AzureRmKeyVault -VaultName $akvName -ResourceGroupName $resourceGroup -Location $azureLocation -SKU premium # Creates a new key vault - skip if your vault already exists.
Set-AzureRmKeyVaultAccessPolicy -VaultName $akvName -ResourceGroupName $resourceGroup -PermissionsToKeys get, create, delete, list, update, import, backup, restore, wrapKey, unwrapKey, sign, verify -UserPrincipalName $azureCtx.Account
$akvKey = Add-AzureKeyVaultKey -VaultName $akvName -Name $akvKeyName -Destination HSM

SQL Server Management Studio (SSMS)SQL Server Management Studio (SSMS)

Per un'esercitazione dettagliata che usa SSMS e archivia le chiavi di Always Encrypted in un insieme di credenziali delle chiavi di Azure, vedere l' esercitazione guidata su Always Encrypted (insieme di credenziali delle chiavi di Azure).For a step-by-step tutorial that uses SSMS and stores Always Encrypted keys in an Azure Key Vault, see Always Encrypted Wizard tutorial (Azure Key Vault).

Rendere disponibili le chiavi dell'insieme di credenziali delle chiavi di Azure ad applicazioni e utentiMaking Azure Key Vault Keys Available to Applications and Users

Quando si usa una chiave dell'insieme di credenziali delle chiavi di Azure come chiave master della colonna, l'applicazione deve eseguire l'autenticazione in Azure e l'identità dell'applicazione deve avere le autorizzazioni seguenti per l'insieme di credenziali delle chiavi: get, unwrapKeye verify.When using an Azure Key Vault key as a column master key, your application needs to authenticate to Azure and your application’s identity needs to have the following permissions on the key vault: get, unwrapKey, and verify.

Per eseguire il provisioning delle chiavi di crittografia della colonna protette con una chiave master della colonna archiviata nell'insieme di credenziali delle chiavi di Azure, sono necessarie le autorizzazioni get, unwrapKey, wrapKey, signe verify .To provision column encryption keys that are protected with a column master key stored in Azure Key Vault, you need the get, unwrapKey, wrapKey, sign, and verify permissions. Inoltre, per creare una nuova chiave in un insieme di credenziali delle chiavi di Azure, è necessaria l'autorizzazione create , mentre per elencare il contenuto dell'insieme di credenziali delle chiavi è necessaria l'autorizzazione list .Additionally, to create a new key in an Azure Key Vault you need the create permission; to list the key vault contents, you need the list permission.

Utilizzo di PowerShellUsing PowerShell

Per consentire a utenti e applicazioni l'accesso alle chiavi effettive nell'insieme di credenziali delle chiavi di Azure è necessario impostare i criteri di accesso all'insieme di credenziali (Set-AzureRmKeyVaultAccessPolicy):To enable users and applications to access the actual keys in the Azure Key Vault you must set the vault access policy (Set-AzureRmKeyVaultAccessPolicy):

$vaultName = "<vault name>"
$resourceGroupName = "<resource group name>"
$userPrincipalName = "<user to grant access to>"
$clientId = "<client Id>"

# grant users permissions to the keys:
Set-AzureRmKeyVaultAccessPolicy -VaultName $vaultName -ResourceGroupName $resourceGroupName -PermissionsToKeys create,get,wrapKey,unwrapKey,sign,verify,list -UserPrincipalName $userPrincipalName
# grant applications permissions to the keys:
Set-AzureRmKeyVaultAccessPolicy  -VaultName $vaultName  -ResourceGroupName $resourceGroupName -ServicePrincipalName $clientId -PermissionsToKeys get,wrapKey,unwrapKey,sign,verify,list

Creazione di chiavi master della colonna nei moduli di protezione hardware con CNGCreating Column Master Keys in Hardware Security Modules using CNG

Una chiave master della colonna per Always Encrypted può essere archiviata in un archivio chiavi che implementa l'API Cryptography Next Generation (CNG).A column master key for Always Encrypted can be stored in a key store implementing the Cryptography Next Generation (CNG) API. In genere, questo tipo di archivio è un modulo di protezione hardware (HSM).Typically, this type of store is a hardware security module (HSM). Un modulo di protezione hardware (HSM) è un dispositivo fisico che protegge e gestisce le chiavi digitali e fornisce l'elaborazione della crittografia.An HSM is a physical device that safeguards and manages digital keys and provides crypto-processing. 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.HSMs traditionally come in the form of a plug-in card or an external device that attaches directly to a computer (local HSMs) or a network server.

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.To make an HSM available to applications on a given machine, a Key Storage Provider (KSP), which implements CNG, must be installed and configured on the machine. 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.An Always Encrypted client driver (a column master key store provider inside the driver), uses the KSP to encrypt and decrypt column encryption keys, protected with column master key stored in the key store.

Windows include il provider di archiviazione chiavi del software Microsoft, un provider di archiviazione chiavi basato su software che è possibile usare per i test.Windows includes Microsoft Software Key Storage Provider – a software-based KSP, which you can use for testing purposes. Vedere CNG Key Storage Providers (Provider di archiviazione chiavi CNG).See CNG Key Storage Providers.

Creazione di chiavi master della colonna in un archivio chiavi con CNG/KSPCreating Column Master Keys in a Key Store using CNG/KSP

Una chiave master della colonna deve essere una chiave asimmetrica, ovvero una coppia di chiavi pubblica/privata, che usa l'algoritmo RSA.A column master key should be an asymmetric key (a public/private key pair), using the RSA algorithm. La lunghezza della chiave consigliata è di almeno 2048.The recommended key length is 2048 or greater.

Utilizzo degli strumenti specifici per il modulo di protezione hardwareUsing HSM-specific Tools

Vedere la documentazione per il modulo di protezione hardware.Consult the documentation for your HSM.

Utilizzo di PowerShellUsing PowerShell

È possibile usare le API .NET per creare una chiave in un archivio chiavi usando CNG in PowerShell.You can use .NET APIs to create a key in a key store using 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 StudioUsing SQL Server Management Studio

Vedere Provisioning Column Master using SQL Server Management Studio (SSMS) (Provisioning delle chiavi master della colonna con SQL Server Management Studio).See Provisioning Column Master using SQL Server Management Studio (SSMS).

Rendere disponibili le chiavi CNG a utenti e applicazioniMaking CNG Keys Available to Applications and Users

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.Consult your HSM and KSP documentation for how to configure the KSP on a machine and how to grant applications and users access to the HSM.

Creazione di chiavi master della colonna nei moduli di protezione hardware con CAPICreating Column Master Keys in Hardware Security Modules using CAPI

Una chiave master della colonna per Always Encrypted può essere archiviata in un archivio chiavi che implementa l'API Cryptography (CAPI).A column master key for Always Encrypted can be stored in a key store that implements the Cryptography API (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.Typically, such a store is a hardware security module (HSM) - a physical device that safeguards and manages digital keys and provides crypto-processing. 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.HSMs traditionally come in the form of a plug-in card or an external device that attaches directly to a computer (local HSMs) or a network server.

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.To make an HSM available to applications on a given machine, a Cryptography Service Provider (CSP), which implements CAPI, must be installed and configured on the machine. 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.An Always Encrypted client driver (a column master key store provider inside the driver), uses the CSP to encrypt and decrypt column encryption keys, protected with column master key stored in the key store. Nota: CAPI è un'API legacy deprecata.Note: CAPI is a legacy, deprecated API. Se è disponibile un provider di archiviazione chiavi per il modulo di protezione hardware, è necessario usare quello invece di CSP/CAPI.If a KSP is available for your HSM, you should use it, instead of a CSP/CAPI.

Un provider del servizio di crittografia deve supportare l'algoritmo RSA da usare con Always Encrypted.A CSP must support the RSA algorithm to be used with 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.Windows includes the following software-based (not backed by an HSM) CSPs that support RSA and can use for testing purposes: Microsoft Enhanced RSA and AES Cryptographic Provider.

Creazione di chiavi master della colonna in un archivio chiavi con CAPI/CSPCreating Column Master Keys in a Key Store using CAPI/CSP

Una chiave master della colonna deve essere una chiave asimmetrica, ovvero una coppia di chiavi pubblica/privata, che usa l'algoritmo RSA.A column master key should be an asymmetric key (a public/private key pair), using the RSA algorithm. La lunghezza della chiave consigliata è di almeno 2048.The recommended key length is 2048 or greater.

Utilizzo degli strumenti specifici per il modulo di protezione hardwareUsing HSM-specific Tools

Vedere la documentazione per il modulo di protezione hardware.Consult the documentation for your HSM.

Utilizzo di SQL Server Management Studio (SSMS)Using SQL Server Management Studio (SSMS)

Vedere la sezione sul provisioning delle chiavi master della colonna in Configuring Always Encrypted using SQL Server Management Studio (Configurazione di Always Encrypted con SQL Server Management Studio).See the Provisioning Column Master Keys section in Configuring Always Encrypted using SQL Server Management Studio.

Rendere disponibili le chiavi CNG a utenti e applicazioniMaking CNG Keys Available to Applications and Users

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.Consult the documentation for your HSM and CSP, for how to configure the CSP on a machine and how to grant applications and users access to the HSM.

Passaggi successiviNext Steps

Risorse aggiuntiveAdditional Resources