Konfigurieren der Spaltenverschlüsselung unter Verwendung von Always Encrypted mit einem DAC-Paket

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

Ein DAC-Paket (data-tier application, Datenschichtanwendung), auch bekannt als DACPAC, ist eine portable Einheit der SQL Server-Datenbankbereitstellung, die alle SQL Server-Objekte einschließlich Tabellen und Spalten in den Tabellen definiert. Wenn Sie einen DACPAC in einer Datenbank veröffentlichen (wenn Sie eine Datenbank mit einem DACPAC aktualisieren), wird das Schema der Zieldatenbank aktualisiert, um dem Schema in DACPAC zu entsprechen. Sie können eine DACPAC-Datei mithilfe des Assistenten zum Aktualisieren von Datenebenenanwendungen in SQL Server Management Studio, PowerShell oder sqlpackage veröffentlichen.

In diesem Artikel werden besondere Überlegungen zum Aktualisieren einer Datenbank behandelt, wenn die DACPAC oder die Zieldatenbank Spalten enthält, die mit Always Encrypted geschützt sind. Wenn das Verschlüsselungsschema für eine Spalte in der DACPAC-Datei vom Verschlüsselungsschema für eine vorhandene Spalte in der Zieldatenbank abweicht, führt die Veröffentlichung der DACPAC-Datei dazu, dass die in der Spalte gespeicherte Daten verschlüsselt, entschlüsselt oder erneut verschlüsselt werden. Ausführlichere Informationen finden Sie in der folgenden Tabelle.

Bedingung Aktion
Die Spalte wird in der DACPAC-Datei verschlüsselt, nicht in der Datenbank. Die Daten in der Spalte werden verschlüsselt.
Die Spalte ist im DACPAC nicht verschlüsselt, sondern in der Datenbank. Die Daten in der Spalte werden entschlüsselt (die Verschlüsselung wird für die Spalte entfernt).
Die Spalte wird sowohl in DACPAC als auch in der Datenbank verschlüsselt, die Spalte in DACPAC verwendet jedoch einen anderen Verschlüsselungstyp oder einen anderen Spaltenverschlüsselungsschlüssel als die entsprechende Spalte in der Datenbank. Die Daten in der Spalte werden entschlüsselt und anschließend neu verschlüsselt, damit sie der Verschlüsselungskonfiguration in DACPAC-Datei entsprechen.

Das Bereitstellen eines DAC-Pakets kann auch dazu führen, dass Metadatenobjekte für Spaltenhauptschlüssel oder Spaltenverschlüsselungsschlüssel für Always Encrypted erstellt oder entfernt werden.

Überlegungen zur Leistung

Um kryptografische Vorgänge auszuführen, muss ein Tool, das Sie zum Bereitstellen einer DACPAC verwenden, die Daten aus der Datenbank herausholen. Das Tool erstellt eine neue Tabelle (oder Tabellen) mit der gewünschten Verschlüsselungskonfiguration in der Datenbank, lädt alle Daten aus den ursprünglichen Tabellen, führt die angeforderten kryptografischen Vorgänge aus, lädt die Daten in die neue(n) Tabelle(n) hoch und vertauscht dann die ursprüngliche(n) Tabelle(n) mit der/den neuen Tabelle(n). Das Ausführen kryptografischer Vorgänge kann einige Zeit in Anspruch nehmen. Während dieser Zeit steht Ihre Datenbank nicht zum Schreiben von Transaktionen zur Verfügung.

Hinweis

Wenn Sie SQL Server 2019 (15.x) verwenden und Ihre SQL Server-Instanz mit einer sicheren Enklave konfiguriert ist, können Sie kryptografische Operationen an Ort und Stelle ausführen, ohne Daten aus der Datenbank zu verschieben. Informationen hierzu finden Sie unter Konfigurieren einer direkten Spaltenverschlüsselung mithilfe von Always Encrypted mit Secure Enclaves. Die Verschlüsselung am Speicherort ist für DACPAC-Bereitstellungen nicht verfügbar.

Berechtigungen zum Veröffentlichen eines DAC-Pakets, wenn Always Encrypted eingerichtet ist

Zum Veröffentlichen des DAC-Pakets, wenn Always Encrypted in DACPAC oder in der Zieldatenbank eingerichtet ist, benötigen Sie möglicherweise einige oder alle der folgenden Berechtigungen, je nach den Unterschieden zwischen dem Schema im DACPAC und dem Zieldatenbankschema.

ALTER ANY COLUMN MASTER KEY, ALTER ANY COLUMN ENCRYPTION KEY, VIEW ANY COLUMN MASTER KEY DEFINITION, VIEW ANY COLUMN ENCRYPTION KEY DEFINITION

Wenn der Upgradevorgang einen Datenverschlüsselungsvorgang auslöst, benötigen Sie auch Schlüsselspeicherberechtigungen, um auf Ihren Spaltenhauptschlüssel zuzugreifen und diesen zu verwenden. Ausführliche Informationen zu Schlüsselspeicherberechtigungen finden Sie unter Erstellen und Speichern von Spaltenhauptschlüsseln für Always Encrypted im für Ihren Schlüsselspeicher relevanten Abschnitt.