Tutorial: Erste Schritte mit Always Encrypted mit VBS-Enclaves in Azure SQL-Datenbank

Gilt für: Azure SQL-Datenbank

In diesem Tutorial finden Sie die ersten Schritte mit Always Encrypted mit Secure Enclaves in Azure SQL-Datenbank unter Verwendung von VBS-Enclaves (virtualisierungsbasierte Sicherheit). Es wird Folgendes gezeigt:

  • Erstellen einer Umgebung zum Testen und Auswerten von Always Encrypted mit VBS-Enclaves
  • Direktes Verschlüsseln von Daten und Ausgeben umfangreicher vertraulicher Abfragen für verschlüsselte Spalten mithilfe von SQL Server Management Studio (SSMS)

Voraussetzungen

Toolanforderungen

Für dieses Tutorial ist SQL Server Management Studio (SSMS) erforderlich. Sie können entweder PowerShell oder die Azure-Befehlszeilenschnittstelle verwenden, um VBS-Enclaves zu aktivieren.

Laden Sie die neueste Version von SQL Server Management Studio (SSMS) herunter.

Schritt 1: Erstellen und Konfigurieren eines Servers und einer Datenbank

In diesem Schritt erstellen Sie einen neuen logischen Azure SQL-Datenbank-Server und eine neue Datenbank.

Befolgen Sie im Schnellstart: Erstellen eines Singletons – Azure SQL-Datenbank die Anweisungen im Abschnitt Erstellen eines Singletons zum Erstellen eines neuen logischen Azure SQL-Datenbank-Servers und einer Datenbank.

Wichtig

Stellen Sie sicher, dass Sie eine leere Datenbank mit dem Namen ContosoHR (und keine Beispieldatenbank) erstellen.

Schritt 2: Aktivieren einer VBS-Enclave

In diesem Schritt aktivieren Sie eine VBS-Enclave in der Datenbank, die für Always Encrypted mit Secure Enclaves erforderlich ist. Um VBS-Enclaves in Ihrer Datenbank zu aktivieren, müssen Sie die Datenbankeigenschaft preferredEnclaveType auf VBS festlegen.

  1. Öffnen Sie das Azure-Portal und suchen Sie die Datenbank, für die Sie Secure Enclaves aktivieren möchten.

  2. Wählen Sie in den Sicherheitseinstellungen die Option Datenverschlüsselung aus.

  3. Wählen Sie im Menü Datenverschlüsselung die Registerkarte Immer verschlüsselt aus.

  4. Legen Sie Sichere Enklaven aktivieren auf EIN fest. Wenn sie bereits auf EIN festgelegt ist, fahren Sie mit dem nächsten Schritt fort.

    Screenshot der Aktivierung sicherer Enclaves für eine bestehende Datenbank im Azure-Portal.

  5. Wählen Sie zum Speichern der Firewallkonfiguration Speichern aus.

Schritt 3: Auffüllen Ihrer Datenbank

In diesem Schritt erstellen Sie eine Tabelle und füllen sie mit einigen Daten auf, die Sie später verschlüsseln und abfragen.

  1. Öffnen Sie SSMS, und stellen Sie eine Verbindung mit der Datenbank ContosoHR auf dem von Ihnen erstellten logischen Azure SQL-Server her, ohne Always Encrypted in der Datenbankverbindung zu aktivieren.

    1. Geben Sie im Dialogfeld Verbindung mit dem Server herstellen den vollqualifizierten Namen Ihres Servers (z. B. myserver135.database.windows.net) sowie den Benutzernamen und das Kennwort des Administrators ein, den bzw. das Sie beim Erstellen des Servers festgelegt haben.

    2. Wählen Sie Optionen>> und dann die Registerkarte Verbindungseigenschaften aus. Achten Sie darauf, dass Sie die Datenbank ContosoHR (und nicht die Standarddatenbank master) auswählen.

    3. Wählen Sie die Registerkarte Always Encrypted aus.

    4. Stellen Sie sicher, dass das Kontrollkästchen Always Encrypted aktivieren (Spaltenverschlüsselung)nicht ausgewählt ist.

      Screenshot der Herstellung einer Verbindung mit einem Server mithilfe von SSMS ohne Aktivierung von Always Encrypted

    5. Wählen Sie Verbinden.

  2. Erstellen Sie eine neue Tabelle mit dem Namen Employees.

    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];
    GO
    
  3. Fügen Sie der Tabelle Employees einige Mitarbeiterdatensätze hinzu.

    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 4: Bereitstellen Enclave-fähiger Schlüssel

In diesem Schritt erstellen Sie einen Spaltenhauptschlüssel und einen Spaltenverschlüsselungsschlüssel, die Enclave-Berechnungen zulassen.

  1. Erweitern Sie Ihre Datenbank im Objekt-Explorer mit der SSMS-Instanz aus dem vorherigen Schritt, und navigieren Sie zu Sicherheit>Always Encrypted-Schlüssel.

  2. Stellen Sie einen neuen Enclave-fähigen Spaltenhauptschlüssel bereit:

    1. Klicken Sie mit der rechten Maustaste auf Always Encrypted-Schlüssel, und wählen Sie Neuer Spaltenhauptschlüssel aus.
    2. Geben Sie einen Namen für den neuen Spaltenhauptschlüssel ein: CMK1.
    3. Vergewissern Sie sich, dass die Option Enclave-Berechnungen zulassen ausgewählt ist. (Sie ist standardmäßig ausgewählt, wenn eine Secure Enclave für die Datenbank aktiviert ist. Sie muss aktiviert sein, da Ihre Datenbank die Hardwarekonfiguration der DC-Serie verwendet.)
    4. Stellen Sie sicher, dass Sie entweder Azure Key Vault (empfohlen) oder Windows-Zertifikatspeicher (Aktueller Benutzer oder Lokaler Computer) auswählen.
      • Wenn Sie „Azure Key Vault“ auswählen, melden Sie sich bei Azure an. Wählen Sie ein Azure-Abonnement mit dem gewünschten Schlüsseltresor und dann Ihren Schlüsseltresor aus. Wählen Sie Schlüssel generieren aus, um einen neuen Schlüssel zu erstellen.
      • Wenn Sie „Windows-Zertifikatspeicher“ auswählen, wählen Sie die Schaltfläche Zertifikat generieren aus, um ein neues Zertifikat zu erstellen. Screenshot der Auswahl von „Enclave-Berechnungen zulassen“ in SSMS beim Erstellen eines neuen Spaltenhauptschlüssels
    5. Klicken Sie auf OK.
  3. Erstellen Sie einen neuen Enclave-fähigen Spaltenverschlüsselungsschlüssel:

    1. Klicken Sie mit der rechten Maustaste auf Always Encrypted-Schlüssel, und wählen Sie Neuer Spaltenverschlüsselungsschlüssel.
    2. Geben Sie einen Namen für den neuen Spaltenverschlüsselungsschlüssel ein: CEK1.
    3. Wählen Sie in der Dropdownliste Spaltenhauptschlüssel den in den vorherigen Schritten erstellten Spaltenhauptschlüssel.
    4. Klicken Sie auf OK.

Schritt 5: Direktes Verschlüsseln einiger Spalten

In diesem Schritt verschlüsseln Sie die in den Spalten SSN und Salary gespeicherten Daten in der serverseitigen Enclave und testen dann eine SELECT-Abfrage der Daten.

  1. Öffnen Sie eine neue SSMS-Instanz, und stellen Sie eine Verbindung mit Ihrer Datenbank her. Always Encrypted muss dabei für die Datenbankverbindung aktiviert sein.

    1. Starten Sie eine neue SSMS-Instanz.

    2. Geben Sie im Dialogfeld Verbindung mit dem Server herstellen den vollqualifizierten Namen Ihres Servers (z. B. myserver135.database.windows.net) sowie den Benutzernamen und das Kennwort des Administrators ein, den bzw. das Sie beim Erstellen des Servers festgelegt haben.

    3. Wählen Sie Optionen>> und dann die Registerkarte Verbindungseigenschaften aus. Achten Sie darauf, dass Sie die Datenbank ContosoHR (und nicht die Standarddatenbank master) auswählen.

    4. Wählen Sie die Registerkarte Always Encrypted aus.

    5. Aktivieren Sie das Kontrollkästchen Always Encrypted aktivieren (Spaltenverschlüsselung).

    6. Wählen Sie Secure Enclaves aktivieren aus.

    7. Legen Sie das Protokoll auf Kein fest. Sehen Sie sich hierzu folgenden Screenshot an:

      Screenshot des SSMS-Dialogfelds „Mit Server verbinden“ mit der Registerkarte „Always Encrypted“, auf der das Nachweisprotokoll auf „Kein“ festgelegt ist

    8. Wählen Sie Verbinden.

    9. Wenn Sie aufgefordert werden, die Parametrisierung für Always Encrypted zu aktivieren, wählen Sie Aktivieren aus.

  2. Öffnen Sie mit derselben SSMS-Instanz (Always Encrypted ist aktiviert) ein neues Abfragefenster, und verschlüsseln Sie die Spalten SSN und Salary, indem Sie die folgenden Anweisungen ausführen:

    ALTER TABLE [HR].[Employees]
    ALTER COLUMN [SSN] [char] (11) COLLATE Latin1_General_BIN2
    ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL
    WITH
    (ONLINE = ON);
    
    ALTER TABLE [HR].[Employees]
    ALTER COLUMN [Salary] [money]
    ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL
    WITH
    (ONLINE = ON);
    
    ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
    

    Hinweis

    Die ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE-Anweisung löscht den Abfrageplancache für die Datenbank im obigen Skript. Nachdem Sie die Tabelle bearbeitet haben, müssen Sie die Pläne für alle Batches und gespeicherten Prozeduren leeren, die Zugriff auf die Tabelle haben, um die Informationen für die Parameterverschlüsselung zu aktualisieren.

  3. Um zu überprüfen, ob die Spalten SSN und Salary nun verschlüsselt sind, öffnen Sie ein neues Abfragefenster in der SSMS-Instanz, ohne dass Always Encrypted für die Datenbankverbindung aktiviert ist, und führen Sie die folgende Anweisung aus. Das Abfragefenster sollte verschlüsselte Werte in den Spalten SSN und Salary zurückgeben. Wenn Sie die gleiche Abfrage mit der SSMS-Instanz ausführen, bei der Always Encrypted aktiviert ist, sollten die Daten entschlüsselt angezeigt werden.

    SELECT * FROM [HR].[Employees];
    

Schritt 6: Ausführen umfangreicher Abfragen für verschlüsselte Spalten

Sie können umfangreiche Abfragen für verschlüsselte Spalten ausführen. Ein Teil der Abfrageverarbeitung wird in der serverseitigen Enclave ausgeführt.

  1. Stellen Sie in der SSMS-Instanz mit aktiviertem Always Encrypted sicher, dass auch die Parametrisierung für Always Encrypted aktiviert ist.

    1. Wählen Sie im Hauptmenü von SSMS Tools aus.
    2. Wählen Sie Optionen... aus.
    3. Navigieren Sie zu Abfrageausführung>SQL Server>Erweitert.
    4. Stellen Sie sicher, dass Parametrisierung für Always Encrypted aktivieren aktiviert ist.
    5. Klicken Sie auf OK.
  2. Öffnen Sie ein neues Abfragefenster, fügen Sie die folgende Abfrage ein, und führen Sie sie anschließend aus. Die Abfrage sollte Klartextwerte und Zeilen zurückgeben, die den angegebenen Suchkriterien entsprechen.

    DECLARE @SSNPattern [char](11) = '%6818';
    DECLARE @MinSalary [money] = $1000;
    SELECT * FROM [HR].[Employees]
    WHERE SSN LIKE @SSNPattern AND [Salary] >= @MinSalary;
    
  3. Probieren Sie dieselbe Abfrage erneut in der SSMS-Instanz aus, in der Always Encrypted nicht aktiviert ist. Ein Fehler sollte auftreten.

Nächste Schritte

Nachdem Sie dieses Tutorial abgeschlossen haben, können Sie mit einem der folgenden Tutorials fortfahren:

Siehe auch