Always Encrypted in Azure SQL Databases

In vielen Lösungen mit Microsoft-Technologien steckt SQL Server drin. Um Daten in der Cloud-Umgebung im SQL Server abzusichern, bietet Microsoft nun das Feature “Always Encrypted in Azure SQL Databases” an. Always Encrypted hilft somit, Daten bereits auf der Client-Seite automatisiert zu verschlüsseln und zu schützen.

Microsoft nimmt das Thema Datenschutz sehr ernst und informiert ausführlich über Verfahren und Sicherheitsmaßnahmen in der Azure Cloud, etwa im Trust-Center oder im WindowsAzure-SecurityPrivacyCompliance-Dokument. Aus organisatorischer und technischer Sicht gibt es somit viele Technologien und Möglichkeiten, Daten zu schützen.

Welche Daten in der Cloud speichern?

Letztlich entscheidet der Kunde selbst, welche Daten wo und wie abgelegt werden. In der Realität habe ich allerdings auch oft den Spruch “Cost (always) beats Security” erlebt. Nun, Security ist wichtig und kann Geld kosten, keine Frage. Mit Cloud-Technologien kann man allerdings in vielen Fällen eine höhere Security zu einem geringen Preis erreichen, Standardisierung sei Dank. Natürlich, um ein weiteres (IT) Klischee zu verwenden: “It depends” – Jedes Projekt hängt immer vom Szenario ab und muss individuell entschieden werden, wie die Schere zwischen Verfügbarkeit, Skalierbarkeit, Umsetzung, Kosten und Security aussieht. Nun gut, zurück zum eigentlichen Thema…

Always Encrypted in Microsoft SQL

Hier geht es direkt zur Ankündigung Always Encrypted now generally available in Azure SQL Database.

image

Wofür?

Always Encrypted ist eine Client-seitige Verschlüsselungstechnologie, die zum Schutz von sensitiven Daten dient. Dies können etwa persönliche Daten wie Kreditkartennummern, PINs, Sozialversicherungs- oder Geburtsdaten sein, die in einer SQL Datenbank gespeichert werden.

Wie?

Das Verfahren sieht dabei vor, dass solche Daten in einer App auf dem Client verschlüsselt werden und (bereits verschlüsselt) in einer entfernten SQL Datenbank persistiert werden. Die Datenbank-Engine erhält hierbei niemals den Key zum Entschlüsseln der Daten. Datenbank-Admins können so die gespeicherten Daten nicht sehen oder verwenden, dies bleibt den Usern überlassen, welche die Daten besitzen – und nicht jenen Usern, welche die Daten “verwalten”. Die Grafik oben zeigt die grundsätzliche Funktionsweise.

Das initiale Setup von Always Encrypted erfordert die Erzeugung von Always Encrypted Keys, Key Metadaten, Konfiguration von verschlüsselten Eigenschaften bestimmter Datenbank-Spalten  und/oder Verschlüsseln von eventuell bereits vorhandenen Daten. Manche diese Aufgaben werden in Transact-SQL nicht direkt unterstützt und erfordern eigene Client-Side Tools, SQL Management Studio (SSMS) oder PowerShell. Die folgende Tabelle liefert einen Überblick.

image

Transparenz

Always Encrypted stellt die Ver- und Entschlüsselung transparent für eine Applikation bereit. Das erfolgt durch einen Treiber, welcher Daten in der Client-App mit einem eigenen Key automatisch ver- und entschlüsselt, etwa wenn Daten gespeichert werden oder umgekehrt Abfragen gegen die Datenbank erfolgen . Die Applikation muss sich also nicht selbst um diese Security-Mechanismen kümmern, sondern kann herkömmlich mit existierender Semantik entwickelt werden.

Sicherheit

Die Verschlüsselungsschlüssel (ein kompliziertes Wort…) werden im Windows-Zertifikatspeicher gespeichert. Always Encrypted verwendet den Algorithmus AEAD_AES_256_CBC_HMAC_SHA_256 und den Modus “Blockchiffreverkettung” (Cipher Block Chaining; CBC) mit einem Anfangswert namens Initialisierungsvektor (IV) zum Verschlüsseln von Daten in der Datenbank. Der MSDN-Artikel „Immer verschlüsselt“ (Datenbankmodul) informiert über die Grundlagen, Always Encrypted-Kryptografie über die verwendeten Verfahren.

Wo?

Always Encrypted steht in SQL Server 2016 und Azure SQL Database zur Verfügung.

Wie?

Wer sich das Ganze im Detail ansehen möchte, findet auf Channel 9 einen 15-minütigen Webcast unter Keeping Sensitive Data Secure with Always Encrypted.

Mehr…

Wer sich weiter über das Thema “Trust in Cloud” informieren möchte findet eine eigene Webcast Serie über verschiedene Sicherheitsmechanismen von unseren Microsoft Kollegen und von Community Kollegen Rainer Stropek und Martina Grom auf Channel 9: Series/Trust-in-Cloud.

Mit der automatischen Ver- und Entschlüsselung auf Client-Seite steht ein wirksamer Weg zum integrierten Datenschutz in Microsoft SQL Server 2016 und SQL Azure bereit. Viel Erfolg mit Always Encrypted now generally available in Azure SQL Database!