Dela via


SKAPA DATABASKRYPTERINGSNYCKEL (Transact-SQL)

Applies to:SQL ServerAzure SQL Managed InstanceAnalytics Platform System (PDW)

Skapar en krypteringsnyckel för transparent kryptering av en databas. Mer information om transparent data encryption (TDE) finns i Transparent Data Encryption (TDE).

Transact-SQL syntaxkonventioner

Syntax

-- Syntax for SQL Server  

CREATE DATABASE ENCRYPTION KEY  
       WITH ALGORITHM = { AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY }  
   ENCRYPTION BY SERVER   
    {  
        CERTIFICATE Encryptor_Name |  
        ASYMMETRIC KEY Encryptor_Name  
    }  
[ ; ]  
-- Syntax for Parallel Data Warehouse  

CREATE DATABASE ENCRYPTION KEY  
       WITH ALGORITHM = { AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY }  
   ENCRYPTION BY SERVER CERTIFICATE Encryptor_Name   
[ ; ]  

Arguments

MED ALGORITM = { AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY }
Anger krypteringsalgoritmen för krypteringsnyckeln.

Varning

Från och med SQL Server 2016 är alla algoritmer förutom AES_128, AES_192 och AES_256 inaktuella. Om du vill använda äldre algoritmer (rekommenderas inte) måste du ange databasen till databaskompatibilitetsnivå 120 eller lägre.

KRYPTERING EFTER SERVERCERTIFIKAT Encryptor_Name
Anger namnet på krypteringsnyckeln som används för att kryptera databaskrypteringsnyckeln.

KRYPTERING EFTER SERVER ASYMMETRISK NYCKEL Encryptor_Name Anger namnet på den asymmetriska nyckel som används för att kryptera databaskrypteringsnyckeln. För att kryptera databaskrypteringsnyckeln med en asymmetrisk nyckel måste den asymmetriska nyckeln finnas på en utökningsbar nyckelhanteringsprovider.

Anmärkningar

En databaskrypteringsnyckel krävs innan en databas kan krypteras med transparent datakryptering (TDE). När en databas är transparent krypterad krypteras hela databasen på filnivå, utan några särskilda kodändringar. Certifikatet eller den asymmetriska nyckeln som krypterar databaskrypteringsnyckeln måste finnas i systemdatabasen master .

Certifikat eller asymmetriska nycklar som används för TDE är begränsade till en privat nyckelstorlek på 3 072 bitar.

Databaskrypteringsuttryck tillåts endast i användardatabaser.

Det går inte att exportera databaskrypteringsnyckeln från databasen. Den är endast tillgänglig för systemet, för användare som har felsökningsbehörighet på servern och för användare som har åtkomst till de certifikat som krypterar och dekrypterar databaskrypteringsnyckeln.

Databaskrypteringsnyckeln behöver inte återskapas när en databasägare (dbo) ändras.

En databaskrypteringsnyckel skapas automatiskt för en SQL Database-databas. Du behöver inte skapa en nyckel med hjälp av -instruktionen CREATE DATABASE ENCRYPTION KEY .

behörigheter

Kräver KONTROLL-behörighet för databasen och VIEW DEFINITION-behörighet för certifikatet eller den asymmetriska nyckel som används för att kryptera databaskrypteringsnyckeln.

Exempel

Ytterligare exempel med TDE finns i Transparent Data Encryption (TDE), Enable TDE on SQL Server Using EKM och Extensible Key Management Using Azure Key Vault (SQL Server).

A. Skapa en databaskrypteringsnyckel

I följande exempel skapas en databaskrypteringsnyckel med hjälp av algoritmen AES_256 och den privata nyckeln skyddas med ett certifikat med namnet MyServerCert.

USE AdventureWorks2022;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO

B. Återställa en TDE-krypterad databas till en annan instans

Om du vill återställa en TDE-krypterad databas till en annan SQL Server instans måste du först importera certifikatet som skyddar databaskrypteringsnyckeln. Säkerhetskopiera certifikatet och dess privata nyckel från källservern och skapa sedan certifikatet på målinstansen innan du återställer databasen.

Säkerhetskopiera certifikatet på källservern:

-- On the SOURCE server
USE master;
GO
BACKUP CERTIFICATE MyServerCert
TO FILE = 'C:\Backup\MyServerCert.cer'
WITH PRIVATE KEY (
    FILE = 'C:\Backup\MyServerCert.pvk',
    ENCRYPTION BY PASSWORD = '<strong_password>'
);
GO

På målservern skapar du certifikatet från säkerhetskopieringsfilerna och återställer sedan databasen:

-- On the TARGET server
USE master;
GO
CREATE CERTIFICATE MyServerCert
FROM FILE = 'C:\Backup\MyServerCert.cer'
WITH PRIVATE KEY (
    FILE = 'C:\Backup\MyServerCert.pvk',
    DECRYPTION BY PASSWORD = '<strong_password>'
);
GO

-- Now you can restore the TDE-encrypted database
RESTORE DATABASE AdventureWorks2022
FROM DISK = 'C:\Backup\AdventureWorks2022.bak'
WITH MOVE 'AdventureWorks2022_Data' TO 'D:\Data\AdventureWorks2022.mdf',
     MOVE 'AdventureWorks2022_Log' TO 'D:\Data\AdventureWorks2022.ldf';
GO

Viktigt!

Certifikatet måste ha samma namn och skapas från samma säkerhetskopieringsfiler. Om certifikatet inte matchar misslyckas återställningen med ett krypteringsnyckelfel.