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

Transparent Data Encryption 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.

Anmerkung

RDS unterstützt das Importieren oder Exportieren von TDE-Zertifikaten nicht.

Transparent Data Encryption 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.

Anmerkung

Sie können native Sicherungen von TDE-fähigen Datenbanken erstellen, aber Sie können diese Sicherungen nicht in lokalen Datenbanken wiederherstellen. Sie können native Backups von TDE-fähigen On-Premises Datenbanken nicht wiederherstellen.

Eine ausführliche Diskussion über Transparent Data Encryption 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.

Aktivieren von TDE

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

  1. 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.

  2. 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.

    Anmerkung

    In der RDS-Konsole wird die Option als bezeichne TRANSPARENT_DATA_ENCRYPTION. In der AWS CLI und RDS-API heißt sie TDE.

    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.

  3. 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.

Verschlüsseln von Daten

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.

Überlegungen zu Optionsgruppen

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.

Deaktivieren von TDE

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.