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 usłudze Azure SQL Database przy użyciu enklaw zabezpieczeń opartych na wirtualizacji (VBS). Zostaną wyświetlone:

  • 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łączanie enklawy 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Ł. Jeśli jest już ustawiona wartość WŁĄCZONE , przejdź do następnego kroku.

    Screenshot of enabling secure enclaves on an existing database in the 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 Połączenie do serwera 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łączenie ion. 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.

      Screenshot of Connect to Server using SSMS without Always Encrypted enabled.

    5. Wybierz pozycję Połącz.

  2. Utwórz nową tabelę o nazwie Employees (Pracownicy).

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

    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);
    

Krok 4. Aprowizuj klucze z obsługą enklawy

W tym kroku utworzysz klucz główny kolumny i klucz szyfrowania kolumny, który zezwala na obliczenia enklawy.

  1. Korzystając z wystąpienia programu SSMS z poprzedniego kroku, w Eksplorator obiektów rozwiń bazę danych i przejdź do pozycji Klucze always encrypted zabezpieczeń>.

  2. Aprowizuj nowy klucz główny kolumny z obsługą enklawy:

    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. Screenshot of the allow enclave computations selection in SSMS when creating a new column master key.
    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. Szyfrowanie niektórych kolumn

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 Połączenie do serwera 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łączenie ion. 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 wartość Brak. Zobacz poniższy zrzut ekranu.

      Screenshot of the SSMS Connect to Server dialog Always Encrypted tab, with attestation protocol set to None.

    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. Korzystając z tego samego wystąpienia programu SSMS (z włączonym funkcją Always Encrypted), otwórz nowe okno zapytania i zaszyfruj kolumny SSN i Salary , uruchamiając poniższe 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 zapytań dla bazy danych w powyższym skry skryptie. 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 kolumny SSN i Salary są teraz szyfrowane, otwórz nowe okno zapytania w wystąpieniu programu SSMS bez włączenia funkcji Always Encrypted dla połączenia z bazą danych i wykonaj poniższą instrukcję. 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 wystąpieniu programu SSMS z włączoną funkcją Always Encrypted upewnij się, że włączono również parametryzacja funkcji Always Encrypted.

    1. Wybierz pozycję Narzędzia z menu głównego programu SSMS.
    2. Wybierz pozycję Opcje....
    3. Przejdź do pozycji Wykonywanie>zapytań SQL Server>Advanced.
    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 poniższe 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. Powinien wystąpić błąd.

Następne kroki

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

Zobacz też