{"id":93,"date":"2011-04-10T14:36:08","date_gmt":"2011-04-10T14:36:08","guid":{"rendered":"http:\/\/www.flip-design.de\/?p=93"},"modified":"2011-04-10T14:42:18","modified_gmt":"2011-04-10T14:42:18","slug":"tde-datenbank-verschlusselung","status":"publish","type":"post","link":"https:\/\/www.flip-design.de\/?p=93","title":{"rendered":"TDE: Datenbank Verschl\u00fcsselung"},"content":{"rendered":"<p><a href=\"http:\/\/www.flip-design.de\/wp-content\/uploads\/2011\/04\/dbtrigger_scheme.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.flip-design.de\/wp-content\/uploads\/2011\/04\/dbtrigger_scheme.png\" alt=\"\" title=\"dbtrigger_scheme\" width=\"129\" height=\"157\" class=\"alignleft size-full wp-image-66\" \/><\/a>Durch die in SQL Server 2008 eingef\u00fchrte Funktion TDE (Transparent Data Encryption) werden die Datenbank Dateien physikalisch auf dem Dateisystem verschl\u00fcsselt. Hierbei handelt es sich nicht um die Verschl\u00fcsselung der Daten auf logischer Ebene, also beim Lesen aus den Tabellen o.\u00e4., sondern die Dateien k\u00f6nnen nicht ohne eine Entschl\u00fcsselung auf einem anderen Server wiederhergestellt werden. Weiterhin k\u00f6nnen die Dateien auch nicht via einem HEX Editor o.\u00e4. ausgelesen werden, da auch der komplette Inhalt verschl\u00fcsselt ist.<\/p>\n<p>TDE kostet \u00fcberings laut Microsoft keinerlei Performance. Voraussetzung hierf\u00fcr ist, dass entsprechend CPU Zeit zur Verf\u00fcgung steht, da beim Lesen von Seiten die CPU bei der Entschl\u00fcsselung mehr als sonst gefragt ist.<\/p>\n<p>In diesem Beispiel wird beschrieben wie eine Datenbank mit TDE verschl\u00fcsselt und dann auf einem anderen Server wiederhergestellt wird:<\/p>\n<p>Zuerst wird auf der Instanz ein Master Schl\u00fcssel erzeugt, mit dem dann die Zertifikate verschl\u00fcsselt werden:<br \/>\n<code>USE master<br \/>\nGO<br \/>\nCREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Kennwort1!'<br \/>\nGO<\/code><\/p>\n<p>Nun wird das Zertfikat erstellt:<br \/>\n<code>USE master<br \/>\nGO<br \/>\nCREATE CERTIFICATE TDE WITH SUBJECT = 'Zertifikat fuer die TDE Datenbank'<br \/>\nGO<\/code><\/p>\n<p>Zur Vollst\u00e4ndigkeit des Beispiels wird noch die Datenbank &#8222;TDE&#8220; erstellt, die gesch\u00fctzt werden soll:<br \/>\n<code>CREATE DATABASE TDE<br \/>\nGO<br \/>\nUSE TDE<br \/>\nGO<br \/>\nCREATE TABLE dbo.Daten (wert varchar(100));<br \/>\nGO<br \/>\nINSERT INTO dbo.Daten VALUES ('Daten');<br \/>\nGO<\/code><\/p>\n<p>Nun wird ein Verschl\u00fcsselungsschl\u00fcssel erzeugt, der die Datenbank sp\u00e4ter verschl\u00fcsselt.<br \/>\nUnterst\u00fctzt werden: AES 128, AES 192, AES 256, TRIPLE DES<br \/>\n<code>USE TDE<br \/>\nGO<br \/>\nCREATE DATABASE ENCRYPTION KEY<br \/>\nWITH ALGORITHM = AES_128<br \/>\nENCRYPTION BY SERVER CERTIFICATE TDE<br \/>\nGO<\/code><\/p>\n<p>Nun sollte zuerst das Zertifikat gesichert werden:<br \/>\n<code>USE master<br \/>\nGO<br \/>\nBACKUP CERTIFICATE TDE TO FILE = 'c:\\TDE_certificate'<br \/>\nWITH PRIVATE KEY ( FILE = 'c:\\TDE_certificate_key' ,<br \/>\nENCRYPTION BY PASSWORD = 'Kennwort1!' )<br \/>\nGO<\/code><br \/>\nDabei werden 2 Dateien erzeugt: Die eigentliche Zertifikatsdatei und der Schl\u00fcssel in der zweiten Datei. Diese Datei wird durch ein Kennwort gesch\u00fctzt.<\/p>\n<p>Verschl\u00fcsselung anwenden:<br \/>\n<code>ALTER DATABASE TDE SET ENCRYPTION ON;<br \/>\nGO<\/code><\/p>\n<p>Nun ist die Datenbank verschl\u00fcsselt und kann physikalisch nicht ohne Schl\u00fcssel ausgelesen werden. Die Verschl\u00fcsselung wirkt sich nicht auf die Datensicherung (Voll-, Differentiell- oder Transaktionslogsicherung) aus. <\/p>\n<p>Nun wird eine Vollsicherung der Datenbank durchgef\u00fchrt, die sp\u00e4ter auf einem anderen Server wiederhergestellt werden soll:<br \/>\n<code>backup database TDE to disk = 'C:\\temp\\TDE.bak' WITH INIT<\/code><\/p>\n<p>Nun kann ein neuer Master-Schl\u00fcssel auf dem anderen Server erzeugt werden. Das Kennwort muss nicht identisch mit dem Kennwort vom vorherigen Server sein.<br \/>\n<code>CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Kennwort2!';<br \/>\nGO<\/code><\/p>\n<p>Nun wird das Zertifikat wiederhergestellt. Hier kann ein beliebiger neuer Name ebenfalls gew\u00e4hlt werden:<br \/>\n<code>CREATE CERTIFICATE TDE_SERVER2 FROM FILE = 'c:\\TDE_certificate'<br \/>\nWITH PRIVATE KEY ( FILE = 'c:\\TDE_certificate_key' ,<br \/>\nDECRYPTION BY PASSWORD = 'Kennwort1!' )<br \/>\nGO<\/code><\/p>\n<p>Nun wo das Zertifikat wierhergestellt ist, kann auch die Datensicherung widerhergestellt werden:<br \/>\n<code>RESTORE DATABASE [TDE_RESTORE] FROM  DISK = N'C:\\temp\\TDE.bak' WITH  FILE = 1,  MOVE N'TDE' TO N'F:\\TDE_RESTORE.mdf',  MOVE N'TDE_log' TO N'F:\\TDE_RESTORE_1.LDF',  NOUNLOAD,  STATS = 10<br \/>\nGO<\/code><\/p>\n<p>Fazit:<br \/>\nTDE eignet sich hervorragend zum Schutz der Datendateien vor unbefugten Zugriff und kostet, in meinen Tests, keinerlei zus\u00e4tzliche Ressourcen oder Zeit beim Zugriff auf die Datenbank.<br \/>\nJedoch bleibt immer zu beachten, dass man Zugriff auf das Kennwort wie auch auf das Zertifikat ben\u00f6tigt wenn eine Datensicherung wiederhergestellt werden muss. Weiterhin bleibt zu beachten, dass es sich hier um ein Enterprise Feature handelt.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Durch die in SQL Server 2008 eingef\u00fchrte Funktion TDE (Transparent Data Encryption) werden die Datenbank Dateien physikalisch auf dem Dateisystem verschl\u00fcsselt. Hierbei handelt es sich nicht um die Verschl\u00fcsselung der Daten auf logischer Ebene, also beim Lesen aus den Tabellen &hellip; <a href=\"https:\/\/www.flip-design.de\/?p=93\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[7,3,14,15],"tags":[],"_links":{"self":[{"href":"https:\/\/www.flip-design.de\/index.php?rest_route=\/wp\/v2\/posts\/93"}],"collection":[{"href":"https:\/\/www.flip-design.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.flip-design.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.flip-design.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.flip-design.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=93"}],"version-history":[{"count":5,"href":"https:\/\/www.flip-design.de\/index.php?rest_route=\/wp\/v2\/posts\/93\/revisions"}],"predecessor-version":[{"id":98,"href":"https:\/\/www.flip-design.de\/index.php?rest_route=\/wp\/v2\/posts\/93\/revisions\/98"}],"wp:attachment":[{"href":"https:\/\/www.flip-design.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=93"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.flip-design.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=93"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.flip-design.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=93"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}