Tutorial: Erste Schritte mit Always Encrypted
Gilt für: SQL Server
Azure SQL-Datenbank
Azure SQL Managed Instance
In diesem Tutorial werden Ihnen die erste Schritte mit Always Encrypted vermittelt. Es wird Folgendes gezeigt:
- So verschlüsseln Sie ausgewählte Spalten in Ihrer Datenbank.
- So fragen Sie verschlüsselte Spalten ab.
Hinweis
Wenn Sie nach Informationen zu Always Encrypted mit sicheren Enklaven suchen, lesen Sie stattdessen die folgenden Lernprogramme:
Voraussetzungen
Für dieses Tutorial benötigen Sie Folgendes:
- Eine leere Datenbank in Azure SQL-Datenbank, Azure SQL Managed Instance oder SQL Server. In den folgenden Anweisungen wird davon ausgegangen, dass der Datenbankname ContosoHR ist. Sie müssen ein Besitzer der Datenbank sein (ein Mitglied der db_owner Rolle). Informationen zum Erstellen einer Datenbank finden Sie in der Schnellstartanleitung: Erstellen einer einzelnen Datenbank – Azure SQL-Datenbank oder Erstellen einer Datenbank in SQL Server.
- Optional, aber empfohlen, insbesondere, wenn Sich Ihre Datenbank in Azure befindet: ein Schlüsseltresor in Azure Key Vault. Informationen zum Erstellen eines Schlüsseltresors finden Sie unter Schnellstart: Erstellen eines Schlüsseltresors über das Azure-Portal.
- Wenn für Ihren Schlüsseltresor das Berechtigungsmodell mit Zugriffsrichtlinien gilt, stellen Sie sicher, dass Sie im Schlüsseltresor über die folgenden Berechtigungen verfügen:
get
,list
,create
,unwrap key
,wrap key
,verify
,sign
. Weitere Informationen finden Sie unter Zuweisen einer Key Vault-Zugriffsrichtlinie. - Wenn Sie das Berechtigungsmodell mit rollenbasierter Zugriffssteuerung (Role-Based Access Control, RBAC) von Azure verwenden, stellen Sie sicher, dass Sie Mitglied der Rolle Key Vault-Kryptografiebeauftragter für Ihren Schlüsseltresor sind. Weitere Informationen finden Sie unter Gewähren des Zugriffs auf Key Vault-Schlüssel, -Zertifikate und -Geheimnisse mit der rollenbasierten Zugriffssteuerung in Azure.
- Wenn für Ihren Schlüsseltresor das Berechtigungsmodell mit Zugriffsrichtlinien gilt, stellen Sie sicher, dass Sie im Schlüsseltresor über die folgenden Berechtigungen verfügen:
- Die neueste Version von SQL Server Management Studio (SSMS) oder die neueste Version der SqlServer und Az PowerShell-Module. Das Az PowerShell-Modul ist nur erforderlich, wenn Sie Azure Key Vault verwenden.
Schritt 1: Erstellen und Auffüllen des Datenbankschemas
In diesem Schritt erstellen Sie das HR-Schema und die Tabelle Angestellte. Anschließend füllen Sie die Tabelle mit einigen Daten auf.
Stellen Sie eine Verbindung mit Ihrer Datenbank her. Anweisungen zum Herstellen einer Verbindung mit einer Datenbank über SSMS finden Sie in der Schnellstartanleitung: Verbinden und Abfragen eines Azure SQL-Datenbank oder einer Azure SQL Managed Instance mit SQL Server Management Studio (SSMS) oder Schnellstart: Verbinden und Abfragen einer SQL Server-Instanz mit SQL Server Management Studio (SSMS).
Öffnen Sie ein neues Abfragefenster für die ContosoHR Datenbank .
Fügen Sie die folgenden Anweisungen ein, und führen Sie sie aus, um eine neue Tabelle namens Mitarbeiter zu erstellen.
CREATE SCHEMA [HR]; GO CREATE TABLE [HR].[Employees] ( [EmployeeID] [int] IDENTITY(1,1) NOT NULL , [SSN] [char](11) NOT NULL , [FirstName] [nvarchar](50) NOT NULL , [LastName] [nvarchar](50) NOT NULL , [Salary] [money] NOT NULL ) ON [PRIMARY];
Fügen Sie die folgenden Anweisungen ein, und führen Sie sie aus, um der Tabelle Mitarbeiter einige Mitarbeiterdatensätze hinzuzufügen.
INSERT INTO [HR].[Employees] ( [SSN] , [FirstName] , [LastName] , [Salary] ) VALUES ( '795-73-9838' , N'Catherine' , N'Abel' , $31692 ); INSERT INTO [HR].[Employees] ( [SSN] , [FirstName] , [LastName] , [Salary] ) VALUES ( '990-00-6818' , N'Kim' , N'Abercrombie' , $55415 );
Schritt 2: Verschlüsseln von Spalten
In diesem Schritt erstellen Sie einen Spaltenhauptschlüssel und einen Spaltenverschlüsselungsschlüssel, für Always Encrypted. Anschließend verschlüsseln Sie die Spalten SSN und Gehalt in der Tabelle Mitarbeiter.
SSMS bietet einen Assistenten, zum einfachen Konfigurieren von Always Encrypted, indem Sie einen Spaltenhauptschlüssel und einen Spaltenverschlüsselungsschlüssel einrichten und ausgewählte Spalten verschlüsseln.
Erweitern Sie im Objekt-Explorer den Eintrag Datenbanken>ContosoHR>Tabellen.
Klicken Sie mit der rechten Maustaste auf die Tabelle Mitarbeiter, und wählen Sie Spalten verschlüsseln aus, um den Always Encrypted-Assistenten zu öffnen.
Wählen Sie Weiter auf der Einführungs-seite des Assistenten.
Auf der Seite Spaltenauswahl.
- Wählen Sie die Spalten SSN und Gehalt aus. Wählen Sie deterministische Verschlüsselung für die SSN Spalte und die zufällige Verschlüsselung für die Spalte Gehalt aus. Die deterministische Verschlüsselung unterstützt Abfragen, z. B. Punktsuchverweise, die Gleichheitsvergleiche für verschlüsselte Spalten umfassen. Randomisierte Verschlüsselung unterstützt keine Berechnungen für verschlüsselte Spalten.
- Belassen Sie CEK-Auto1 (Neu) als Spaltenverschlüsselungsschlüssel für beide Spalten. Dieser Schlüssel ist noch nicht vorhanden und wird vom Assistenten generiert.
- Wählen Sie Weiter aus.
Konfigurieren Sie auf der Seite Hauptschlüsselkonfiguration einen neuen Spaltenhauptschlüssel, der vom Assistenten generiert wird. Zuerst müssen Sie auswählen, wo Sie den Spaltenhauptschlüssel speichern möchten. Der Assistent unterstützt zwei Schlüsselspeichertypen:
- Azure Key Vault – empfohlen, wenn Sich Ihre Datenbank in Azure befindet
- Windows-Zertifikatspeicher
Im Allgemeinen ist Azure Key Vault die empfohlene Option, insbesondere, wenn Sich Ihre Datenbank in Azure befindet.
So verwenden Sie Azure Key Vault:
- Wählen Sie Azure Key Vaultaus.
- Wählen Sie Anmelden aus und schließen Sie die Anmeldung bei Azure ab.
- Nachdem Sie sich angemeldet haben, zeigt die Seite die Liste der Abonnements und Schlüsseltresore an, auf die Sie Zugriff haben. Wählen Sie ein Azure-Abonnement mit dem Schlüsseltresor aus, das Sie verwenden möchten.
- Wählen Sie Ihren Schlüsseltresor aus.
- Wählen Sie Weiter aus.
So verwenden Sie den Windows-Zertifikatspeicher:
Wählen Sie Windows-Zertifikatspeicher aus.
Behalten Sie die Standardauswahl des aktuellen Benutzers bei - Dadurch wird der Assistent angewiesen, ein Zertifikat (den neuen Spaltenhauptschlüssel) im aktuellen Benutzerspeicher zu generieren.
Wählen Sie Weiter aus.
Auf der Seite In-Place-Verschlüsselungseinstellungen ist keine zusätzliche Konfiguration erforderlich, da für die Datenbank keine Enklave aktiviert ist. Wählen Sie Weiter aus.
Auf der Seite Einstellungen ausführen werden Sie gefragt, ob Sie mit der Verschlüsselung fortfahren oder ein PowerShell-Skript generieren möchten, das später ausgeführt werden soll. Übernehmen Sie die Standardeinstellungen, und klicken Sie auf Weiter.
Auf der Seite Zusammenfassung informiert der Assistent Sie über die ausgeführten Aktionen. Überprüfen Sie alle Informationen auf Richtigkeit und wählen Sie Fertig stellen aus.
Auf der Seite Ergebnisse können Sie den Fortschritt der Vorgänge des Assistenten überwachen. Warten Sie, bis alle Vorgänge erfolgreich abgeschlossen wurden, und wählen Sie Schließen aus.
(Optional) Erkunden Sie die Änderungen, die der Assistent in Ihrer Datenbank vorgenommen hat.
Erweitern Sie contosoHR>Sicherheit>Always Encrypted Keys, um die Metadatenobjekte für den Spaltenhauptschlüssel und die Spaltenverschlüsselung zu untersuchen, die der Assistent erstellt hat.
Sie können auch die folgenden Abfragen für die Systemkatalogansichten ausführen, die Schlüsselmetadaten enthalten.
SELECT * FROM sys.column_master_keys; SELECT * FROM sys.column_encryption_keys SELECT * FROM sys.column_encryption_key_values
Klicken Sie in Objekt-Explorer mit der rechten Maustaste auf die Tabelle Mitarbeiter und wählen Sie Skripttabelle als>Erstellen in>neues Abfrage-Editor Fenster aus. Dadurch wird ein neues Abfragefenster mit der Anweisung CREATE TABLE- für die Tabelle Mitarbeiter geöffnet. Beachten Sie die ENCRYPTED WITH -Klausel, die in den Definitionen der Spalten SSN und Gehalt angezeigt wird.
Sie können auch die folgende Abfrage für sys.columns ausführen, um Verschlüsselungsmetadaten auf Spaltenebene für die beiden verschlüsselten Spalten abzurufen.
SELECT [name] , [encryption_type] , [encryption_type_desc] , [encryption_algorithm_name] , [column_encryption_key_id] FROM sys.columns WHERE [encryption_type] IS NOT NULL;
Schritt 3: Abfrage verschlüsselter Spalten
Stellen Sie eine Verbindung mit Ihrer Datenbank her, wobei Always Encrypted für Ihre Verbindung deaktiviert ist.
- Öffnen Sie ein neues Abfragefenster.
- Klicken Sie mit der rechten Maustaste in das Abfragefenster und wählen Sie Verbindung>Verbindung ändern aus. Dadurch wird das Dialogfeld Mit Datenbank-Engine verbinden geöffnet.
- Klicken Sie auf Optionen<<. Dadurch werden zusätzliche Tabs im Dialogfeld Mit Datenbank-Engine verbinden angezeigt.
- Wählen Sie die Registerkarte Always Encrypted aus.
- Stellen Sie sicher, dass das Kontrollkästchen Always Encrypted aktivieren (Spaltenverschlüsselung) nicht ausgewählt ist.
- Wählen Sie Verbinden.
Fügen Sie die folgende Abfrage ein und führen Sie diese aus. Die Abfrage sollte binäre verschlüsselte Daten zurückgeben.
SELECT [SSN], [Salary] FROM [HR].[Employees]
Stellen Sie eine Verbindung mit der aktivierten Option Always Encrypted zu Ihrer Datenbank her.
- Klicken Sie mit der rechten Maustaste in das Abfragefenster und wählen Sie Verbindung>Verbindung ändern aus. Dadurch wird das Dialogfeld Mit Datenbank-Engine verbinden geöffnet.
- Klicken Sie auf Optionen<<. Dadurch werden zusätzliche Tabs im Dialogfeld Mit Datenbank-Engine verbinden angezeigt.
- Wählen Sie die Registerkarte Always Encrypted aus.
- Wählen Sie Always Encrypted aktivieren (Spaltenverschlüsselung)
- Wählen Sie Verbinden.
Führen Sie die gleiche Abfrage erneut aus. Da Sie mit Always Encrypted für Ihre Datenbankverbindung verbunden sind, versucht der Clienttreiber in SSMS, Daten zu entschlüsseln, die in beiden verschlüsselten Spalten gespeichert sind. Wenn Sie Azure Key Vault verwenden, werden Sie möglicherweise aufgefordert, sich bei Azure anzumelden.
Aktivieren Sie die Parametrisierung für Always Encrypted. Mit diesem Feature können Sie Abfragen ausführen, die Daten nach verschlüsselten Spalten filtern (oder Daten in verschlüsselte Spalten einfügen).
- Wählen Sie im Hauptmenü von SSMS die Option Abfrage aus.
- Wählen Sie Abfrageoptionen...aus.
- Navigieren Sie zu Ausführung>Erweitert.
- Stellen Sie sicher, dass Parametrisierung für Always Encrypted aktiviert überprüft ist.
- Wählen Sie OK aus.
Fügen Sie die folgende Abfrage ein um die Daten nach der verschlüsselten SSN -Spalte zu filtern und führen Sie sie aus. Die Abfrage sollte eine Zeile zurückgeben, die Klartext- Werte enthält.
DECLARE @SSN [char](11) = '795-73-9838' SELECT [SSN], [Salary] FROM [HR].[Employees] WHERE [SSN] = @SSN
Wenn Sie optional Azure Key Vault verwenden, das mit dem Zugriffsrichtlinienberechtigungsmodell konfiguriert ist, führen Sie die folgenden Schritte aus, um zu sehen, was passiert, wenn ein Benutzer versucht, Klartext-Daten aus verschlüsselten Spalten abzurufen, ohne Zugriff auf den Spaltenhauptschlüssel zum Schutz der Daten zu haben.
- Entfernen Sie die Schlüssel
unwrap
-berechtigung für sich selbst in der Zugriffsrichtlinie für Ihren Schlüsseltresor. Weitere Informationen finden Sie unter Zuweisen einer Key Vault-Zugriffsrichtlinie. - Da der Clienttreiber in SSMS die aus einem Schlüsseltresor erworbenen Spaltenverschlüsselungsschlüssel 2 Stunden zwischenspeichert, schließen Sie SSMS, und öffnen Sie sie erneut. Dadurch wird sichergestellt, dass der Schlüsselcache leer ist.
- Stellen Sie eine Verbindung mit der aktivierten Option Always Encrypted zu Ihrer Datenbank her.
- Fügen Sie die folgende Abfrage ein und führen Sie diese aus. Die Abfrage sollte mit der Fehlermeldung misslingen, die angibt, dass die erforderliche
unwrap
Berechtigung fehlt.
SELECT [SSN], [Salary] FROM [HR].[Employees]
- Entfernen Sie die Schlüssel
Nächste Schritte
Weitere Informationen
- Dokumentation zu Always Encrypted
- Dokumentation zu Always Encrypted mit Secure Enclaves
- Bereitstellen von Always Encrypted-Schlüsseln mithilfe von SQL Server Management Studio
- Konfigurieren von Always Encrypted mithilfe von PowerShell
- Always Encrypted-Assistent
- Abfragen von Spalten mit Always Encrypted und SQL Server Management Studio