Unterstützung für transparente Datenverschlüsselung in SQL Server - Amazon Relational Database Service

Unterstützung für transparente Datenverschlüsselung in SQL Server

Amazon RDS unterstützt die Verwendung von transparenter Datenverschlüsselung (Transparent Data Encryption, TDE), um gespeicherte Daten auf Ihren DB-Instances mit Microsoft SQL Server zu verschlüsseln. TDE verschlüsselt die Daten automatisch, bevor sie in den Speicher geschrieben werden, und entschlüsselt sie automatisch, wenn die Daten aus dem Speicher gelesen werden.

Amazon RDS unterstützt TDE für die folgenden SQL Server-Versionen und -Editionen:

  • SQL Server 2019: Standard- und Enterprise Editions

  • SQL Server 2017 Enterprise Edition

  • SQL Server 2016 Enterprise Edition

  • SQL Server 2014 Enterprise Edition

  • SQL Server 2012 Enterprise Edition

Um die transparente Datenverschlüsselung für eine RDS SQL Server-DB-Instance zu aktivieren, geben Sie die Option TDE in einer RDS-Optionsgruppe an, die dieser DB-Instance zugeordnet ist.

Die Transparente Datenverschlüsselung für SQL Server verwaltet Verschlüsselungsschlüssel durch die Verwendung einer zweistufigen Schlüsselarchitektur. Zum Schutz der Datenverschlüsselungsschlüssel wird ein Zertifikat verwendet, das aus dem Datenbank-Hauptschlüssel generiert wird. Der Datenbankverschlüsselungsschlüssel führt die eigentliche Verschlüsselung und Entschlüsselung der Daten auf der Benutzerdatenbank aus. Amazon RDS sichert und verwaltet den Datenbank-Hauptschlüssel und das TDE-Zertifikat. Um mehrere Sicherheitsstandards einzuhalten, arbeitet Amazon RDS daran, eine automatische, periodische Hauptschlüssel-Rotation umzusetzen.

Die transparente Datenverschlüsselung wird in Szenarien verwendet, in denen Sie sensible Daten verschlüsseln müssen. So beispielsweise, wenn Sie einem Drittanbieter Datendateien und Sicherungen zur Verfügung stellen möchten, oder in Fällen, oder in denen es um sicherheitsbezogene Fragen zur Einhaltung gesetzlicher Vorschriften geht. Sie können die Systemdatenbanken für SQL Server nicht verschlüsseln, wie z. B. model- oder master-Datenbanken.

Eine ausführliche Diskussion über transparente Datenverschlüsselung ist nicht Gegenstand dieses Leitfadens, aber Sie sollten die Sicherheitsstärken und -schwächen der einzelnen Verschlüsselungsalgorithmen und Schlüssel verstehen. Weitere Informationen zu transparenter Datenverschlüsselung für SQL Server finden Sie unter Transparent Data Encryption (TDE) auf der Microsoft-Website.

Bestimmen Sie, ob Ihre DB-Instance bereits mit einer Optionsgruppe verknüpft ist, die über die Option TDE verfügt. Um die Optionsgruppe anzuzeigen, der die DB-Instance zugeordnet ist, können Sie die RDS-Konsole, den AWS CLI-Befehl describe-db-instance oder die API-Operation DescribeDBInstances verwenden.

Der Prozess zum Aktivieren der transparenten Datenverschlüsselung auf einer SQL Server DB-Instance ist wie folgt:

  1. Wenn die DB-Instance keiner Optionsgruppe zugeordnet ist, für die TDE aktiviert ist, haben Sie zwei Optionen. Sie können eine Optionsgruppe erstellen und die Option TDE hinzufügen oder Sie können die zugeordnete Optionsgruppe abändern und sie ihr hinzufügen. Weitere Informationen zum Erstellen oder Ändern einer Optionsgruppe finden Sie unter Arbeiten mit Optionsgruppen. Weitere Informationen zum Hinzufügen einer Option zu einer Optionsgruppe finden Sie unter Hinzufügen einer Option zu einer Optionsgruppe.

  2. Ordnen Sie der DB-Instance eine Optionsgruppe zu, die über die Option TDE verfügt. Weitere Informationen zum Zuordnen einer DB-Instance zu einer Optionsgruppe finden Sie unter Ändern einer Amazon RDS-DB-Instance.

Wenn die Option TDE zu einer Optionsgruppe hinzugefügt wird, generiert Amazon RDS ein Zertifikat, das im Verschlüsselungsprozess verwendet wird. Sie können das Zertifikat dann verwenden, um SQL-Anweisungen auszuführen, die Daten in einer Datenbank auf der DB-Instance verschlüsseln. Das folgende Beispiel verwendet das von RDS erstellte Zertifikat genannt RDSTDECertificateName welches verwendet wird um eine Datenbank genannt customerDatabasezu verschlüsseln.

---------- Enabling TDE ------------- -- Find a RDSTDECertificate to use USE [master] GO SELECT name FROM sys.certificates WHERE name LIKE 'RDSTDECertificate%' GO USE [customerDatabase] GO -- Create DEK using one of the certificates from the previous step CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER CERTIFICATE [RDSTDECertificateName] GO -- Enable encryption on the database ALTER DATABASE [customerDatabase] SET ENCRYPTION ON GO -- Verify that the database is encrypted USE [master] GO SELECT name FROM sys.databases WHERE is_encrypted = 1 GO SELECT db_name(database_id) as DatabaseName, * FROM sys.dm_database_encryption_keys GO

Wie lange die Verschlüsselung einer SQL Server-Datenbank mit TDE dauert, ist von mehreren Faktoren abhängig. Dazu gehören die Größe der DB-Instance, ob PIOPS für die Instance aktiviert ist, die Datenmenge und andere Faktoren.

Die Option TDE ist eine persistente Option, die nur dann aus einer Optionsgruppe entfernt werden kann, wenn die Verknüpfungen aller DB-Instances und Sicherungen mit der Optionsgruppe aufgehoben wurden. Sobald Sie die Option TDE zu einer Optionsgruppe hinzufügen, kann die Optionsgruppe nur mit DB-Instances verknüpft werden, die TDE verwenden. Weitere Information zu persistenten Optionen in einer Optionsgruppe, finden Sie unter Übersicht über die Optionsgruppen_.

Da die Option TDE eine persistente Option ist, kann es zu einem Konflikt zwischen der Optionsgruppe und einer zugehörigen DB-Instance kommen. Sie können in den folgenden Situationen einen Konflikt zwischen der Optionsgruppe und einer zugehörigen DB-Instance haben:

  • Die aktuelle Optionsgruppe verfügt über die Option TDE. Sie ersetzen sie durch eine Optionsgruppe, die die Option TDE nicht aufweist.

  • Sie stellen von einem DB-Snapshot auf eine neue DB-Instance wieder her, die keine Optionsgruppe mit der Option TDE enthält. Weitere Informationen zu diesem Szenario finden Sie unter Überlegungen zu Optionsgruppen.

Um TDE für eine DB-Instance zu deaktivieren, stellen Sie zunächst sicher, dass keine verschlüsselten Objekte mehr auf der DB-Instance vorhanden sind, indem Sie die Objekte entweder entschlüsseln oder löschen. Wenn verschlüsselte Objekte auf der DB-Instance vorhanden sind, können Sie TDE für die DB-Instance nicht deaktivieren. Wenn Sie die Konsole verwenden, um die Option TDE aus einer Optionsgruppe zu entfernen, wird auf der Konsole angegeben, dass die Verarbeitung durchgeführt wird. Zudem wird ein Fehlerereignis erstellt, wenn die Optionsgruppe mit einer verschlüsselten DB-Instance oder einem DB-Snapshot verknüpft ist.

Das folgende Beispiel entfernt die TDE-Verschlüsselung aus einer Datenbank mit dem Namen customerDatabase.

------------- Removing TDE ---------------- USE [customerDatabase] GO -- Disable encryption on the database ALTER DATABASE [customerDatabase] SET ENCRYPTION OFF GO -- Wait until the encryption state of the database becomes 1. The state is 5 (Decryption in progress) for a while SELECT db_name(database_id) as DatabaseName, * FROM sys.dm_database_encryption_keys GO -- Drop the DEK used for encryption DROP DATABASE ENCRYPTION KEY GO -- Alter to SIMPLE Recovery mode so that your encrypted log gets truncated USE [master] GO ALTER DATABASE [customerDatabase] SET RECOVERY SIMPLE GO

Wenn alle Objekte entschlüsselt werden, haben Sie zwei Optionen. Sie können die DB-Instance so ändern, dass sie einer Optionsgruppe ohne die Option TDE zugeordnet ist. Oder Sie können die Option TDE aus der Optionsgruppe entfernen.