Samouczek: rozpoczynanie korzystania z funkcji Always Encrypted z enklawami VBS w usłudze Azure SQL Database

Dotyczy:Azure SQL Database

W tym samouczku pokazano, jak rozpocząć pracę z funkcją Always Encrypted z bezpiecznymi enklawami w Azure SQL Database przy użyciu enklaw zabezpieczeń opartych na wirtualizacji (VBS). Samouczek obejmuje następujące zagadnienia:

  • Jak utworzyć środowisko do testowania i oceniania funkcji Always Encrypted przy użyciu enklaw VBS.
  • Jak szyfrować dane w miejscu i wystawiać zaawansowane poufne zapytania względem zaszyfrowanych kolumn przy użyciu programu SQL Server Management Studio (SSMS).

Wymagania wstępne

Wymagania dotyczące narzędzi

Program SQL Server Management Studio (SSMS) jest wymagany w tym samouczku. Możesz użyć programu PowerShell lub interfejsu wiersza polecenia platformy Azure, aby włączyć enklawy VBS.

Pobierz najnowszą wersję programu SQL Server Management Studio (SSMS).

Krok 1. Tworzenie i konfigurowanie serwera i bazy danych

W tym kroku utworzysz nowy serwer logiczny usługi Azure SQL Database i nową bazę danych.

Przejdź do przewodnika Szybki start: tworzenie pojedynczej bazy danych — Azure SQL Database i postępuj zgodnie z instrukcjami w sekcji Tworzenie pojedynczej bazy danych , aby utworzyć nowy serwer logiczny usługi Azure SQL Database i nową bazę danych.

Ważne

Upewnij się, że utworzono pustą bazę danych o nazwie ContosoHR (a nie przykładowej bazie danych).

Krok 2: Włącz enklawę VBS

W tym kroku włączysz enklawę VBS w bazie danych, która jest wymagana dla funkcji Always Encrypted z bezpiecznymi enklawami. Aby włączyć enklawy VBS w bazie danych, należy ustawić właściwość bazy danych preferredEnclaveTypena VBS.

  1. Otwórz witrynę Azure Portal i znajdź bazę danych, dla której chcesz włączyć bezpieczne enklawy.

  2. W obszarze Ustawienia zabezpieczeń wybierz pozycję Szyfrowanie danych.

  3. W menu Szyfrowanie danych wybierz kartę Always Encrypted.

  4. Ustaw opcję Włącz bezpieczne enklawy na WŁĄCZONE. Jeśli jest już ustawiona wartość WŁĄCZONE, przejdź do następnego kroku.

    Zrzut ekranu przedstawiający włączanie bezpiecznych enklaw w istniejącej bazie danych w witrynie Azure Portal.

  5. Wybierz pozycję Zapisz , aby zapisać konfigurację funkcji Always Encrypted.

Krok 3. Wypełnianie bazy danych

W tym kroku utworzysz tabelę i wypełnisz ją danymi, które później zaszyfrujesz i wykonasz zapytania.

  1. Otwórz program SSMS i połącz się z bazą danych ContosoHR na serwerze logicznym Azure SQL utworzonym bez włączenia funkcji Always Encrypted w połączeniu z bazą danych.

    1. W oknie dialogowym Łączenie z serwerem określ w pełni kwalifikowaną nazwę serwera (na przykład myserver135.database.windows.net), a następnie wprowadź nazwę użytkownika administratora i hasło określone podczas tworzenia serwera.

    2. Wybierz pozycję Opcje >> i wybierz kartę Właściwości połączenia. Upewnij się, że wybrano bazę danych ContosoHR (a nie domyślną, master bazę danych).

    3. Wybierz kartę Always Encrypted .

    4. Upewnij się, że pole wyboru Włącz funkcję Always Encrypted (szyfrowanie kolumny) nie jest zaznaczone.

      Zrzut ekranu przedstawiający nawiązywanie połączenia z serwerem przy użyciu programu SSMS bez włączonej funkcji Always Encrypted.

    5. Wybierz pozycję Połącz.

  2. Utwórz nową tabelę o nazwie 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. Dodaj kilka rekordów pracowników do Employees tabeli.

    INSERT INTO [HR].[Employees]
            ([SSN]
            ,[FirstName]
            ,[LastName]
            ,[Salary])
        VALUES
            ('987-65-4320'
            , N'Catherine'
            , N'Abel'
            , $31692);
    
    INSERT INTO [HR].[Employees]
            ([SSN]
            ,[FirstName]
            ,[LastName]
            ,[Salary])
        VALUES
            ('990-00-6818'
            , N'Kim'
            , N'Abercrombie'
            , $55415);
    

Krok 4. Udostępnij klucze obsługiwane przez enklawę

W tym kroku utworzysz klucz główny kolumny i klucz szyfrowania kolumny, które zezwalają na obliczenia w enklawie.

  1. Korzystając z wystąpienia programu SSMS z poprzedniego kroku, w Eksploratorze obiektów rozwiń bazę danych, a następnie przejdź do zabezpieczeń i Klucze zawsze szyfrowane.

  2. Utwórz nowy klucz główny kolumny obsługiwany przez enklawę:

    1. Kliknij prawym przyciskiem myszy pozycję Zawsze zaszyfrowane klucze i wybierz pozycję Nowy klucz główny kolumny....

    2. Wprowadź nazwę nowego klucza głównego kolumny: CMK1.

    3. Sprawdź, czy wybrano opcję Zezwalaj na obliczenia enklawy. (Domyślnie jest wybierana, jeśli dla bazy danych jest włączona bezpieczna enklawa — powinna być włączona, ponieważ baza danych korzysta z konfiguracji sprzętowej serii DC).

    4. Wybierz usługę Azure Key Vault (zalecaną) lub Magazyn certyfikatów systemu Windows (bieżący użytkownik lub komputer lokalny).

      • Jeśli wybierzesz usługę Azure Key Vault, zaloguj się do platformy Azure, wybierz subskrypcję platformy Azure zawierającą magazyn kluczy, którego chcesz użyć, i wybierz magazyn kluczy. Wybierz pozycję Generuj klucz , aby utworzyć nowy klucz.
      • Jeśli wybierzesz pozycję Magazyn certyfikatów systemu Windows, wybierz przycisk Generuj certyfikat , aby utworzyć nowy certyfikat.
    5. Wybierz przycisk OK.

  3. Utwórz nowy klucz szyfrowania kolumn z obsługą enklawy:

    1. Kliknij prawym przyciskiem myszy pozycję Zawsze zaszyfrowane klucze i wybierz pozycję Nowy klucz szyfrowania kolumny.
    2. Wprowadź nazwę nowego klucza szyfrowania kolumny: CEK1.
    3. Z listy rozwijanej Klucz główny kolumny wybierz klucz główny kolumny utworzony w poprzednich krokach.
    4. Wybierz przycisk OK.

Krok 5: Zaszyfruj niektóre kolumny na miejscu

W tym kroku zaszyfrujesz dane przechowywane w kolumnach SSN i Salary wewnątrz enklawy po stronie serwera, a następnie przetestujesz zapytanie SELECT na danych.

  1. Otwórz nowe wystąpienie programu SSMS i połącz się z bazą danych z włączoną funkcją Always Encrypted dla połączenia z bazą danych.

    1. Uruchom nowe wystąpienie programu SSMS.

    2. W oknie dialogowym Łączenie z serwerem określ w pełni kwalifikowaną nazwę serwera (na przykład myserver135.database.windows.net), a następnie wprowadź nazwę użytkownika administratora i hasło określone podczas tworzenia serwera.

    3. Wybierz pozycję Opcje >> i wybierz kartę Właściwości połączenia. Upewnij się, że wybrano bazę danych ContosoHR (a nie domyślną, master bazę danych).

    4. Wybierz kartę Always Encrypted .

    5. Zaznacz pole wyboru Włącz funkcję Always Encrypted (szyfrowanie kolumny).

    6. Wybierz pozycję Włącz bezpieczne enklawy.

    7. Dla opcji Protokół ustaw Brak.

      Zrzut ekranu przedstawiający kartę Połącz z serwerem w SSMS, z zakładką Always Encrypted, gdzie protokół zaświadczania jest ustawiony na brak.

    8. Wybierz pozycję Połącz.

    9. Jeśli zostanie wyświetlony monit o włączenie parametryzacji dla zapytań Always Encrypted, wybierz pozycję Włącz.

  2. Używając tego samego wystąpienia programu SSMS (z włączoną funkcją Always Encrypted), otwórz nowe okno zapytania i zaszyfruj kolumny SSN i Salary, uruchamiając następujące instrukcje.

    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;
    

    Uwaga

    Instrukcja ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE czyści pamięć podręczną planu zapytania dla bazy danych w powyższym skrypcie. Po zmianie tabeli należy wyczyścić plany dla wszystkich partii i procedur składowanych, które uzyskują dostęp do tabeli w celu odświeżenia informacji o szyfrowaniu parametrów.

  3. Aby sprawdzić, czy SSN i Salary kolumny są teraz szyfrowane, otwórz nowe okno zapytań w wystąpieniu programu SSMS bez włączonej funkcji Always Encrypted dla połączenia z bazą danych i wykonaj następujące polecenie. Okno zapytania powinno zwracać zaszyfrowane wartości w kolumnach SSN i Salary . Jeśli wykonasz to samo zapytanie przy użyciu wystąpienia programu SSMS z włączoną funkcją Always Encrypted, powinny zostać wyświetlone dane odszyfrowane.

    SELECT * FROM [HR].[Employees];
    

Krok 6. Uruchamianie zaawansowanych zapytań względem zaszyfrowanych kolumn

Możesz uruchamiać zaawansowane zapytania względem zaszyfrowanych kolumn. Niektóre operacje przetwarzania zapytań będą wykonywane wewnątrz enklawy po stronie serwera.

  1. W instancji SSMS z włączonym Always Encrypted upewnij się, że włączona jest również parametryzacja Always Encrypted.

    1. Wybierz pozycję Narzędzia z menu głównego programu SSMS.
    2. Wybierz pozycję Opcje....
    3. Przejdź do Wykonywanie zapytania>SQL Server>Zaawansowane.
    4. Upewnij się, że opcja Włącz parametryzacja dla funkcji Always Encrypted jest zaznaczona.
    5. Wybierz przycisk OK.
  2. Otwórz nowe okno zapytania, wklej następujące zapytanie i wykonaj polecenie . Zapytanie powinno zwracać wartości zwykłego tekstu i wiersze spełniające określone kryteria wyszukiwania.

    DECLARE @SSNPattern [char](11) = '%6818';
    DECLARE @MinSalary [money] = $1000;
    SELECT * FROM [HR].[Employees]
    WHERE SSN LIKE @SSNPattern AND [Salary] >= @MinSalary;
    
  3. Spróbuj ponownie wykonać to samo zapytanie w wystąpieniu programu SSMS, które nie ma włączonej funkcji Always Encrypted. Może wystąpić błąd.

Poradniki

Po ukończeniu tego samouczka możesz przejść do jednego z następujących samouczków: