Eventi
31 mar, 23 - 2 apr, 23
Il più grande evento di apprendimento di SQL, Infrastruttura e Power BI. 31 marzo - 2 aprile. Usare il codice FABINSIDER per salvare $400.
Registrati oggiQuesto browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare le funzionalità più recenti, gli aggiornamenti della sicurezza e il supporto tecnico.
Si applica a: SQL Server 2019 (15.x) e versioni successive - Solo Windows
Database SQL di Azure
Always Encrypted con enclave sicure consente ad alcune istruzioni Transact-SQL (T-SQL) di eseguire calcoli riservati sulle colonne di database crittografate in un'enclave sicura sul lato server.
I tipi di istruzioni T-SQL seguenti usano le enclave sicure.
I tipi seguenti di istruzioni DDL (Data Definition Language) richiedono enclave sicure.
Le istruzioni DML (Data Manipulation Language) seguenti o le query su colonne con enclave abilitate che usano la crittografia randomizzata richiedono enclave sicure:
Nota
Le operazioni sugli indici e le query DML riservate che usano le enclave sono supportate solo nelle colonne abilitate per l'enclave che usano la crittografia casuale. La crittografia deterministica non è supportata.
Il livello di compatibilità del database deve essere impostato su SQL Server 2022 (160) o superiore.
Nel database SQL di Azure e in SQL Server 2022 (16.x), le query riservate che usano enclave su una colonna di stringhe di caratteri (char
, nchar
) richiedono che la colonna usi regole di confronto del punto di codice binario (_BIN2) o UTF-8. In SQL Server 2019 (15.x) è necessaria una regola di confronto a_BIN2.
Anche i comandi amministrativi DBCC (Transact-SQL) che comportano il controllo dell'integrità degli indici potrebbero richiedere enclave sicure, se il database contiene indici su colonne abilitate per l'enclave che usano la crittografia casuale. Ad esempio, DBCC CHECKDB (Transact-SQL) e DBCC CHECKTABLE (Transact-SQL).
L'ambiente deve soddisfare i requisiti seguenti per supportare l'esecuzione di istruzioni che usano un'enclave sicura.
L'istanza di SQL Server o il server database in Azure SQL Database devono essere configurati correttamente per supportare le enclave e l'attestazione, se richiesto/applicabile. Per altre informazioni, vedere Configurare l'enclave sicura e l'attestazione.
Quando ci si connette al database da un'applicazione o uno strumento, ad esempio SQL Server Management Studio, assicurarsi di:
Usare una versione del driver client o una versione dello strumento che supporti Always Encrypted con enclave sicure.
Abilitare Always Encrypted per una connessione di database.
Impostare un protocollo di attestazione, che determina se l’applicazione o lo strumento debbano attestare l'enclave prima di inviare query enclave e, in tal caso, quale servizio di attestazione debbano usare. La maggior parte degli strumenti e dei driver supporta i protocolli di attestazione seguenti:
La tabella seguente specifica i protocolli di attestazione validi per determinati prodotti SQL e tecnologie enclave:
Prodotto | Tecnologia enclave | Protocolli di attestazione supportati |
---|---|---|
SQL Server 2019 (15.x) e versioni successive | Enclavi VBS | Servizio Sorveglianza Host, Nessuno |
Database SQL di Azure | Enclave SGX (nei database della serie DC) | Attestazione di Microsoft Azure |
Database SQL di Azure | Enclave VBS | None |
Specifica un URL di attestazione valido per l'ambiente se si usa l'attestazione.
Scaricare l’ultima versione di SQL Server Management Studio (SSMS).
Assicurarsi di eseguire le istruzioni da una finestra di query che usa una connessione per cui sono configurati correttamente Always Encrypted e i parametri di attestazione.
Nella finestra di dialogo Connetti al server specificare il nome del server, selezionare un metodo di autenticazione e specificare le credenziali.
Selezionare >>e selezionare la scheda Proprietà connessione. Specificare il nome del database.
Selezionare la scheda Always Encrypted.
Selezionare Abilita Always Encrypted (crittografia della colonna).
Selezionare Abilita enclavi sicure.
Impostare il Protocollo su:
Specificare l'URL di attestazione dell'enclave. Non applicabile quando il Protocollo è impostato su Nessuno. Ad esempio, https://hgs.bastion.local/Attestation
o https://contososqlattestation.uks.attest.azure.net/attest/SgxEnclave
.
Selezionare Connetti.
Se viene chiesto di abilitare la parametrizzazione per le query Always Encrypted, selezionare Abilita.
Per ulteriori informazioni, vedere Abilitazione e disabilitazione di Always Encrypted per una connessione di database.
È consigliabile usare la versione minima consigliata 1.23 o versione successiva. Assicurarsi di eseguire le istruzioni da una finestra di query che usa una connessione con la funzionalità Always Encrypted abilitata e con il protocollo di attestazione e l'URL di attestazione corretti configurati.
Nella finestra di dialogo Connessione, selezionare Avanzate….
Per abilitare Always Encrypted per la connessione, impostare il campo Always Encrypted su Attivato.
Per abilitare enclave sicure, impostare il campo Enclave sicuri su Abilitato.
Specificare il protocollo di attestazione e l'URL di attestazione.
Selezionare OK per chiudere le Proprietà avanzate.
Per ulteriori informazioni, vedere Abilitazione e disabilitazione di Always Encrypted per una connessione di database.
Se si prevede di eseguire query DML con parametri, è necessario abilitare anche la parametrizzazione per Always Encrypted.
Questa sezione include esempi di query DML che usano le enclave.
Negli esempi viene usato lo schema seguente.
CREATE SCHEMA [HR];
GO
CREATE TABLE [HR].[Jobs](
[JobID] [int] IDENTITY(1,1) PRIMARY KEY,
[JobTitle] [nvarchar](50) NOT NULL,
[MinSalary] [money] ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL,
[MaxSalary] [money] ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL
);
GO
CREATE TABLE [HR].[Employees](
[EmployeeID] [int] IDENTITY(1,1) PRIMARY KEY,
[SSN] [char](11) ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL,
[FirstName] [nvarchar](50) NOT NULL,
[LastName] [nvarchar](50) NOT NULL,
[Salary] [money] ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL,
[JobID] [int] NULL,
FOREIGN KEY (JobID) REFERENCES [HR].[Jobs] (JobID)
);
GO
La query seguente esegue una ricerca di corrispondenza esatta sulla colonna crittografata SSN
.
DECLARE @SSN char(11) = '795-73-9838';
SELECT * FROM [HR].[Employees] WHERE [SSN] = @SSN;
GO
La query seguente esegue una ricerca con corrispondenza di pattern sulla colonna di tipo stringa SSN
crittografata, cercando i dipendenti con le ultime quattro cifre specificate di un numero di sicurezza sociale.
DECLARE @SSN char(11) = '795-73-9838';
SELECT * FROM [HR].[Employees] WHERE [SSN] = @SSN;
GO
La query seguente esegue un confronto di intervalli sulla colonna Salary
crittografata, cercando i dipendenti con stipendi compresi nell'intervallo specificato.
DECLARE @MinSalary money = 40000;
DECLARE @MaxSalary money = 45000;
SELECT * FROM [HR].[Employees] WHERE [Salary] > @MinSalary AND [Salary] < @MaxSalary;
GO
La query seguente crea un join tra le tabelle Employees
e Jobs
usando la colonna Salary
crittografata. La query recupera i dipendenti con stipendi non compresi nell'intervallo di stipendio per il ruolo del dipendente.
SELECT * FROM [HR].[Employees] e
JOIN [HR].[Jobs] j
ON e.[JobID] = j.[JobID] AND e.[Salary] > j.[MaxSalary] OR e.[Salary] < j.[MinSalary];
GO
La query seguente ordina i record dei dipendenti in base alla colonna Salary
crittografata, recuperando i 10 dipendenti con gli stipendi più elevati.
Nota
L'ordinamento delle colonne crittografate è supportato in SQL Server 2022 (16.x) e database SQL di Azure, ma non in SQL Server 2019 (15.x).
SELECT TOP(10) * FROM [HR].[Employees]
ORDER BY [Salary] DESC;
GO
Eventi
31 mar, 23 - 2 apr, 23
Il più grande evento di apprendimento di SQL, Infrastruttura e Power BI. 31 marzo - 2 aprile. Usare il codice FABINSIDER per salvare $400.
Registrati oggiTraining
Certificazione
Microsoft Certified: Azure Database Administrator Associate - Certifications
Amministrare un'infrastruttura di database SQL Server per database relazionali, ibridi, locali e cloud con le offerte di database relazionali Microsoft PaaS.
Documentazione
Configurare la crittografia delle colonne sul posto usando Always Encrypted con enclave sicuri
Gestire le chiavi per Always Encrypted con enclavi sicure - SQL Server
Gestire le chiavi per Always Encrypted con enclavi sicure
Effettuare il provisioning delle chiavi abilitate per l'enclave - SQL Server
Effettuare il provisioning delle chiavi abilitate per l'enclave