Freigeben über


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.

Voraussetzungen

Für dieses Tutorial benötigen Sie Folgendes:

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.

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

  2. Öffnen Sie ein neues Abfragefenster für die ContosoHR Datenbank .

  3. 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];
    
  4. 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.

  1. Erweitern Sie im Objekt-Explorer den Eintrag Datenbanken>ContosoHR>Tabellen.

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

    Screenshot vom Öffnen des Assistenten Always Encrypted.

  3. Wählen Sie Weiter auf der Einführungs-seite des Assistenten.

  4. Auf der Seite Spaltenauswahl.

    1. 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.
    2. 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.
    3. Wählen Sie Weiter aus.

    Screenshot der Spaltenauswahl des Assistenten Always Encrypted.

  5. 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:

      1. Wählen Sie Azure Key Vaultaus.
      2. Wählen Sie Anmelden aus und schließen Sie die Anmeldung bei Azure ab.
      3. 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.
      4. Wählen Sie Ihren Schlüsseltresor aus.
      5. Wählen Sie Weiter aus.

      Screenshot der Hauptschlüsselauswahl des Always Encrypted Assistenten mithilfe von Azure Key Vault.

    • So verwenden Sie den Windows-Zertifikatspeicher:

      1. Wählen Sie Windows-Zertifikatspeicher aus.

      2. Behalten Sie die Standardauswahl des aktuellen Benutzers bei - Dadurch wird der Assistent angewiesen, ein Zertifikat (den neuen Spaltenhauptschlüssel) im aktuellen Benutzerspeicher zu generieren.

        Screenshot der Hauptschlüsselauswahl des Always Encrypted Assistenten mithilfe des Zertifikatspeichers.

      3. Wählen Sie Weiter aus.

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

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

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

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

    Screenshot der Zusammenfassung des Always Encrypted Assistenten.

  10. (Optional) Erkunden Sie die Änderungen, die der Assistent in Ihrer Datenbank vorgenommen hat.

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

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

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

  1. Stellen Sie eine Verbindung mit Ihrer Datenbank her, wobei Always Encrypted für Ihre Verbindung deaktiviert ist.

    1. Öffnen Sie ein neues Abfragefenster.
    2. 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.
    3. Klicken Sie auf Optionen<<. Dadurch werden zusätzliche Tabs im Dialogfeld Mit Datenbank-Engine verbinden angezeigt.
    4. Wählen Sie die Registerkarte Always Encrypted aus.
    5. Stellen Sie sicher, dass das Kontrollkästchen Always Encrypted aktivieren (Spaltenverschlüsselung) nicht ausgewählt ist.
    6. Wählen Sie Verbinden.

    Screenshot der SSMS-Verbindungsoption für deaktiviertes Always Encrypted.

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

    Screenshot der Ergebnisse von Chiffretext aus verschlüsselten Spalten.

  3. Stellen Sie eine Verbindung mit der aktivierten Option Always Encrypted zu Ihrer Datenbank her.

    1. 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.
    2. Klicken Sie auf Optionen<<. Dadurch werden zusätzliche Tabs im Dialogfeld Mit Datenbank-Engine verbinden angezeigt.
    3. Wählen Sie die Registerkarte Always Encrypted aus.
    4. Wählen Sie Always Encrypted aktivieren (Spaltenverschlüsselung)
    5. Wählen Sie Verbinden.

    Screenshot der SSMS-Verbindungsoption für aktiviertes Always Encrypted.

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

    Screenshot der Klartext-Ergebnisse aus verschlüsselten Spalten.

  5. 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).

    1. Wählen Sie im Hauptmenü von SSMS die Option Abfrage aus.
    2. Wählen Sie Abfrageoptionen...aus.
    3. Navigieren Sie zu Ausführung>Erweitert.
    4. Stellen Sie sicher, dass Parametrisierung für Always Encrypted aktiviert überprüft ist.
    5. Wählen Sie OK aus.

    Screenshot, der die Parametrisierung in einem vorhandenen Abfragefenster aktiviert.

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

    1. Entfernen Sie die Schlüsselunwrap -berechtigung für sich selbst in der Zugriffsrichtlinie für Ihren Schlüsseltresor. Weitere Informationen finden Sie unter Zuweisen einer Key Vault-Zugriffsrichtlinie.
    2. 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.
    3. Stellen Sie eine Verbindung mit der aktivierten Option Always Encrypted zu Ihrer Datenbank her.
    4. 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]
    

Nächste Schritte

Weitere Informationen