Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Vanliga SQL Server-krypteringsaktiviteter med hjälp av en asymmetrisk nyckel som skyddas av Azure Key Vault innehåller följande tre områden.
Transparent datakryptering med hjälp av en asymmetrisk nyckel från Azure Key Vault
Kryptera säkerhetskopior med hjälp av en asymmetrisk nyckel från Nyckelvalvet
Kryptering på kolumnnivå med hjälp av en asymmetrisk nyckel från nyckelvalvet
Slutför delar av I till IV i avsnittet installationssteg för utökningsbar nyckelhantering med hjälp av Azure Key Vault-innan du följer stegen i det här avsnittet.
Notera
Version 1.0.0.440 och äldre har ersatts och stöds inte längre i produktionsmiljöer. Uppgradera till version 1.0.1.0 eller senare genom att gå till Microsoft Download Center och använda anvisningarna på sidan UNDERHÅLL av SQL Server Connector & Felsökning under "Uppgradering av SQL Server Connector".
Notera
Microsoft Entra ID tidigare kallades Azure Active Directory (Azure AD).
Transparent datakryptering med hjälp av en asymmetrisk nyckel från Azure Key Vault
När du har slutfört del I till IV i avsnittet Installationssteg för utökningsbar nyckelhantering med hjälp av Azure Key Vault använder du Azure Key Vault-nyckeln för att kryptera databaskrypteringsnyckeln med hjälp av TDE. Mer information om hur du roterar nycklar med PowerShell finns i Rotera TDE-skyddet (Transparent datakryptering) med PowerShell-.
Viktig
Ta inte bort tidigare versioner av nyckeln efter en rollover. När nycklar rullas över krypteras vissa data fortfarande med tidigare nycklar, till exempel äldre databassäkerhetskopior, säkerhetskopierade loggfiler och transaktionsloggfiler.
Du måste skapa en autentiseringsuppgift och en inloggning och skapa en databaskrypteringsnyckel som krypterar data och loggar i databasen. För att kryptera en databas krävs CONTROL- behörighet för databasen. Följande bild visar hierarkin för krypteringsnyckeln när du använder Azure Key Vault.
Skapa en SQL Server-autentiseringsuppgift som databasmotorn ska använda för TDE-
Databasmotorn använder autentiseringsuppgifterna för Microsoft Entra-programmet för att komma åt Key Vault under databasinläsningen. Vi rekommenderar att du skapar ett annat klient-ID och Secret, enligt beskrivningen i steg 1för databasmotorn, för att begränsa de Behörigheter för Nyckelvalv som beviljas.
Ändra Transact-SQL skriptet nedan på följande sätt:
Redigera argumentet
IDENTITY
(ContosoDevKeyVault
) för att peka på ditt Azure Key Vault.- Om du använder globala Azure-ersätter du argumentet
IDENTITY
med namnet på ditt Azure Key Vault från del II. - Om du använder ett privat Azure-moln (t.ex. Azure Government, Azure som drivs av 21Vianet eller Azure Tyskland) ersätter du argumentet
IDENTITY
med valv-URI:n som returneras i del II, steg 3. Inkludera inte "https://" i valv-URI:n.
- Om du använder globala Azure-ersätter du argumentet
Ersätt den första delen av argumentet
SECRET
med Microsoft Entra-programmet klient-ID från steg 1. I det här exemplet är Klient-IDEF5C8E094D2A4A769998D93440D8115D
.Viktig
Du måste ta bort bindestrecken från klient-ID.
Slutför den andra delen av argumentet
SECRET
med klienthemlighet från del I. I det här exemplet är klienthemlighet från del 1ReplaceWithAADClientSecret
.Den sista strängen för SECRET-argumentet blir en lång sekvens med bokstäver och siffror, utan bindestreck.
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;
Skapa en SQL Server-inloggning för databasmotorn för TDE
Skapa en SQL Server-inloggning och lägg till autentiseringsuppgifterna från steg 1 till den. I det här Transact-SQL exemplet används samma nyckel som importerades tidigare.
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
Skapa databaskrypteringsnyckeln (DEK)
DEK krypterar dina data och loggfiler i databasinstansen och krypteras i sin tur av den asymmetriska Azure Key Vault-nyckeln. DEK kan skapas med valfri SQL Server-algoritm eller nyckellängd som stöds.
USE ContosoDatabase; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER ASYMMETRIC KEY CONTOSO_KEY; GO
aktivera TDE-
-- Alter the database to enable transparent data encryption. ALTER DATABASE ContosoDatabase SET ENCRYPTION ON; GO
Med Hjälp av Management Studio kontrollerar du att TDE har aktiverats genom att ansluta till databasen med Object Explorer. Högerklicka på databasen, peka på Uppgifteroch klicka sedan på Hantera databaskryptering.
I dialogrutan Hantera databaskryptering bekräftar du att TDE är aktiverat och vilken asymmetrisk nyckel som krypterar DEK.
Du kan också köra följande Transact-SQL skript. Krypteringstillståndet 3 anger en krypterad databas.
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;
Note
Den
tempdb
databasen krypteras automatiskt när en databas aktiverar TDE.
Kryptera säkerhetskopior med hjälp av en asymmetrisk nyckel från Nyckelvalvet
Krypterade säkerhetskopior stöds från och med SQL Server 2014 (12.x). I följande exempel skapas och återställs en säkerhetskopia som krypterats med en datakrypteringsnyckel som skyddas av den asymmetriska nyckeln i nyckelvalvet.
Databasmotorn använder autentiseringsuppgifterna för Microsoft Entra-programmet för att komma åt Key Vault under databasinläsningen. Vi rekommenderar att du skapar ett annat klient-ID och Secret, enligt beskrivningen i steg 1för databasmotorn, för att begränsa de Behörigheter för Nyckelvalv som beviljas.
Skapa en SQL Server-autentiseringsuppgift som databasmotorn ska använda för säkerhetskopieringskryptering
Ändra Transact-SQL skriptet nedan på följande sätt:
Redigera argumentet
IDENTITY
(ContosoDevKeyVault
) för att peka på ditt Azure Key Vault.- Om du använder globala Azure-ersätter du argumentet
IDENTITY
med namnet på ditt Azure Key Vault från del II. - Om du använder en privata Azure-moln (t.ex. Azure Government, Microsoft Azure som drivs av 21Vianet eller Azure Tyskland) ersätter du argumentet
IDENTITY
med valv-URI:n som returneras i del II, steg 3. Inkludera inte "https://" i valv-URI:n.
- Om du använder globala Azure-ersätter du argumentet
Ersätt den första delen av argumentet
SECRET
med Microsoft Entra-programmet klient-ID från steg 1. I det här exemplet är klient-IDEF5C8E094D2A4A769998D93440D8115D
.Viktig
Du måste ta bort bindestrecken från klientens ID-nummer.
Slutför den andra delen av argumentet
SECRET
med klienthemlighet från del I. I det här exemplet är klienthemlighet från del IReplace-With-AAD-Client-Secret
. Den sista strängen för argumentetSECRET
blir en lång sekvens med bokstäver och siffror, med inga bindestreck.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;
Skapa en SQL Server-inloggning för databasmotorn för säkerhetskopieringskryptering
Skapa en SQL Server-inloggning som ska användas av Database Enginee för krypteringssäkerhetskopior och lägg till autentiseringsuppgifterna från steg 1 till den. I det här Transact-SQL exemplet används samma nyckel som importerades tidigare.
Viktig
Du kan inte använda samma asymmetriska nyckel för säkerhetskopieringskryptering om du redan har använt den nyckeln för TDE (exemplet ovan) eller kryptering på kolumnnivå (följande exempel).
I det här exemplet används
CONTOSO_KEY_BACKUP
asymmetrisk nyckel som lagras i nyckelvalvet, som kan importeras eller skapas tidigare för huvuddatabasen, som del IV, steg 5 tidigare.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
Säkerhetskopiera databasen
Säkerhetskopiera databasen som anger kryptering med den asymmetriska nyckeln som lagras i nyckelvalvet.
Observera i exemplet nedan att om databasen redan har krypterats med TDE och den asymmetriska nyckeln
CONTOSO_KEY_BACKUP
skiljer sig från TDE-asymmetrisk nyckel krypteras säkerhetskopieringen av både den asymmetriska TDE-nyckeln ochCONTOSO_KEY_BACKUP
. SQL Server-målinstansen behöver båda nycklarna för att dekryptera säkerhetskopian.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
Återställ databasen
Om du vill återställa en databassäkerhetskopia som är krypterad med TDE måste SQL Server-målinstansen först ha en kopia av den asymmetriska Key Vault-nyckel som används för kryptering. Det är så här detta skulle uppnås:
Om den ursprungliga asymmetriska nyckeln som används för TDE inte längre finns i Key Vault återställer du nyckelsäkerhetskopian för Key Vault eller importerar nyckeln från en lokal HSM igen. Viktigt: För att nyckelns tumavtryck ska matcha tumavtrycket som registrerats i databassäkerhetskopian måste nyckeln namnges samma Nyckelvalvsnyckelnamn som den ursprungligen hette tidigare.
Tillämpa steg 1 och 2 på SQL Server-målinstansen.
När SQL Server-målinstansen har åtkomst till de asymmetriska nycklar som används för att kryptera säkerhetskopian återställer du databasen på servern.
Exempel på återställningskod:
RESTORE DATABASE [DATABASE_TO_BACKUP] FROM DISK = N'[PATH TO BACKUP FILE]' WITH FILE = 1, NOUNLOAD, REPLACE; GO
Mer information om alternativ för säkerhetskopiering finns i BACKUP (Transact-SQL).
Kryptering på kolumnnivå med hjälp av en asymmetrisk nyckel från nyckelvalvet
I följande exempel skapas en symmetrisk nyckel som skyddas av den asymmetriska nyckeln i nyckelvalvet. Sedan används den symmetriska nyckeln för att kryptera data i databasen.
Viktig
Du kan inte använda samma asymmetriska nyckel för kryptering på kolumnnivå om du redan har använt den nyckeln för säkerhetskopieringskryptering.
I det här exemplet används CONTOSO_KEY_COLUMNS
asymmetrisk nyckel som lagras i nyckelvalvet, som kan importeras eller skapas tidigare, enligt beskrivningen i steg 3, avsnitt 3 i installationssteg för utökningsbar nyckelhantering med hjälp av Azure Key Vault-. Om du vill använda den här asymmetriska nyckeln i ContosoDatabase
-databasen måste du köra CREATE ASYMMETRIC KEY
-instruktionen igen för att ge ContosoDatabase
-databasen en referens till nyckeln.
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;
Se även
installationssteg för utökningsbar nyckelhantering med hjälp av Azure Key Vault-
Utökningsbar nyckelhantering med Azure Key Vault
EKM-provider aktiverat serverkonfigurationsalternativ
underhåll av SQL Server Connector & felsökning