Transparent Data Encryption / TDE in SQL Server: Freigabe, Schlüssel & Zertifikate, Sicherungen, Wiederherstellung

Transparent Data Encryption / TDE in SQL Server: Freigabe, Schlüssel & Zertifikate, Sicherungen, Wiederherstellung

Transparente Datenverschlüsselung (Transparent Data Encryption, TDE) verschlüsselt SQL Server-, Azure SQL-Datenbank- und Azure SQL Data Warehouse-Datendateien, bekannt als „Verschlüsselung ruhender Daten“. Sie können verschiedene Vorsichtsmaßnahmen treffen, um eine Datenbank abzusichern, beispielsweise ein sicheres System entwerfen, vertrauliche Datenbestände verschlüsseln oder eine Firewall für die Datenbankserver einrichten. Wenn jedoch physische Medien (etwa Laufwerke oder Sicherungsbänder) gestohlen werden, muss ein böswilliger Benutzer die Datenbank einfach nur wieder herstellen und kann dann die Daten durchsuchen. Eine Lösung dieses Problems besteht darin, die sensiblen Daten in der Datenbank zu verschlüsseln, und den für die Verschlüsselung der Daten verwendeten Schlüssel mit einem Zertifikat zu schützen. Dadurch kann niemand die Daten verwenden, der nicht im Besitz der Schlüssel ist. Diese Art des Schutzes muss jedoch im Voraus geplant werden.

Nach dem Lesen von https://docs.microsoft.com/en-us/sql/relational-databases/security/encryption/transparent-data-encryption-tde und einigen Blogs habe ich den folgenden Workflow entwickelt, um:

  • TDE für die Datenbank aktivieren
  • Verschlüsselungsschlüssel & Zertifikatsicherung
  • Datenbank aus Sicherung wiederherstellen

Microsoft SQL Server TDE Architektur

 

Schritte zum Ausführen von Vielen, bevor Sie TDE einschalten

Bevor Sie TDE einschalten, BITTE SICHERN, dass keine Verbindungen zur Datenbank vorhanden sind. Der beste Weg ist, die Datenbank in den Einzelbenutzermodus umzuschalten. Andernfalls können Sie Deadlocks begegnen, die Ihren Verschlüsselungsprozess stecken und auch verhindern, dass Ihre Anwendung eine Verbindung zur Datenbank herstellt. Bitte überprüfen Sie ganz unten auf diesem Artikel, um eine mögliche Lösung für solche Fälle zu finden.

 

Datenbankstammschlüssel in [master] Datenbank erstellen

Mit diesem Schlüssel werden alle anderen Schlüssel in dieser Datenbank verschlüsselt.

USE master;  
GO  
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '123QWEasd';
GO

 

Zertifikat erstellen, das den Datenbank-Verschlüsselungsschlüssel (Database Encryption Key, DEK) verschlüsselt

Dieses Zertifikat verschlüsselt DEK, das sich in der Zieldatenbank befindet und wird verwendet, um die Datenbank selbst zu verschlüsseln.

USE master;  
GO  
CREATE CERTIFICATE MyServerName_SqlTdeMasterKeyCert WITH SUBJECT = 'MyServerName_SqlTdeMasterKeyCert';  
GO

 

Erstellen Sie einen Datenbank-Verschlüsselungsschlüssel (DEK) in der Datenbank

USE MyDatabaseName;
GO  
CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128  
ENCRYPTION BY SERVER CERTIFICATE MyServerName_SqlTdeMasterKeyCert;  
GO  

 

TDE für die Datenbank aktivieren

USE MyDatabaseName;  
GO  
ALTER DATABASE MyDatabaseName SET ENCRYPTION ON;  
GO

 

Überprüfe den Verschlüsselungsstatus der Datenbank

SELECT
db.name,
db.is_encrypted,
dm.encryption_state,
dm.percent_complete,
dm.key_algorithm
FROM sys.databases db JOIN sys.dm_database_encryption_keys dm
ON db.database_id = dm.database_id WHERE db.name = 'MyDatabaseName'

 

Backup-Datenbank Master Key & Zertifikat (mit privatem Schlüssel)

Verwenden Sie diese Schritte, um Datenbank-Master-Schlüssel und Zertifikat zu sichern, um sie später wiederherzustellen, während die Datenbank von der Sicherung auf einem anderen Server wiederhergestellt wird.

USE master;   
GO  
OPEN MASTER KEY DECRYPTION BY PASSWORD = '123QWEasd';   

BACKUP MASTER KEY TO FILE = 'd:\temp\MyServerName_DbMasterKey'   
    ENCRYPTION BY PASSWORD = '123QWEasd2';
GO

USE master; 
GO 
BACKUP CERTIFICATE MyServerName_SqlTdeMasterKeyCert
TO FILE = 'd:\temp\MyServerName_SqlTdeMasterKeyCert.cer'
WITH PRIVATE KEY
(FILE = 'd:\temp\MyServerName_SqlTdeMasterKey.pvk',
ENCRYPTION BY PASSWORD = '123QWEasd3')

 

Datenbankschlüssel und Zertifikat wiederherstellen

Diese Schritte werden auf einem anderen Server durchgeführt, wo Sie Ihre Datenbank aus der Sicherung wiederherstellen möchten.

USE master;
GO  
RESTORE MASTER KEY   
    FROM FILE = 'd:\temp\MyServerName_DbMasterKey'   
    DECRYPTION BY PASSWORD = '123QWEasd2' --password to decrypt backup
    ENCRYPTION BY PASSWORD = '123QWEasd'; --password to encrypt restored Master Key in the current database.
GO  

USE master; 
GO 
OPEN MASTER KEY DECRYPTION BY PASSWORD = '123QWEasd';
GO
CREATE CERTIFICATE MyServerName_SqlTdeMasterKeyCert
FROM FILE = 'd:\temp\MyServerName_SqlTdeMasterKeyCert.cer'     
WITH PRIVATE KEY (FILE = 'd:\temp\MyServerName_SqlTdeMasterKey.pvk', 
DECRYPTION BY PASSWORD = '123QWEasd3')

 

Datenbank aus der Sicherung wiederherstellen

USE master
GO 
OPEN MASTER KEY DECRYPTION BY PASSWORD = '123QWEasd';
GO
RESTORE DATABASE MyDatabaseName FROM  DISK = N'd:\temp\MyDatabaseNameBackup.bak' 
WITH  FILE = 1, NOUNLOAD,  REPLACE,  STATS = 5;

 

Fehlerbehebung bei TDE

Es gibt eine Anzahl von Fällen, wenn die TDE-Verschlüsselung während der Erstverschlüsselung stecken kann. Möglicherweise - bei der Durchführung von Pre-Enryption Scans. Wenn dies der Fall ist, können Sie versuchen, den Scan zu stoppen und die Verschlüsselung wieder zu aktivieren:

DBCC TRACEON(5004)
GO
DBCC TRACEOFF(5004)
GO
ALTER DATABASE MyDatabaseName
SET ENCRYPTION ON

 

 

Tags: ms sql server (de)

Drucken