Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: SQL Server 2019 (15.x) i nowszych — tylko system Windows
Azure SQL Database
Always Encrypted z bezpiecznymi enklawami umożliwia niektórym instrukcjom Transact-SQL (T-SQL) wykonywanie poufnych obliczeń na zaszyfrowanych kolumnach bazy danych w bezpiecznej enklawie po stronie serwera.
Stwierdzenia używające bezpiecznych enklaw
Następujące typy instrukcji T-SQL wykorzystują bezpieczne enklawy.
Instrukcje DDL korzystające z bezpiecznych enklaw
Następujące typy instrukcji języka definicji danych (DDL) wymagają bezpiecznych enklaw.
- polecenie ALTER TABLE column_definition (Transact-SQL), które wyzwalają operacje kryptograficzne w miejscu przy użyciu kluczy z obsługą enklawy. Aby uzyskać więcej informacji, zobacz Konfigurowanie szyfrowania kolumn przy użyciu funkcji Always Encrypted z bezpiecznymi enklawami.
- CREATE INDEX (Transact-SQL) i ALTER INDEX (Transact-SQL) instrukcje, które tworzą lub zmieniają indeksy na kolumnach z obsługą enklawy przy użyciu szyfrowania losowego. Aby uzyskać więcej informacji, zobacz Tworzenie i używanie indeksów na kolumnach przy użyciu Always Encrypted z bezpiecznymi enklawami.
Instrukcje DML korzystające z bezpiecznych enklaw
Następujące instrukcje Data Manipulation Language (DML) lub zapytania dotyczące kolumn obsługujących enklawy przy użyciu szyfrowania z randomizacją wymagają bezpiecznych enklaw:
- Zapytania korzystające z co najmniej jednego z następujących operatorów Transact-SQL obsługiwanych wewnątrz bezpiecznych enklaw:
- Operatory porównania
- POMIĘDZY (Transact-SQL)
- IN (Transact-SQL)
- LIKE (Transact-SQL)
- DISTINCT
- sprzężenia — program SQL Server 2019 (15.x) obsługuje tylko sprzężenia zagnieżdżone. Programy SQL Server 2022 (16.x) i Azure SQL Database obsługują zagnieżdżone sprzężenia, skróty i scalania
- SELECT — klauzula ORDER BY (Transact-SQL). Obsługiwane w programie SQL Server 2022 (16.x) i usłudze Azure SQL Database. Nieobsługiwane w programie SQL Server 2019 (15.x)
- SELECT — klauzula GROUP BY (Transact-SQL). Obsługiwane w programie SQL Server 2022 (16.x) i usłudze Azure SQL Database. Nieobsługiwane w programie SQL Server 2019 (15.x)
- Zapytania, które wstawiają, aktualizują lub usuwają wiersze i tym samym wyzwalają proces wstawiania i/lub usuwania klucza indeksu do/z indeksu w kolumnie, w której włączono obsługę enklawy. Aby uzyskać więcej informacji, zobacz Tworzenie i używanie indeksów w kolumnach przy użyciu funkcji Always Encrypted z bezpiecznymi enklawami
Notatka
Operacje na indeksach i poufnych zapytaniach DML korzystających z enklaw są obsługiwane tylko w kolumnach z obsługą enklawy, które używają szyfrowania losowego. Szyfrowanie deterministyczne nie jest obsługiwane.
Poziom zgodności bazy danych powinien być ustawiony na program SQL Server 2022 (160) lub nowszy.
W usłudze Azure SQL Database i w programie SQL Server 2022 (16.x) poufne zapytania korzystające z enklaw dla kolumny łańcucha znaków (char
, nchar
) wymagają, aby kolumna miała sortowanie typu punktu kodowego binarnego (_BIN2) lub sortowanie UTF-8. W programie SQL Server 2019 (15.x) wymagane jest sortowanie danych a_BIN2.
Polecenia DBCC używające bezpiecznych enklaw
DBCC (Transact-SQL) polecenia administracyjne, które obejmują sprawdzanie integralności indeksów, mogą również wymagać bezpiecznych enklaw, jeśli baza danych zawiera indeksy w kolumnach obsługujących enklawy z wykorzystaniem szyfrowania losowego. Na przykład DBCC CHECKDB (Transact-SQL) i DBCC CHECKTABLE (Transact-SQL).
Wymagania wstępne dotyczące uruchamiania poleceń z wykorzystaniem bezpiecznych enklaw
Środowisko musi spełniać następujące wymagania, aby obsługiwać wykonywanie instrukcji korzystających z bezpiecznej enklawy.
Twoja instancja SQL Server lub serwer bazy danych w usłudze Azure SQL Database muszą być poprawnie skonfigurowane do obsługi enklaw i poświadczania, jeśli ma to zastosowanie/jest wymagane. Aby uzyskać więcej informacji, zobacz konfigurowanie bezpiecznej enklawy i uwierzytelnianie.
Podczas nawiązywania połączenia z bazą danych z poziomu aplikacji lub narzędzia (takiego jak SQL Server Management Studio) upewnij się, że:
Użyj wersji sterownika klienta lub wersji narzędzia obsługującej funkcję Always Encrypted z bezpiecznymi enklawami.
- Zobacz Tworzenie aplikacji przy użyciu funkcji Always Encrypted z bezpiecznymi enklawami, aby uzyskać informacje na temat sterowników klientów obsługujących funkcję Always Encrypted z bezpiecznymi enklawami.
- Zapoznaj się z poniższymi sekcjami, aby uzyskać informacje na temat narzędzi obsługujących funkcję Always Encrypted z bezpiecznymi enklawami.
Włącz funkcję Always Encrypted dla połączenia z bazą danych.
Określ protokół atestacji, który definiuje, czy aplikacja lub narzędzie musi przeprowadzić atestację enklawy przed przesłaniem zapytań do enklawy, oraz z której usługi atestacji należy skorzystać. Większość narzędzi i sterowników obsługuje następujące protokoły zaświadczania:
- Attestacja Microsoft Azure — wymusza zaświadczenie przy użyciu usługi Microsoft Azure Attestation.
- Usługa Host Guardian — wymusza uwierzytelnianie przy użyciu usługi Host Guardian.
- Brak — umożliwia korzystanie z enklaw bez zaświadczania.
W poniższej tabeli określono protokoły zaświadczania prawidłowe dla konkretnych produktów SQL i technologii enklawy:
Produkt Technologia enklawy Obsługiwane protokoły zaświadczania SQL Server 2019 (15.x) i nowsze Enklawy VBS Usługa Ochrona hosta, Brak Azure SQL Database Enklawy SGX (w bazach danych serii DC) Zaświadczenie platformy Microsoft Azure Azure SQL Database Enklawy VBS Żaden
Określ adres URL atestacji, który jest prawidłowy dla danego środowiska, jeśli używasz zaświadczania.
- Jeśli używasz programu SQL Server i usługi Ochrona hosta (HGS), zobacz Określanie i udostępnianie adresu URL zaświadczania usługi HGS.
- Jeśli używasz usługi Azure SQL Database z enklawami Intel SGX i Zaświadczania Microsoft Azure, sprawdź Określanie adresu URL atestu dla zasad zaświadczania.
Wymagania wstępne dotyczące uruchamiania instrukcji języka T-SQL przy użyciu enklaw w programie SSMS
Pobierz najnowszą wersję programu SQL Server Management Studio (SSMS).
Upewnij się, że uruchamiasz instrukcje z okna zapytania, które używa połączenia, które ma poprawnie skonfigurowane parametry Always Encrypted i zaświadczania.
W oknie dialogowym Połącz z serwerem określ nazwę serwera, wybierz metodę uwierzytelniania i określ poświadczenia.
Wybierz opcje >>, a następnie kartę Właściwości połączenia . Podaj nazwę bazy danych.
Wybierz kartę Always Encrypted.
Wybierz pozycję Włącz funkcję Always Encrypted (szyfrowanie kolumn).
Wybierz pozycję Włącz bezpieczne enklawy.
Ustaw protokołu na:
- Host Guardian Service, jeśli używasz programu SQL Server.
- Zaświadczenie Microsoft Azure, jeśli używasz usługi Azure SQL Database z enklawami Intel SGX.
- Brak, jeśli używasz usługi Azure SQL Database z enklawami VBS.
Określ adres URL zaświadczania enklawy. Nie ma zastosowania, gdy protokół jest ustawiony na wartość None. Na przykład
https://hgs.bastion.local/Attestation
lubhttps://contososqlattestation.uks.attest.azure.net/attest/SgxEnclave
.Wybierz Connect.
Jeśli zostanie wyświetlony monit o włączenie parametryzacji dla zapytań Always Encrypted, wybierz pozycję Włącz.
Aby uzyskać więcej informacji, zobacz Włączanie i wyłączanie funkcji Always Encrypted dla połączenia z bazą danych.
Wymagania wstępne dotyczące uruchamiania instrukcji języka T-SQL przy użyciu enklaw w narzędziu Azure Data Studio
Zalecana jest minimalna zalecana wersja 1.23 lub nowsza. Upewnij się, że uruchamiasz instrukcje z okna zapytania, które używa połączenia z włączonym funkcją Always Encrypted, a także prawidłowym protokołem zaświadczania i skonfigurowanym adresem URL zaświadczania.
W oknie dialogowym Połączenie wybierz pozycję Zaawansowane....
Aby włączyć funkcję Always Encrypted dla połączenia, ustaw pole Always Encrypted na Włączone.
Aby włączyć bezpieczne enklawy, ustaw pole Secure enklawy na włączone.
Określ protokół zaświadczania i adres URL zaświadczania.
- Jeśli używasz programu SQL Server, ustaw protokołu zaświadczania na usługa ochrona hosta i wprowadź adres URL zaświadczania usługi ochrona hosta w polu adres URL zaświadczania enklawy enklawy.
- Jeśli używasz bazy danych serii DC z funkcją Intel SGX w usłudze Azure SQL Database, ustaw Protokół Zaświadczania na Azure Attestation i wprowadź adres URL zaświadczania, podając politykę w Microsoft Azure Attestation w polu Enclave Attestation URL.
- Jeśli używasz bazy danych z enklawami VBS włączonymi w usłudze Azure SQL Database, ustaw wartość Attestation Protocol na wartość None.
Wybierz OK, aby zamknąć Właściwości zaawansowane.
Aby uzyskać więcej informacji, zobacz Włączanie i wyłączanie funkcji Always Encrypted dla połączenia z bazą danych.
Jeśli planujesz uruchamiać sparametryzowane zapytania DML, należy również włączyć parametryzacja dla funkcji Always Encrypted.
Przykłady
Ta sekcja zawiera przykłady zapytań DML korzystających z enklaw.
W przykładach użyto poniższego schematu.
CREATE SCHEMA [HR];
GO
CREATE TABLE [HR].[Jobs](
[JobID] [int] IDENTITY(1,1) PRIMARY KEY,
[JobTitle] [nvarchar](50) NOT NULL,
[MinSalary] [money] ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL,
[MaxSalary] [money] ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL
);
GO
CREATE TABLE [HR].[Employees](
[EmployeeID] [int] IDENTITY(1,1) PRIMARY KEY,
[SSN] [char](11) ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL,
[FirstName] [nvarchar](50) NOT NULL,
[LastName] [nvarchar](50) NOT NULL,
[Salary] [money] ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL,
[JobID] [int] NULL,
FOREIGN KEY (JobID) REFERENCES [HR].[Jobs] (JobID)
);
GO
Dokładne wyszukiwanie dopasowań
Poniższe zapytanie wykonuje dokładne wyszukiwanie dopasowania w zaszyfrowanej kolumnie ciągu SSN
.
DECLARE @SSN char(11) = '795-73-9838';
SELECT * FROM [HR].[Employees] WHERE [SSN] = @SSN;
GO
Wyszukiwanie wzorców
Poniższe zapytanie wykonuje wyszukiwanie pasujących do wzorca w zaszyfrowanej kolumnie ciągu SSN
, wyszukując pracowników, którzy mają określone cztery ostatnie cyfry numeru ubezpieczenia społecznego.
DECLARE @SSN char(11) = '795-73-9838';
SELECT * FROM [HR].[Employees] WHERE [SSN] = @SSN;
GO
Porównanie zakresów
Poniższe zapytanie wykonuje porównanie zakresu w zaszyfrowanej kolumnie Salary
, wyszukując pracowników z wynagrodzeniami w określonym zakresie.
DECLARE @MinSalary money = 40000;
DECLARE @MaxSalary money = 45000;
SELECT * FROM [HR].[Employees] WHERE [Salary] > @MinSalary AND [Salary] < @MaxSalary;
GO
Łączy
Poniższe zapytanie wykonuje sprzężenia między tabelami Employees
i Jobs
przy użyciu zaszyfrowanej kolumny Salary
. Zapytanie pobiera pracowników z wynagrodzeniami spoza widełek płacowych dla stanowiska pracownika.
SELECT * FROM [HR].[Employees] e
JOIN [HR].[Jobs] j
ON e.[JobID] = j.[JobID] AND e.[Salary] > j.[MaxSalary] OR e.[Salary] < j.[MinSalary];
GO
Sortowanie
Poniższe zapytanie sortuje rekordy pracowników na podstawie zaszyfrowanej kolumny Salary
, pobierając 10 pracowników z najwyższymi wynagrodzeniami.
Notatka
Sortowanie zaszyfrowanych kolumn jest obsługiwane w programach SQL Server 2022 (16.x) i Azure SQL Database, ale nie w programie SQL Server 2019 (15.x).
SELECT TOP(10) * FROM [HR].[Employees]
ORDER BY [Salary] DESC;
GO
Następne kroki
Zobacz też
- Rozwiązywanie typowych problemów związanych z funkcją Always Encrypted oraz bezpiecznymi enklawami
- Wprowadzenie do korzystania z funkcji Always Encrypted z bezpiecznymi enklawami
- Konfigurowanie szyfrowania kolumn bezpośrednio na miejscu przy użyciu Always Encrypted z bezpiecznymi enklawami
- Tworzenie i używanie indeksów na kolumnach za pomocą funkcji Always Encrypted z bezpiecznymi enklawami