Kommentar
Å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 krypteringsaktiviteter för SQL Server som använder en asymmetrisk nyckel skyddad av Azure Key Vault faller inom följande tre områden:
- Transparent datakryptering (TDE) genom att använda en asymmetrisk nyckel från Azure Key Vault.
- Kryptering av säkerhetskopior med en asymmetrisk nyckel från nyckelvalvet.
- Kolumnnivåkryptering genom att använda en asymmetrisk nyckel från nyckelvalvet.
Slutför stegen 1 till 4 i Sätt upp Transparent Data Encryption med Azure Key Vault för SQL Server innan du följer stegen i denna artikel.
Notera
Versionerna 1.0.0.440 och tidigare ersätts och stöds inte längre i produktionsmiljöer. Uppgradera till version 1.0.1.0 eller senare. Ladda ner den aktuella versionen från Microsoft Download Center och följ instruktionerna i avsnittet "Upgrade of SQL Server Connector" i SQL Server Connector-underhåll och felsökning.
Notera
Microsoft Entra ID tidigare kallades Azure Active Directory (Azure AD).
Transparent datakryptering genom att använda en asymmetrisk nyckel från Azure Key Vault
Efter att du har slutfört steg 1 till 4 i Set up Transparent Data Encryption with Azure Key Vault for SQL Server, använd Azure Key Vault-nyckeln för att kryptera databasens krypteringsnyckel med TDE. För mer information om att rotera nycklar med PowerShell, se Rotera Transparent Data Encryption-skyddet (TDE) med PowerShell.
Viktig
Ta inte bort tidigare versioner av nyckeln efter en förnyelse. När nycklar rullas över är viss data fortfarande krypterad med de tidigare nycklarna, såsom äldre databasbackuper, säkerhetskopierade loggfiler och transaktionsloggfiler.
Du behöver skapa en autentiseringsuppgift och en inloggningsuppgift, samt skapa en databaskrypteringsnyckel som krypterar data och loggarna i databasen. Att kryptera en databas kräver behörighet för CONTROL. Följande grafik 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-
Database Engine använder Microsoft Entra-applikationens inloggningsuppgifter för att komma åt nyckelvalvet under databasladdning. För att begränsa de nyckelvalvsbehörigheter du ger, skapa ett annat klient-ID och en hemlighet, som beskrivs i Steg 1: Sätt upp autentiseringsmodellen för Database Engine.
Ä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 Azureersätter du argumentet
IDENTITYmed namnet på ditt Azure Key Vault från steg 2: Skapa ett nyckelvalv. - Om du använder ett privat Azure-moln, till exempel Azure Government, Azure som drivs av 21Vianet eller Azure Germany, ersätt argumentet
IDENTITYmed Vault-URI:n som returneras i Skapa ett nyckelvalv och en nyckel med hjälp av PowerShell. Inkludera intehttps://i nyckelvalvets URI.
- Om du använder globala Azureersätter du argumentet
Ersätt den första delen av argumentet
SECRETmed Microsoft Entra-applikationens klient-ID från Steg 1: Sätt upp autentiseringsmodellen. 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
SECRETmed Client Secret från steg 1. I detta exempel ärReplaceWithAADClientSecret.Den sista strängen för argumentet
SECRETär en lång sekvens av 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 ; GOSkapa databasens krypteringsnyckel (DEK)
DEK krypterar dina data och loggfiler i databasinstansen, och krypteras i sin tur av den asymmetriska nyckeln i Azure Key Vault. Du kan skapa DEK genom att använda vilken algoritm eller nyckellängd som helst som SQL Server stödjer.
USE ContosoDatabase; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER ASYMMETRIC KEY CONTOSO_KEY; GOSlå på TDE
-- Alter the database to enable transparent data encryption. ALTER DATABASE ContosoDatabase SET ENCRYPTION ON; GOMed Management Studio, kontrollera att TDE är aktiverat genom att ansluta till din databas med Object Explorer. Högerklicka på din databas, peka på Tasks och välj sedan 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;Notera
Den
tempdbdatabasen krypteras automatiskt när en databas aktiverar TDE.
Kryptering av säkerhetskopior med en asymmetrisk nyckel från nyckelvalvet
Krypterade säkerhetskopior stöds från och med SQL Server 2014 (12.x). Följande exempel skapar och återställer en backup krypterad med en datakrypteringsnyckel som den asymmetriska nyckeln i nyckelvalvet skyddar.
Database Engine använder Microsoft Entra-applikationens programautentiseringsuppgifter för att komma åt nyckelvalvet under databasladdning. För att begränsa de nyckelvalvsbehörigheter du ger, skapa ett annat klient-ID och en Secret, som beskrivs i Steg 1: Sätt upp autentiseringsmodellen för Database Engine.
Skapa en SQL Server-autentiseringsuppgift för att Database Engine ska använda den 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 Azureersätter du argumentet
IDENTITYmed namnet på ditt Azure Key Vault från steg 2: Skapa ett nyckelvalv. - Om du använder ett privat Azure-moln, till exempel Azure Government, Microsoft Azure som drivs av 21Vianet, eller Azure Germany, ersätt argumentet
IDENTITYmed Vault-URI:n som returneras i Create a key vault and key by using PowerShell. Inkludera intehttps://i nyckelvalvets URI.
- Om du använder globala Azureersätter du argumentet
Ersätt den första delen av argumentet
SECRETmed Microsoft Entra-applikationens klient-ID från Steg 1: Sätt upp autentiseringsmodellen. 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
SECRETmed klienthemligheten från steg 1. I detta exempel ärReplace-With-AAD-Client-Secret. Den sista strängen för argumentetSECRETär en lång sekvens av bokstäver och siffror, utan 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 Database Engine för säkerhetskopieringskryptering
Skapa en SQL Server-inloggning som ska användas av databasmotorn 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 backupkryptering om du redan använt den nyckeln för TDE (föregående exempel), eller kolumnnivåkryptering (följande exempel).
Detta exempel använder den asymmetriska nyckeln
CONTOSO_KEY_BACKUPsom lagras i nyckelvalvet och som du kan importera eller skapa för databasenmastersom du skapade tidigare, enligt beskrivningen i steg 2: Skapa ett nyckelvalv.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 ; GOSäkerhetskopiera databasen
Säkerhetskopiera databasen och specificera kryptering med den asymmetriska nyckeln som lagras i nyckelvalvet.
I följande exempel, notera att om databasen redan var krypterad med TDE, och den asymmetriska nyckeln
CONTOSO_KEY_BACKUPskiljer sig från TDE:s asymmetriska nyckel, så krypteras backupen både av TDE:s asymmetriska nyckel ochCONTOSO_KEY_BACKUP. Mål-SQL Server-instansen behöver båda nycklarna för att dekryptera backupen.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
För att återställa en databasbackup som är krypterad med TDE måste målinstansen för SQL Server först ha en kopia av den asymmetriska nyckelvalvnyckeln som används för kryptering. För att tillhandahålla en kopia:
Om den ursprungliga asymmetriska nyckeln som användes för TDE inte längre finns i nyckelvalvet, återställ säkerhetskopian av nyckelvalvsnyckeln eller importera nyckeln igen från en lokal HSM. För att nyckelns tumavtryck ska matcha det som registrerats i databassäkerhetskopian måste nyckeln använda samma Key Vault-nyckelnamn som den ursprungligen hade.
Tillämpa steg 1 och 2 på den mål-SQL Server-instansen.
När den mål-SQL Server-instansen har tillgång till de asymmetriska nycklar som används för att kryptera backupen, återställ databasen på servern.
Exempel på återställningskod:
RESTORE DATABASE [DATABASE_TO_BACKUP] FROM DISK = N'[PATH TO BACKUP FILE]' WITH FILE = 1, NOUNLOAD, REPLACE; GOMer information om säkerhetskopieringsalternativ finns i BACKUP (Transact-SQL).
Kolumnnivåkryptering genom att använda en asymmetrisk nyckel från nyckelvalvet
I följande exempel skapas en symmetrisk nyckel som skyddas av den asymmetriska nyckeln i nyckelvalvet. Den symmetriska nyckeln krypterar sedan data i databasen.
Viktig
Du kan inte använda samma asymmetriska nyckel för kolumnnivåkryptering om du redan använt den nyckeln för backupkryptering.
Detta exempel använder den asymmetriska nyckeln CONTOSO_KEY_COLUMNS som lagras i nyckelvalvet, som du tidigare har importerat eller skapat, som beskrivs i steg 2: Skapa ett nyckelvalv. För att använda denna asymmetriska nyckel i databasen ContosoDatabase , kör satsen CREATE ASYMMETRIC KEY 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;