Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
van toepassing op:SQL Server-
Veelvoorkomende SQL Server-encryptieactiviteiten die gebruikmaken van een asymmetrische sleutel die door Azure Key Vault wordt beschermd, vallen onder de volgende drie gebieden:
- Transparante data-encryptie (TDE) door gebruik te maken van een asymmetrische sleutel uit Azure Key Vault.
- Back-ups versleutelen met behulp van een asymmetrische sleutel uit de sleutelkluis.
- Kolomniveau-encryptie door gebruik te maken van een asymmetrische sleutel uit de sleutelkluis.
Voltooi de stappen 1 tot en met 4 van Set up Transparent Data Encryption met Azure Key Vault voor SQL Server voordat je de stappen in dit artikel volgt.
Notitie
Versies 1.0.0.440 en eerder zijn vervangen en worden niet langer ondersteund in productieomgevingen. Werk bij naar versie 1.0.1.0 of later. Download de huidige versie van het Microsoft Downloadcentrum en volg de instructies in de sectie "Upgrade van SQL Server Connector" van SQL Server Connector onderhoud en probleemoplossing.
Notitie
Microsoft Entra ID voorheen Azure Active Directory (Azure AD) werd genoemd.
Transparante data-encryptie door gebruik te maken van een asymmetrische sleutel uit Azure Key Vault
Nadat je stappen 1 tot en met 4 hebt voltooid van Set up Transparent Data Encryption met Azure Key Vault voor SQL Server, gebruik je de Azure Key Vault-sleutel om de database-encryptiesleutel te versleutelen met TDE. Voor meer informatie over het roteren van sleutels met PowerShell, zie De beveiliging van Transparent Data Encryption (TDE) roteren met PowerShell.
Belangrijk
Verwijder eerdere versies van de sleutel niet na een rollover. Wanneer sleutels rouleren, blijft sommige gegevens versleuteld met de vorige sleutels, zoals oudere database-back-ups, back-up-logbestanden en transactielogbestanden.
Je moet een credential en een login aanmaken, en een database-encryptiesleutel maken die de data en logs in de database versleutelt. Het versleutelen van een database vereist CONTROL machtiging voor de database. De volgende afbeelding toont de hiërarchie van de encryptiesleutel wanneer je Azure Key Vault gebruikt.
Een SQL Server-referentie maken voor de database-engine die moet worden gebruikt voor TDE-
De Database Engine gebruikt de Microsoft Entra-applicatiegegevens om tijdens het laden van de database toegang te krijgen tot de key vault. Om de door jou verleende sleutelkluisrechten te beperken, maak je een andere Client ID en Secret aan, zoals beschreven in Stap 1: Het verificatiemodel instellen, voor de Database Engine.
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
IDENTITYargument door de naam van uw Azure Key Vault uit stap 2: Een sleutelkluis maken. - Als je een privé Azure-cloud gebruikt, bijvoorbeeld Azure Government, Azure beheerd door 21Vianet, of Azure Duitsland, vervang dan het
IDENTITY-argument door de Vault-URI die wordt geretourneerd in Een sleutelkluis en sleutel maken met PowerShell. Neemhttps://niet op in de sleutelkluis-URI.
- Als u globale Azure gebruikt, vervangt u het
Vervang het eerste deel van het
SECRETargument door de Microsoft Entra applicatie Client ID uit Stap 1: Het authenticatiemodel opzetten. In dit voorbeeld is de client-IDEF5C8E094D2A4A769998D93440D8115D.Belangrijk
U moet de afbreekstreepjes uit de client-idverwijderen.
Vul het tweede deel van het
SECRET-argument in met het Client Secret uit stap 1. In dit voorbeeld is het Client SecretReplaceWithAADClientSecret.De laatste string voor het
SECRETargument is een lange reeks letters en cijfers, zonder koppeltekens.
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 ; GOMaak de database-encryptiesleutel (DEK) aan
De DEK versleutelt je gegevens en logbestanden in de database-instantie, en wordt op zijn beurt versleuteld door de asymmetrische sleutel van Azure Key Vault. Je kunt de DEK maken door elk algoritme of sleutellengte te gebruiken die SQL Server ondersteunt.
USE ContosoDatabase; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER ASYMMETRIC KEY CONTOSO_KEY; GOZet TDE aan
-- Alter the database to enable transparent data encryption. ALTER DATABASE ContosoDatabase SET ENCRYPTION ON; GOControleer met Management Studio of TDE is ingeschakeld door verbinding te maken met je database via Objectverkenner. Klik met de rechtermuisknop op je database, wijs naar Taken en selecteer vervolgens Database-encryptie beheren.
ekm-tde-object-explorerControleer 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). Het volgende voorbeeld maakt een back-up aan en herstelt een back-up die is versleuteld met een data-encryptiesleutel die door de asymmetrische sleutel in de sleutelkluis wordt beschermd.
De Database Engine gebruikt de Microsoft Entra-applicatiegegevens om tijdens het laden van de database toegang te krijgen tot de Key Vault. Om de door jou verleende sleutelkluisrechten te beperken, maak je een andere Client ID en Secret aan, zoals beschreven in Stap 1: Het verificatiemodel instellen, voor de Database Engine.
Maak een SQL Server-credential aan voor de Database Engine om te gebruiken voor back-upencryptie
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
IDENTITYargument door de naam van uw Azure Key Vault uit stap 2: Een sleutelkluis maken. - Als je een privé Azure-cloud gebruikt, bijvoorbeeld Azure Government, Microsoft Azure dat wordt beheerd door 21Vianet, of Azure Duitsland, vervang dan het
IDENTITYargument door de Vault-URI die wordt teruggegeven in Create a key vault and key by using PowerShell. Neemhttps://niet op in de sleutelkluis-URI.
- Als u globale Azure gebruikt, vervangt u het
Vervang het eerste deel van het
SECRETargument door de Microsoft Entra applicatie Client ID uit Stap 1: Het authenticatiemodel opzetten. In dit voorbeeld is de client-IDEF5C8E094D2A4A769998D93440D8115D.Belangrijk
U moet de afbreekstreepjes uit de client-idverwijderen.
Vul het tweede deel van het
SECRETargument in met het Client Secret uit stap 1. In dit voorbeeld is de Client SecretReplace-With-AAD-Client-Secret. De laatste string voor hetSECRETargument is een lange reeks letters en cijfers, zonder koppeltekens.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;
Maak een SQL Server-login aan voor de Database Engine voor back-upversleuteling
Maak een SQL Server-aanmelding die moet worden gebruikt door de database-engine voor versleutelingsback-ups en voeg de referentie uit stap 1 eraan toe. In dit Transact-SQL voorbeeld wordt dezelfde sleutel gebruikt die eerder is geïmporteerd.
Belangrijk
Je kunt dezelfde asymmetrische sleutel niet gebruiken voor back-upencryptie als je die sleutel al hebt gebruikt voor TDE (het voorgaande voorbeeld), of kolomniveau-encryptie (het volgende voorbeeld).
Dit voorbeeld gebruikt de
CONTOSO_KEY_BACKUPasymmetrische sleutel die in de sleutelkluis is opgeslagen, die je eerder hebt geïmporteerd of aangemaakt voor demasterdatabase, zoals beschreven in Stap 2: Maak een sleutelkluis aan.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 ; GOMaak een back-up van de database
Maak een back-up van de database en specificeer encryptie met de asymmetrische sleutel die in de sleutelkluis is opgeslagen.
In het volgende voorbeeld wordt opgemerkt dat als de database al met TDE was versleuteld, en de asymmetrische sleutel
CONTOSO_KEY_BACKUPverschilt van de TDE-asymmetrische sleutel, de back-up wordt versleuteld door zowel de TDE-asymmetrische sleutel alsCONTOSO_KEY_BACKUP. De doel-SQL Server-instantie heeft beide sleutels nodig om de back-up te ontsleutelen.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]); GOHerstel de database
Om een database-back-up te herstellen die met TDE is versleuteld, moet de doel-SQL Server-instantie eerst een kopie hebben van de asymmetrische sleutelkluissleutel die voor de encryptie wordt gebruikt. Om die kopie te verstrekken:
Als de oorspronkelijke asymmetrische sleutel die voor TDE is gebruikt niet langer in de sleutelkluis zit, herstel dan de back-up van de sleutel uit de sleutelkluis of importeer de sleutel opnieuw vanaf een lokale HSM. Om de duimafdruk van de sleutel te laten overeenkomen met de duimafdruk die op de database-back-up is vastgelegd, moet de sleutel dezelfde naam van de sleutelkluissleutel gebruiken als oorspronkelijk.
Pas stap 1 en 2 toe op de doel-SQL Server-instantie.
Nadat de doel-SQL Server-instantie toegang heeft tot de asymmetrische sleutels 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; GOZie (Transact-SQL) voor meer informatie over back-upoptiesBACKUP.
Kolomniveau-encryptie door gebruik te maken 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. De symmetrische sleutel versleutelt vervolgens de gegevens in de database.
Belangrijk
Je kunt dezelfde asymmetrische sleutel niet gebruiken voor kolomniveau-encryptie als je die sleutel al voor back-upencryptie hebt gebruikt.
Dit voorbeeld gebruikt de CONTOSO_KEY_COLUMNS asymmetrische sleutel die in de sleutelkluis is opgeslagen, die je eerder kunt importeren of aanmaken, zoals beschreven in Stap 2: Maak een sleutelkluis aan. Om deze asymmetrische sleutel in de ContosoDatabase database te gebruiken, voer je de CREATE ASYMMETRIC KEY instructie opnieuw uit om de ContosoDatabase database een referentie naar de sleutel 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;