Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL-Datenbank
Azure SQL Managed Instance
Um verschlüsselte Daten zu laden, ohne während Massenkopievorgängen Metadatenprüfungen auf dem Server durchzuführen, erstellen Sie den Benutzer mit der ALLOW_ENCRYPTED_VALUE_MODIFICATIONS Option. Diese Option soll von älteren Tools oder Etl-Workflows (Extract-Transform-Load) von Drittanbietern verwendet werden, die always Encrypted nicht verwenden können. Dadurch kann der Benutzer verschlüsselte Daten sicher von einem Tabellensatz mit verschlüsselten Spalten zu einem anderen Tabellensatz mit verschlüsselten Spalten (innerhalb derselben oder zu einer anderen Datenbank) verschieben.
Die Option ALLOW_ENCRYPTED_VALUE_MODIFICATIONS
Sowohl CREATE USER als auch ALTER USER haben eine ALLOW_ENCRYPTED_VALUE_MODIFICATIONS Option. Wenn die Option auf ON festgelegt ist (Standardeinstellung OFF), unterdrückt sie kryptografische Metadatenüberprüfungen auf dem Server in Massenkopiervorgängen. Dadurch kann der Benutzer verschlüsselte Daten zwischen Tabellen oder Datenbanken massenweise kopieren, ohne die Daten zu entschlüsseln.
Szenarien zur Datenmigration
Die folgende Tabelle zeigt die empfohlenen Einstellungen für mehrere Migrationsszenarien.
Massenladen verschlüsselter Daten
Verwenden Sie das folgende Verfahren, um verschlüsselte Daten zu laden.
Legen Sie die Option
ONfür den Benutzer in der Datenbank fest, der das Ziel für den Massenkopievorgang ist. Zum Beispiel:ALTER USER Bob WITH ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = ON;Führen Sie Ihre Massenkopieranwendung oder Ihr Massenkopiertool aus, indem Sie als dieser Benutzer eine Verbindung herstellen. (Wenn Ihre Anwendung einen Always Encrypted-fähigen Clienttreiber verwendet, stellen Sie sicher, dass die Verbindungszeichenfolge für die Datenquelle kein
column encryption setting=enabledenthält, um sicherzustellen, dass die Daten, die aus verschlüsselten Spalten abgerufen werden, verschlüsselt bleiben. Weitere Informationen finden Sie unter Entwickeln von Anwendungen mit Always Encrypted.)Legen Sie die
ALLOW_ENCRYPTED_VALUE_MODIFICATIONSOption wieder aufOFF. Zum Beispiel:ALTER USER Bob WITH ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = OFF;
Potenzial für Datenbeschädigung
Die falsche Verwendung dieser Option kann zur Datenbeschädigung führen. Mit ALLOW_ENCRYPTED_VALUE_MODIFICATIONS der Option kann der Benutzer alle Daten in verschlüsselte Spalten in der Datenbank einfügen, einschließlich daten, die mit verschiedenen Schlüsseln verschlüsselt, falsch verschlüsselt oder gar nicht verschlüsselt sind. Falls der Benutzer versehentlich Daten kopiert, die nicht mithilfe des ordnungsgemäß für die Zielspalte eingerichteten Verschlüsselungsschemas (Spaltenverschlüsselungsschlüssel, Algorithmus, Verschlüsselungstyp) verschlüsselt sind, können die Daten nicht entschlüsselt werden (die Daten sind korrupt). Diese Option muss mit Vorsicht verwendet werden, da sie zur Datenbeschädigung in der Datenbank führen kann.
Das folgende Szenario zeigt, wie nicht ordnungsgemäß importierte Daten zur Datenbeschädigung führen können:
Die Option ist auf
ONfür einen Benutzer festgelegt.Der Benutzer führt die Anwendung aus, die mit der Datenbank verbunden ist. Die Anwendung verwendet Massen-APIs zum Einfügen von Klartextwerten in verschlüsselte Spalten. Die Anwendung erwartet von einem durch Always Encrypted aktivierten Clienttreiber die Verschlüsselung der Daten beim Einfügen. Die Anwendung ist jedoch falsch konfiguriert, sodass sie entweder einen Treiber verwendet, der Always Encrypted nicht unterstützt oder die Verbindungszeichenfolge nicht enthält
column encryption setting=enabled.Die Anwendung sendet Klartextwerte an den Server. Da kryptografische Metadatenüberprüfungen auf dem Server für den Benutzer deaktiviert sind, lässt der Server zu, dass falsche Daten (Klartext statt richtig verschlüsselter Chiffretext) in eine verschlüsselte Spalte eingefügt werden.
Die gleiche oder eine andere Anwendung stellt eine Verbindung mit der Datenbank mithilfe eines Always Encrypted-enabled-Treibers und mit
column encryption setting=enabledin der Verbindungszeichenfolge und ruft die Daten ab. Die Anwendung erwartet, dass die Daten transparent entschlüsselt werden. Der Treiber kann die Daten jedoch nicht entschlüsseln, da es sich dabei um falschen Chiffretext handelt.
Bewährte Vorgehensweise
Verwenden Sie vorgesehene Benutzerkonten für Workloads mit langer Ausführungszeit, die diese Option verwenden.
Für Anwendungen oder Tools, die für kurzzeitige Massenkopiervorgänge gedacht sind und verschlüsselte Daten ohne Entschlüsselung übertragen müssen, stellen Sie die Option ON direkt vor dem Start der Anwendung ein und setzen Sie sie direkt nach Abschluss des Vorgangs wieder auf OFF zurück.
Verwenden Sie diese Option nicht für die Entwicklung neuer Anwendungen. Verwenden Sie stattdessen einen Clienttreiber, der eine API zum Unterdrücken von kryptografischen Metadatenüberprüfungen für eine einzelne Sitzung bietet, z. B. die AllowEncryptedValueModifications Option in .NET Framework-Datenanbieter für SQL Server – siehe Kopieren verschlüsselter Daten mithilfe von SqlBulkCopy.
Verwandte Inhalte
- Immer verschlüsselt
- Migrieren von Daten zu oder aus Spalten mithilfe von Always Encrypted mit dem SQL Server-Import/Export-Assistenten
- BENUTZER ERSTELLEN (Transact-SQL)
- ALTER USER (Transact-SQL)
- Abfragen von Spalten mit Always Encrypted und SQL Server Management Studio
- Entwickeln von Anwendungen mit Always Encrypted