SQL Server-connector gebruiken met SQL-versleutelingsfuncties
van toepassing op:SQL Server-
Veelvoorkomende SQL Server-versleutelingsactiviteiten met behulp van een asymmetrische sleutel die wordt beveiligd door Azure Key Vault, bevatten de volgende drie gebieden.
Transparent Data Encryption met behulp van een asymmetrische sleutel uit Azure Key Vault
Back-ups versleutelen met behulp van een asymmetrische sleutel uit de Sleutelkluis
Versleuteling op kolomniveau met behulp van een asymmetrische sleutel uit de sleutelkluis
Voltooi deel I tot en met IV van het onderwerp Installatiestappen voor uitbreidbaar sleutelbeheer met behulp van de Azure Key Vault-, voordat u de stappen in dit onderwerp volgt.
Notitie
Versies 1.0.0.440 en ouder zijn vervangen en worden niet meer ondersteund in productieomgevingen. Voer een upgrade uit naar versie 1.0.1.0 of hoger door naar het Microsoft Downloadcentrum te gaan en de instructies te volgen op de Onderhoud van de SQL Server-connector & pagina Probleemoplossing onder "Upgrade van de SQL Server-connector".
Notitie
Microsoft Entra ID voorheen Azure Active Directory (Azure AD) werd genoemd.
Transparent Data Encryption met behulp van een asymmetrische sleutel uit Azure Key Vault
Nadat u deel I tot en met IV van het onderwerp Setup Steps for Extensible Key Management hebt voltooid met behulp van Azure Key Vault, gebruikt u de Azure Key Vault-sleutel om de databaseversleutelingssleutel te versleutelen met behulp van TDE. Zie voor meer informatie over het roteren van sleutels met behulp van PowerShell, De TDE-beschermer (Transparent Data Encryption) roteren met PowerShell.
Belangrijk
Verwijder eerdere versies van de sleutel niet na een rollover. Wanneer sleutels worden overgerold, worden sommige gegevens nog steeds versleuteld met de vorige sleutels, zoals oudere databaseback-ups, back-ups van logboekbestanden en transactielogboekbestanden.
U moet een referentie en aanmelding maken en een databaseversleutelingssleutel maken waarmee de gegevens en logboeken in de database worden versleuteld. Voor het versleutelen van een database is control- machtiging voor de database vereist. In de volgende afbeelding ziet u de hiërarchie van de versleutelingssleutel wanneer u De Azure Key Vault gebruikt.
Een SQL Server-referentie maken voor de database-engine die moet worden gebruikt voor TDE-
De database-engine gebruikt de referenties van de Microsoft Entra-toepassing voor toegang tot de Key Vault tijdens het laden van de database. We raden aan om een andere Client-ID en Client Secrette maken, zoals beschreven in Stap 1, om de verleende Key Vault-machtigingen te beperken.
Wijzig het Transact-SQL script hieronder op de volgende manieren:
Bewerk het argument
IDENTITY
(ContosoDevKeyVault
) om naar uw Azure Key Vault te verwijzen.- Als u globale Azure-gebruikt, vervangt u het argument
IDENTITY
door de naam van uw Azure Key Vault uit deel II. - Als u een privécloud van Azure gebruikt (bijvoorbeeld Azure Government, Azure beheerd door 21Vianet of Azure Duitsland), vervangt u het
IDENTITY
argument door de kluis-URI die wordt geretourneerd in deel II, stap 3. Neem 'https://' niet op in de Vault-URI.
- Als u globale Azure-gebruikt, vervangt u het argument
Vervang het eerste deel van het argument
SECRET
door de client-id van de Microsoft Entra-toepassing van stap 1 (). In dit voorbeeld is de client-IDEF5C8E094D2A4A769998D93440D8115D
.Belangrijk
U moet de afbreekstreepjes uit de client-idverwijderen.
Voltooi het tweede deel van het argument
SECRET
met clientgeheim van deel I. In dit voorbeeld wordt het clientgeheim van deel 1ReplaceWithAADClientSecret
.De laatste tekenreeks voor het argument SECRET is een lange reeks letters en cijfers, zonder afbreekstreepjes.
USE master; CREATE CREDENTIAL Azure_EKM_TDE_cred WITH IDENTITY = 'ContosoDevKeyVault', -- for global Azure -- WITH IDENTITY = 'ContosoDevKeyVault.vault.usgovcloudapi.net', -- for Azure Government -- WITH IDENTITY = 'ContosoDevKeyVault.vault.azure.cn', -- for Microsoft Azure operated by 21Vianet -- WITH IDENTITY = 'ContosoDevKeyVault.vault.microsoftazure.de', -- for Azure Germany SECRET = 'EF5C8E094D2A4A769998D93440D8115DReplaceWithAADClientSecret' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;
Een SQL Server-aanmelding maken voor de Database Engine voor TDE-
Maak een SQL Server-aanmelding en voeg de referentie uit stap 1 eraan toe. In dit Transact-SQL voorbeeld wordt dezelfde sleutel gebruikt die eerder is geïmporteerd.
USE master; -- Create a SQL Server login associated with the asymmetric key -- for the Database engine to use when it loads a database -- encrypted by TDE. CREATE LOGIN TDE_Login FROM ASYMMETRIC KEY CONTOSO_KEY; GO -- Alter the TDE Login to add the credential for use by the -- Database Engine to access the key vault ALTER LOGIN TDE_Login ADD CREDENTIAL Azure_EKM_TDE_cred ; GO
Maak de DEK (Database Encryption Key) aan
De DEK versleutelt uw gegevens en logboekbestanden in het database-exemplaar en wordt op zijn beurt versleuteld door de asymmetrische sleutel van Azure Key Vault. De DEK kan worden gemaakt met behulp van een door SQL Server ondersteund algoritme of sleutellengte.
USE ContosoDatabase; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER ASYMMETRIC KEY CONTOSO_KEY; GO
TDE- inschakelen
-- Alter the database to enable transparent data encryption. ALTER DATABASE ContosoDatabase SET ENCRYPTION ON; GO
Controleer met Behulp van Management Studio of TDE is ingeschakeld door verbinding te maken met uw database met Objectverkenner. Klik met de rechtermuisknop op uw database, wijs Takenaan en klik vervolgens op Databaseversleuteling beheren.
ekm-tde-object-explorer
Controleer in het dialoogvenster Databaseversleuteling beheren of TDE is ingeschakeld en welke asymmetrische sleutel de DEK versleutelt.
nl-NL:
U kunt ook het volgende Transact-SQL script uitvoeren. Een versleutelingsstatus van 3 geeft een versleutelde database aan.
USE MASTER SELECT * FROM sys.asymmetric_keys -- Check which databases are encrypted using TDE SELECT d.name, dek.encryption_state FROM sys.dm_database_encryption_keys AS dek JOIN sys.databases AS d ON dek.database_id = d.database_id;
Notitie
De
tempdb
-database wordt automatisch versleuteld wanneer een database TDE inschakelt.
Back-ups versleutelen met behulp van een asymmetrische sleutel uit de Sleutelkluis
Versleutelde back-ups worden ondersteund vanaf SQL Server 2014 (12.x). In het volgende voorbeeld wordt een back-up gemaakt en hersteld die is versleuteld met een gegevensversleutelingssleutel die wordt beveiligd door de asymmetrische sleutel in de sleutelkluis.
De database-engine gebruikt de referenties van de Microsoft Entra-toepassing voor toegang tot de Key Vault tijdens het laden van de database. We raden aan om een andere client-id en client-secrette maken, zoals beschreven in stap 1, om de verleende Key Vault-machtigingen te beperken.
een SQL Server-referentie maken voor de database-engine die moet worden gebruikt voor back-upversleuteling
Wijzig het Transact-SQL script hieronder op de volgende manieren:
Bewerk het argument
IDENTITY
(ContosoDevKeyVault
) om naar uw Azure Key Vault te verwijzen.- Als u globale Azure-gebruikt, vervangt u het argument
IDENTITY
door de naam van uw Azure Key Vault uit deel II. - Als u een privécloud van Azure gebruikt (bijvoorbeeld Azure Government, Microsoft Azure beheerd door 21Vianet of Azure Duitsland), vervangt u het
IDENTITY
argument door de kluis-URI die wordt geretourneerd in deel II, stap 3. Neem 'https://' niet op in de kluis-URI.
- Als u globale Azure-gebruikt, vervangt u het argument
Vervang het eerste deel van het argument
SECRET
met het Client-ID van de Microsoft Entra-toepassing uit stap 1 . In dit voorbeeld is de client-idEF5C8E094D2A4A769998D93440D8115D
.Belangrijk
U moet de afbreekstreepjes uit de client-idverwijderen.
Voltooi het tweede deel van het argument
SECRET
met clientgeheim van deel I. In dit voorbeeld wordt het clientgeheim van deel IReplace-With-AAD-Client-Secret
. De laatste tekenreeks voor het argumentSECRET
is een lange reeks letters en cijfers, met geen afbreekstreepjes.USE master; CREATE CREDENTIAL Azure_EKM_Backup_cred WITH IDENTITY = 'ContosoDevKeyVault', -- for global Azure -- WITH IDENTITY = 'ContosoDevKeyVault.vault.usgovcloudapi.net', -- for Azure Government -- WITH IDENTITY = 'ContosoDevKeyVault.vault.azure.cn', -- for Microsoft Azure operated by 21Vianet -- WITH IDENTITY = 'ContosoDevKeyVault.vault.microsoftazure.de', -- for Azure Germany SECRET = 'EF5C8E094D2A4A769998D93440D8115DReplace-With-AAD-Client-Secret' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;
Een SQL Server-aanmelding maken voor de database-engine voor back-upversleuteling
Maak een SQL Server-aanmelding die moet worden gebruikt door de Database Enginee voor versleutelingsback-ups en voeg de referentie van stap 1 eraan toe. In dit Transact-SQL voorbeeld wordt dezelfde sleutel gebruikt die eerder is geïmporteerd.
Belangrijk
U kunt dezelfde asymmetrische sleutel niet gebruiken voor back-upversleuteling als u die sleutel al hebt gebruikt voor TDE (het bovenstaande voorbeeld) of versleuteling op kolomniveau (het volgende voorbeeld).
In dit voorbeeld wordt de asymmetrische sleutel
CONTOSO_KEY_BACKUP
gebruikt, die is opgeslagen in de sleutelkluis. Deze sleutel kan eerder zijn geïmporteerd of gemaakt voor de hoofddatabase, zoals beschreven in deel IV, stap 5.USE master; -- Create a SQL Server login associated with the asymmetric key -- for the Database engine to use when it is encrypting the backup. CREATE LOGIN Backup_Login FROM ASYMMETRIC KEY CONTOSO_KEY_BACKUP; GO -- Alter the Encrypted Backup Login to add the credential for use by -- the Database Engine to access the key vault ALTER LOGIN Backup_Login ADD CREDENTIAL Azure_EKM_Backup_cred ; GO
een back-up maken van de database
Maak een back-up van de database en specificeer versleuteling met de asymmetrische sleutel die is opgeslagen in de sleutelkluis.
In het onderstaande voorbeeld ziet u dat als de database al is versleuteld met TDE en de asymmetrische sleutel
CONTOSO_KEY_BACKUP
verschilt van de Asymmetrische TDE-sleutel, de back-up wordt versleuteld door zowel de ASYMmetrische TDE-sleutel alsCONTOSO_KEY_BACKUP
. Het SQL Server-doelexemplaar heeft beide sleutels nodig om de back-up te decoderen.USE master; BACKUP DATABASE [DATABASE_TO_BACKUP] TO DISK = N'[PATH TO BACKUP FILE]' WITH FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD, ENCRYPTION(ALGORITHM = AES_256, SERVER ASYMMETRIC KEY = [CONTOSO_KEY_BACKUP]); GO
de database herstellen
Als u een databaseback-up wilt herstellen die is versleuteld met TDE, moet het doelexemplaar van SQL Server eerst een kopie hebben van de asymmetrische Key Vault-sleutel die wordt gebruikt voor versleuteling. Dit is hoe dit zou worden bereikt:
Als de oorspronkelijke asymmetrische sleutel die wordt gebruikt voor TDE zich niet meer in Key Vault bevindt, herstelt u de key Vault-sleutelback-up ofimporteert u de sleutel opnieuw vanuit een lokale HSM. Belangrijk: Om ervoor te zorgen dat de vingerafdruk van de sleutel overeenkomt met de vingerafdruk die is vastgelegd in de back-up van de database, moet de sleutel de dezelfde Key Vault-sleutelnaam hebben als die oorspronkelijk had.
Pas stap 1 en 2 toe op het SQL Server-doelexemplaren.
Zodra het doel-SQL Server-exemplaar toegang heeft tot de asymmetrische sleutel(s) die worden gebruikt om de back-up te versleutelen, herstelt u de database op de server.
Voorbeeld van herstelcode:
RESTORE DATABASE [DATABASE_TO_BACKUP] FROM DISK = N'[PATH TO BACKUP FILE]' WITH FILE = 1, NOUNLOAD, REPLACE; GO
Zie BACKUP (Transact-SQL)voor meer informatie over back-upopties.
Versleuteling op kolomniveau met behulp van een asymmetrische sleutel uit de sleutelkluis
In het volgende voorbeeld wordt een symmetrische sleutel gemaakt die wordt beveiligd door de asymmetrische sleutel in de sleutelkluis. Vervolgens wordt de symmetrische sleutel gebruikt om gegevens in de database te versleutelen.
Belangrijk
U kunt dezelfde asymmetrische sleutel niet gebruiken voor versleuteling op kolomniveau als u die sleutel al hebt gebruikt voor back-upversleuteling.
In dit voorbeeld wordt de CONTOSO_KEY_COLUMNS
asymmetrische sleutel gebruikt die is opgeslagen in de sleutelkluis, die eerder kan worden geïmporteerd of gemaakt, zoals beschreven in stap 3, sectie 3 van setupstappen voor uitbreidbaar sleutelbeheer met behulp van de Azure Key Vault-. Als u deze asymmetrische sleutel in de ContosoDatabase
-database wilt gebruiken, moet u de CREATE ASYMMETRIC KEY
instructie opnieuw uitvoeren om de ContosoDatabase
database een verwijzing naar de sleutel op te geven.
USE [ContosoDatabase];
GO
-- Create a reference to the key in the key vault
CREATE ASYMMETRIC KEY CONTOSO_KEY_COLUMNS
FROM PROVIDER [AzureKeyVault_EKM_Prov]
WITH PROVIDER_KEY_NAME = 'ContosoDevRSAKey2',
CREATION_DISPOSITION = OPEN_EXISTING;
-- Create the data encryption key.
-- The data encryption key can be created using any SQL Server
-- supported algorithm or key length.
-- The DEK will be protected by the asymmetric key in the key vault
CREATE SYMMETRIC KEY DATA_ENCRYPTION_KEY
WITH ALGORITHM=AES_256
ENCRYPTION BY ASYMMETRIC KEY CONTOSO_KEY_COLUMNS;
DECLARE @DATA VARBINARY(MAX);
--Open the symmetric key for use in this session
OPEN SYMMETRIC KEY DATA_ENCRYPTION_KEY
DECRYPTION BY ASYMMETRIC KEY CONTOSO_KEY_COLUMNS;
--Encrypt syntax
SELECT @DATA = ENCRYPTBYKEY
(
KEY_GUID('DATA_ENCRYPTION_KEY'),
CONVERT(VARBINARY,'Plain text data to encrypt')
);
-- Decrypt syntax
SELECT CONVERT(VARCHAR, DECRYPTBYKEY(@DATA));
--Close the symmetric key
CLOSE SYMMETRIC KEY DATA_ENCRYPTION_KEY;
Zie ook
installatiestappen voor uitbreidbaar sleutelbeheer met behulp van de Azure Key Vault-
Uitbreidbaar sleutelbeheer met behulp van Azure Key Vault-
EKM-provider ingeschakeld serverconfiguratieoptie
sql Server-connectoronderhoud & problemen oplossen