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
- Aktywna subskrypcja platformy Azure. Jeśli jej nie masz, utwórz bezpłatne konto. Aby móc tworzyć zasoby, musisz być członkiem roli Współautor lub Właściciel subskrypcji.
- Opcjonalnie, ale zalecane do przechowywania klucza głównego kolumny dla funkcji Always Encrypted: magazynu kluczy w usłudze Azure Key Vault. Aby uzyskać informacje na temat tworzenia magazynu kluczy, zobacz Szybki start: tworzenie magazynu kluczy przy użyciu witryny Azure Portal.
- Jeśli magazyn kluczy korzysta z modelu uprawnień zasad dostępu, upewnij się, że masz następujące uprawnienia klucza w magazynie kluczy:
get
, ,list
create
,unwrap key
wrap key
, , .sign
verify
Zobacz Przypisywanie zasad dostępu do usługi Key Vault. - Jeśli używasz modelu uprawnień kontroli dostępu opartej na rolach (RBAC) platformy Azure, upewnij się, że jesteś członkiem roli Crypto Officer usługi Key Vault dla magazynu kluczy. Zobacz Zapewnianie dostępu do kluczy, certyfikatów i wpisów tajnych usługi Key Vault przy użyciu kontroli dostępu opartej na rolach platformy Azure.
- Jeśli magazyn kluczy korzysta z modelu uprawnień zasad dostępu, upewnij się, że masz następujące uprawnienia klucza w magazynie kluczy:
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 preferredEnclaveType na VBS.
Otwórz witrynę Azure Portal i znajdź bazę danych, dla której chcesz włączyć bezpieczne enklawy.
W obszarze Ustawienia zabezpieczeń wybierz pozycję Szyfrowanie danych.
W menu Szyfrowanie danych wybierz kartę Always Encrypted.
Ustaw opcję Włącz bezpieczne enklawy na WŁ. Jeśli jest już ustawiona wartość WŁĄCZONE , przejdź do następnego kroku.
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.
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.
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.
Wybierz pozycję Opcje >> i wybierz kartę Właściwości połączenia. Upewnij się,
master
że wybrano bazę danych ContosoHR (a nie domyślną, bazę danych).Wybierz kartę Always Encrypted .
Upewnij się, że pole wyboru Włącz funkcję Always Encrypted (szyfrowanie kolumny) nie jest zaznaczone.
Wybierz pozycję Połącz.
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
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.
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ń>.
Aprowizuj nowy klucz główny kolumny z obsługą enklawy:
- Kliknij prawym przyciskiem myszy pozycję Zawsze zaszyfrowane klucze i wybierz pozycję Nowy klucz główny kolumny....
- Wprowadź nazwę nowego klucza głównego kolumny: CMK1.
- 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).
- 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.
- Wybierz przycisk OK.
Utwórz nowy klucz szyfrowania kolumn z obsługą enklawy:
- Kliknij prawym przyciskiem myszy pozycję Zawsze zaszyfrowane klucze i wybierz pozycję Nowy klucz szyfrowania kolumny.
- Wprowadź nazwę nowego klucza szyfrowania kolumny: CEK1.
- Z listy rozwijanej Klucz główny kolumny wybierz klucz główny kolumny utworzony w poprzednich krokach.
- 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.
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.
Uruchom nowe wystąpienie programu SSMS.
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.
Wybierz pozycję Opcje >> i wybierz kartę Właściwości połączenia. Upewnij się,
master
że wybrano bazę danych ContosoHR (a nie domyślną, bazę danych).Wybierz kartę Always Encrypted .
Zaznacz pole wyboru Włącz funkcję Always Encrypted (szyfrowanie kolumny).
Wybierz pozycję Włącz bezpieczne enklawy.
Dla opcji Protokół ustaw wartość Brak. Zobacz poniższy zrzut ekranu.
Wybierz pozycję Połącz.
Jeśli zostanie wyświetlony monit o włączenie parametryzacji dla zapytań Always Encrypted, wybierz pozycję Włącz.
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.
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.
W wystąpieniu programu SSMS z włączoną funkcją Always Encrypted upewnij się, że włączono również parametryzacja funkcji Always Encrypted.
- Wybierz pozycję Narzędzia z menu głównego programu SSMS.
- Wybierz pozycję Opcje....
- Przejdź do pozycji Wykonywanie>zapytań SQL Server>Advanced.
- Upewnij się, że opcja Włącz parametryzacja dla funkcji Always Encrypted jest zaznaczona.
- Wybierz przycisk OK.
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;
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:
- Samouczek: tworzenie aplikacji platformy .NET przy użyciu funkcji Always Encrypted z bezpiecznymi enklawami
- Samouczek: tworzenie aplikacji .NET Framework przy użyciu funkcji Always Encrypted z bezpiecznymi enklawami
- Samouczek: tworzenie i używanie indeksów w kolumnach z obsługą enklawy przy użyciu szyfrowania losowego