Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
W tym samouczku pokazano, jak rozpocząć pracę z funkcją Always Encrypted. Zostaną wyświetlone:
- Jak zaszyfrować wybrane kolumny w bazie danych.
- Jak wykonywać zapytania dotyczące zaszyfrowanych kolumn.
Uwaga / Notatka
Jeśli szukasz informacji na temat funkcji Always Encrypted z bezpiecznymi enklawami, zobacz poniższe samouczki.
Wymagania wstępne
Na potrzeby tego samouczka potrzebne są następujące elementy:
- Pusta baza danych w usłudze Azure SQL Database, usłudze Azure SQL Managed Instance lub programie SQL Server. W poniższych instrukcjach założono, że nazwa bazy danych to ContosoHR. Musisz być właścicielem bazy danych (członkiem roli db_owner ). Aby uzyskać informacje na temat tworzenia bazy danych, zobacz Szybki start: Tworzenie pojedynczej bazy danych — Azure SQL Database lub Tworzenie bazy danych w programie SQL Server.
- Opcjonalne, ale zalecane, zwłaszcza jeśli baza danych znajduje się na platformie Azure: magazyn 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, ,listcreate,unwrap keywrap key, , .verifysignZobacz 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:
- Najnowsza wersja programu SQL Server Management Studio (SSMS) lub najnowsza wersja modułów SqlServer i Az programu PowerShell. Moduł Az programu PowerShell jest wymagany tylko wtedy, gdy używasz usługi Azure Key Vault.
Krok 1. Tworzenie i wypełnianie schematu bazy danych
W tym kroku utworzysz schemat KADR i tabelę Employees . Następnie wypełnisz tabelę danymi.
Połącz się z bazą danych. Aby uzyskać instrukcje dotyczące nawiązywania połączenia z bazą danych za pomocą programu SSMS, zobacz Szybki start: nawiązywanie połączenia z usługą Azure SQL Database lub zarządzanym wystąpieniem Azure SQL Database lub Azure SQL Managed Instance przy użyciu programu SQL Server Management Studio (SSMS), lub Szybki start: nawiązywanie połączenia i wykonywanie zapytań dotyczących wystąpienia programu SQL Server przy użyciu programu SQL Server Management Studio (SSMS).
Otwórz nowe okno zapytania dla bazy danych ContosoHR .
Wklej i wykonaj poniższe instrukcje, aby utworzyć 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];Wklej i wykonaj poniższe instrukcje, aby dodać 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 2. Szyfrowanie kolumn
W tym kroku utworzysz klucz główny kolumny i klucz szyfrowania kolumny dla funkcji Always Encrypted. Następnie zaszyfrujesz kolumny SSN i Salary w tabeli Employees .
Program SSMS udostępnia kreatora, który ułatwia konfigurację Always Encrypted, umożliwiając ustawienie klucza głównego kolumny, klucza szyfrowania kolumny oraz szyfrowanie wybranych kolumn.
W Eksploratorze obiektów rozwiń węzeł Bazy danych>ContosoHR>Tabele.
Kliknij prawym przyciskiem myszy tabelę Employees (Pracownicy ) i wybierz polecenie Encrypt Columns (Szyfruj kolumny ), aby otworzyć kreatora Always Encrypted.
Wybierz pozycję Dalej na stronie Wprowadzenie kreatora.
Na stronie Wybór kolumny .
- Wybierz kolumny SSN i Salary . Wybierz szyfrowanie deterministyczne dla kolumny SSN i losowe szyfrowanie dla kolumny Wynagrodzenie . Szyfrowanie deterministyczne obsługuje zapytania, takie jak wyszukiwanie punktów, które obejmują porównania równości w zaszyfrowanych kolumnach. Szyfrowanie losowe nie obsługuje żadnych obliczeń w zaszyfrowanych kolumnach.
- Pozostaw CEK-Auto1 (nowy) jako klucz szyfrowania kolumny dla obu kolumn. Ten klucz jeszcze nie istnieje i zostanie wygenerowany przez kreatora.
- Wybierz Dalej.
Na stronie Konfiguracja klucza głównego skonfiguruj nowy klucz główny kolumny, który zostanie wygenerowany przez kreatora. Najpierw musisz wybrać miejsce przechowywania klucza głównego kolumny. Kreator obsługuje dwa typy magazynów kluczy:
- Azure Key Vault — zalecane, jeśli baza danych znajduje się na platformie Azure
- Magazyn certyfikatów systemu Windows
Ogólnie rzecz biorąc, usługa Azure Key Vault jest zalecaną opcją, zwłaszcza jeśli baza danych znajduje się na platformie Azure.
Aby użyć usługi Azure Key Vault:
- Wybierz pozycję Azure Key Vault.
- Wybierz pozycję Zaloguj się i zakończ logowanie do platformy Azure.
- Po zalogowaniu, na stronie zostanie wyświetlona lista subskrypcji oraz magazynów kluczy, do których masz dostęp. Wybierz subskrypcję platformy Azure zawierającą magazyn kluczy, której chcesz użyć.
- Wybierz magazyn kluczy.
- Wybierz Dalej.
Aby użyć magazynu certyfikatów systemu Windows:
Wybierz Magazyn certyfikatów systemu Windows.
Pozostaw domyślny wybór Bieżący użytkownik — spowoduje to, że kreator wygeneruje certyfikat (twój nowy klucz główny kolumny) w repozytorium Bieżący użytkownik.
Wybierz Dalej.
Na stronie Ustawienia szyfrowania na miejscu nie jest wymagana żadna dodatkowa konfiguracja, ponieważ baza danych nie ma włączonej enklawy. Wybierz Dalej.
Na stronie Ustawienia uruchamiania zostanie wyświetlony monit o kontynuowanie szyfrowania lub wygenerowanie skryptu programu PowerShell do wykonania później. Pozostaw ustawienia domyślne i wybierz pozycję Dalej.
Na stronie Podsumowanie kreator informuje o akcjach, które zostaną wykonane. Sprawdź, czy wszystkie informacje są poprawne, a następnie wybierz pozycję Zakończ.
Na stronie Wyniki możesz monitorować postęp operacji kreatora. Poczekaj, aż wszystkie operacje zakończą się pomyślnie, a następnie wybierz pozycję Zamknij.
(Opcjonalnie) Zapoznaj się ze zmianami, które kreator wprowadził w bazie danych.
Rozwiń ContosoHR>Security>Klucze Always Encrypted, aby eksplorować obiekty metadanych dla klucza głównego kolumny i szyfrowanie kolumny, które utworzył kreator.
Możesz również uruchomić poniższe zapytania względem widoków wykazu systemu, które zawierają metadane klucza.
SELECT * FROM sys.column_master_keys; SELECT * FROM sys.column_encryption_keys SELECT * FROM sys.column_encryption_key_valuesW Eksploratorze obiektów kliknij prawym przyciskiem myszy tabelę Employees i wybierz polecenie Skryptuj tabelę jako>Utwórz do>Nowe okno edytora zapytań. Spowoduje to otwarcie nowego okna zapytania z instrukcją CREATE TABLE dla tabeli Employees . Zwróć uwagę na klauzulę ENCRYPTED WITH wyświetlaną w definicjach kolumn SSN i Salary .
Możesz również uruchomić poniższe zapytanie względem elementu sys.columns , aby pobrać metadane szyfrowania na poziomie kolumny dla dwóch zaszyfrowanych kolumn.
SELECT [name] , [encryption_type] , [encryption_type_desc] , [encryption_algorithm_name] , [column_encryption_key_id] FROM sys.columns WHERE [encryption_type] IS NOT NULL;
Krok 3. Wykonywanie zapytań względem zaszyfrowanych kolumn
Nawiąż połączenie z bazą danych z wyłączoną funkcją Always Encrypted dla połączenia.
- Otwórz nowe okno zapytania.
- Kliknij prawym przyciskiem myszy w dowolnym miejscu w oknie zapytania i wybierz polecenie Zmień połączenie>. To spowoduje otwarcie okna dialogowego Łączenie z silnikiem bazy danych.
- Wybierz Opcje<<. Spowoduje to wyświetlenie dodatkowych kart w oknie dialogowym Łączenie z silnikiem bazy danych.
- Wybierz kartę Always Encrypted .
- Upewnij się, że pozycja Włącz funkcję Always Encrypted (szyfrowanie kolumn) nie jest zaznaczona.
- Wybierz i podłącz.
Wklej i wykonaj następujące zapytanie. Zapytanie powinno zwracać dane zaszyfrowane binarne.
SELECT [SSN], [Salary] FROM [HR].[Employees]
Połącz się z bazą danych z włączoną funkcją Always Encrypted dla połączenia.
- Kliknij prawym przyciskiem myszy w dowolnym miejscu w oknie zapytania i wybierz
Zmień połączenie . Spowoduje to otwarcie okna dialogowego Łączenie z silnikiem bazy danych. - Wybierz Opcje<<. Spowoduje to wyświetlenie dodatkowych kart w oknie dialogowym Łączenie z silnikiem bazy danych.
- Wybierz kartę Always Encrypted .
- Wybierz pozycję Włącz funkcję Always Encrypted (szyfrowanie kolumn).
- Wybierz i podłącz.
- Kliknij prawym przyciskiem myszy w dowolnym miejscu w oknie zapytania i wybierz
Uruchom ponownie to samo zapytanie. Ponieważ połączenie z funkcją Always Encrypted jest włączone dla połączenia z bazą danych, sterownik klienta w programie SSMS podejmie próbę odszyfrowania danych przechowywanych w obu zaszyfrowanych kolumnach. Jeśli używasz usługi Azure Key Vault, może zostać wyświetlony monit o zalogowanie się do platformy Azure.
Włącz parametryzacja dla funkcji Always Encrypted. Ta funkcja umożliwia uruchamianie zapytań filtrujących dane według zaszyfrowanych kolumn (lub wstawiania danych do zaszyfrowanych kolumn).
- Wybierz pozycję Zapytanie z menu głównego programu SSMS.
- Wybierz pozycję Opcje zapytania....
- Przejdź do wykonywanie>Zaawansowane.
- Upewnij się, że opcja Włącz parametryzacja dla funkcji Always Encrypted jest zaznaczona.
- Kliknij przycisk OK.
Wklej i wykonaj poniższe zapytanie, które filtruje dane według zaszyfrowanej kolumny SSN . Zapytanie powinno zwrócić jeden wiersz zawierający wartości zwykłego tekstu.
DECLARE @SSN [char](11) = '795-73-9838' SELECT [SSN], [Salary] FROM [HR].[Employees] WHERE [SSN] = @SSNOpcjonalnie, jeśli używasz usługi Azure Key Vault skonfigurowanej z modelem uprawnień zasad dostępu, wykonaj poniższe kroki, aby zobaczyć, co się stanie, gdy użytkownik spróbuje pobrać dane w postaci zwykłego tekstu z zaszyfrowanych kolumn bez dostępu do klucza głównego kolumny chroniącego dane.
- Usuń kluczowe uprawnienie
unwrapdla siebie w zasadach dostępu dla sejfu kluczy. Aby uzyskać więcej informacji, zobacz Przypisywanie zasad dostępu do usługi Key Vault. - Ponieważ sterownik klienta w programie SSMS buforuje klucze szyfrowania kolumny uzyskane z magazynu kluczy przez 2 godziny, zamknij program SSMS i otwórz go ponownie. Zapewni to, że pamięć podręczna kluczy jest pusta.
- Połącz się z bazą danych z włączoną funkcją Always Encrypted dla połączenia.
- Wklej i wykonaj następujące zapytanie. Zapytanie powinno zakończyć się niepowodzeniem z komunikatem o błędzie wskazującym, że brakuje wymaganych
unwrapuprawnień.
SELECT [SSN], [Salary] FROM [HR].[Employees]- Usuń kluczowe uprawnienie
Dalsze kroki
Zobacz także
- Dokumentacja funkcji Always Encrypted
- Dokumentacja funkcji Always Encrypted z użyciem bezpiecznych enklaw
- Aprowizuj klucze Always Encrypted przy użyciu programu SQL Server Management Studio
- Konfigurowanie funkcji Always Encrypted przy użyciu programu PowerShell
- Asystent Always Encrypted
- Kolumny zapytań przy użyciu funkcji Always Encrypted z programem SQL Server Management Studio