Lernprogramm: Erste Schritte mit Always Encrypted

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

In diesem Lernprogramm erfahren Sie, wie Sie mit Always Encrypted beginnen. Es wird Folgendes gezeigt:

  • So verschlüsseln Sie ausgewählte Spalten in Ihrer Datenbank.
  • So wird's gefragt: Abfragen verschlüsselter Spalten.

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 "Employees ". 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 von SSMS finden Sie in der Schnellstartanleitung: Verbinden und Abfragen einer 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 "Employees" 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 "Employees" 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 stellen Sie einen Spaltenmasterschlüssel und einen Spaltenverschlüsselungsschlüssel für Always Encrypted bereit. Anschließend verschlüsseln Sie die Spalten "SSN " und "Gehalt " in der Tabelle "Mitarbeiter ".

SSMS bietet einen Assistenten, der Ihnen hilft, Always Encrypted einfach zu konfigurieren, indem Sie einen Spaltenmasterschlüssel, einen Spaltenverschlüsselungsschlüssel und ausgewählte Spalten verschlüsseln.

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

  2. Klicken Sie mit der rechten Maustaste auf die Tabelle "Mitarbeiter ", und wählen Sie " Spalten verschlüsseln" aus, um den Assistenten "Immer verschlüsselt" zu öffnen.

    Screenshot of opening the Always Encrypted Wizard.

  3. Wählen Sie auf der Seite "Einführung" des Assistenten "Weiter" aus.

  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. Punktsuchvorgänge, die Gleichheitsvergleiche für verschlüsselte Spalten umfassen. Randomisierte Verschlüsselung unterstützt keine Berechnungen für verschlüsselte Spalten.
    2. Lassen 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 of the Always Encrypted Wizard column selection.

  5. Konfigurieren Sie auf der Seite " Masterschlüsselkonfiguration " einen neuen Spaltenmasterschlüssel, der vom Assistenten generiert wird. Zuerst müssen Sie auswählen, wo Sie den Spaltenmasterschlü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 melden Sie sich bei Azure ab.
      3. Nachdem Sie sich angemeldet haben, zeigt die Seite die Liste der Abonnements und Schlüsseltresor 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 of the Always Encrypted Wizard master key selection using Azure Key Vault.

    • So verwenden Sie den Windows-Zertifikatspeicher:

      1. Wählen Sie den Windows-Zertifikatspeicher aus.

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

        Screenshot of the Always Encrypted Wizard master key selection using the certificate store.

      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. Behalten Sie die Standardeinstellungen bei, und wählen Sie "Weiter" aus.

  8. Auf der Seite "Zusammenfassung " informiert der Assistent Sie über die ausgeführten Aktionen. Überprüfen Sie alle Informationen richtig, 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 of the Always Encrypted Wizard summary.

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

    1. Erweitern Sie contosoHR>Security>Always Encrypted Keys, um die Metadatenobjekte für den Spaltenmasterschlü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 im Objekt-Explorer mit der rechten Maustaste auf die Tabelle "Mitarbeiter", und wählen Sie "Skripttabelle" als>Fenster "In>neuer Abfrage-Editor erstellen" aus. Dadurch wird ein neues Abfragefenster mit der CREATE TABLE-Anweisung für die Tabelle "Employees " geöffnet. Beachten Sie die ENCRYPTED WITH-Klausel , die in den Definitionen der Spalten "SSN " und "Salary " 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 auf eine beliebige Stelle im Abfragefenster, und wählen Sie "Verbindung ändern"> aus. Dadurch wird das Dialogfeld "Mit Datenbankmodul verbinden" geöffnet.
    3. Klicken Sie auf Optionen<<. Dadurch werden zusätzliche Registerkarten im Dialogfeld "Mit Datenbankmodul verbinden" angezeigt.
    4. Wählen Sie die Registerkarte Always Encrypted aus.
    5. Stellen Sie sicher, dass "Immer verschlüsselt aktivieren" (Spaltenverschlüsselung) nicht ausgewählt ist.
    6. Wählen Sie Verbinden aus.

    Screenshot of the SSMS connection option for Always Encrypted disabled.

  2. Fügen Sie die folgende Abfrage ein, und führen Sie sie aus. Die Abfrage sollte binäre verschlüsselte Daten zurückgeben.

    SELECT [SSN], [Salary] FROM [HR].[Employees]
    

    Screenshot of cipher text results from encrypted columns.

  3. Stellen Sie eine Verbindung mit Ihrer Datenbank her, wobei "Always Encrypted" für Ihre Verbindung aktiviert ist.

    1. Klicken Sie mit der rechten Maustaste auf eine beliebige Stelle im Abfragefenster, und wählen Sie "Verbindung ändern"> aus. Dadurch wird das Dialogfeld "Mit Datenbankmodul verbinden" geöffnet.
    2. Klicken Sie auf Optionen<<. Dadurch werden zusätzliche Registerkarten im Dialogfeld "Mit Datenbankmodul verbinden" angezeigt.
    3. Wählen Sie die Registerkarte Always Encrypted aus.
    4. Wählen Sie "Immer verschlüsselt aktivieren" (Spaltenverschlüsselung) aus.
    5. Wählen Sie Verbinden aus.

    Screenshot of the SSMS connection option for Always Encrypted enabled.

  4. Führen Sie dieselbe 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 of plaintext results from encrypted columns.

  5. Aktivieren Sie die Parameterisierung für "Immer verschlüsselt". 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 die Parameterisierung für Always Encrypted aktiviert ist.
    5. Klicken Sie auf OK.

    Screenshot enabling parameterization in an existing query window.

  6. Fügen Sie die folgende Abfrage ein, und führen Sie sie aus, die Daten nach der verschlüsselten SSN-Spalte filtert. Die Abfrage sollte eine Zeile zurückgeben, die Nur-Text-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, Nur-Text-Daten aus verschlüsselten Spalten abzurufen, ohne Zugriff auf den Spaltenmasterschlüssel zum Schutz der Daten zu haben.

    1. Entfernen Sie die Schlüsselberechtigung unwrap 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 Ihrer Datenbank her, wobei "Always Encrypted" für Ihre Verbindung aktiviert ist.
    4. Fügen Sie die folgende Abfrage ein, und führen Sie sie aus. Die Abfrage sollte mit der Fehlermeldung fehlschlagen, die angibt, dass Die erforderliche unwrap Berechtigung fehlt.
    SELECT [SSN], [Salary] FROM [HR].[Employees]
    

Nächste Schritte

Siehe auch