Rozszerzone zarządzanie kluczami (EKM)

Dotyczy:SQL Server

Program SQL Server udostępnia funkcje szyfrowania danych wraz z rozszerzalnym zarządzaniem kluczami (EKM) przy użyciu providera Microsoft API kryptograficznego (MSCAPI) do szyfrowania i generowania kluczy. Klucze szyfrujące do szyfrowania danych i kluczy są tworzone w przejściowych kontenerach kluczy i musisz je wyeksportować z dostawcy przed zapisaniem ich w bazie danych. To podejście pozwala SQL Server zarządzać kluczami, w tym hierarchią kluczy szyfrowania i kopią zapasową kluczy.

W obliczu rosnącego zapotrzebowania na zgodność z przepisami oraz troski o ochronę danych organizacje wykorzystują szyfrowanie jako sposób na zapewnienie rozwiązania typu obrona warstwowa. Takie podejście jest często niepraktyczne przy użyciu tylko narzędzi do zarządzania szyfrowaniem bazy danych. Dostawcy sprzętu oferują produkty umożliwiające zarządzanie kluczami korporacyjnymi z wykorzystaniem sprzętowych modułów bezpieczeństwa (HSM). Urządzenia HSM przechowują klucze szyfrowania na sprzęcie lub modułach oprogramowania. To podejście jest bezpieczniejsze, ponieważ klucze szyfrujące nie są przechowywane razem z zaszyfrowanymi danymi.

Kilku dostawców oferuje moduły HSM zarówno do zarządzania kluczami, jak i do przyspieszania szyfrowania. Urządzenia HSM używają interfejsów sprzętowych z procesem serwera jako pośrednika między aplikacją a modułem HSM. Również implementują dostawców usług MSCAPI w swoich modułach, które mogą być sprzętem lub oprogramowaniem. MSCAPI często oferuje jedynie część funkcjonalności, którą oferuje HSM. Dostawcy mogą również dostarczać oprogramowanie do zarządzania modułami HSM, konfiguracją kluczy i dostępem do kluczy.

Implementacje HSM różnią się w zależności od dostawcy, a ich użycie z SQL Server wymaga wspólnego interfejsu. Chociaż MSCAPI oferuje ten interfejs, obsługuje on jedynie część funkcji HSM. Ma również inne ograniczenia, takie jak brak możliwości natywnego utrwalania kluczy symetrycznych i brak obsługi zorientowanej na sesję.

SQL Server Extensible Key Management pozwala zewnętrznym dostawcom EKM i HSM rejestrować swoje moduły w SQL Server. Po zarejestrowaniu modułu użytkownicy SQL Server mogą korzystać z kluczy szyfrowania przechowywanych na nim. SQL Server może wtedy korzystać z zaawansowanych funkcji szyfrowania, które obsługują te moduły, takich jak szyfrowanie masowe i deszyfrowanie oraz funkcje zarządzania kluczami, takie jak okres ważności kluczy i rotacja kluczy.

Gdy uruchamiasz SQL Server w maszynie wirtualnej Azure, SQL Server może korzystać z kluczy przechowywanych w Azure Key Vault. Więcej informacji można znaleźć w artykule Rozszerzalne zarządzanie kluczami przy użyciu usługi Azure Key Vault (SQL Server).

Konfiguracja EKM

Extensible Key Management nie jest dostępne we wszystkich edycjach SQL Server. Listę funkcji wspieranych przez edycje w SQL Server można znaleźć w artykule Edycje i wspierane funkcje SQL Server 2025.

Domyślnie rozszerzone zarządzanie kluczami jest wyłączone. Aby włączyć tę funkcję, użyj procedury przechowywanej sp_configure (Transact-SQL) z następującą opcją i wartością:

sp_configure 'show advanced', 1;
GO
RECONFIGURE;
GO
sp_configure 'EKM provider enabled', 1;
GO
RECONFIGURE;
GO

Uwaga / Notatka

Jeśli użyjesz sp_configure dla tej opcji w wersjach SQL Server, które nie obsługują EKM, otrzymasz błąd.

Aby wyłączyć tę funkcję, ustaw wartość na 0. Aby uzyskać więcej informacji na temat ustawiania opcji serwera, zobacz sp_configure (Transact-SQL).

Jak używać EKM

SQL Server Extensible Key Management pozwala przechowywać klucze szyfrujące chroniące pliki bazy danych na urządzeniu zewnętrznym, takim jak karta inteligentna, urządzenie USB lub moduł EKM/HSM. Chroni także dane przed administratorami baz danych, z wyjątkiem członków stałej roli serwera sysadmin. Dane można szyfrować, używając kluczy szyfrujących, do których dostęp ma tylko użytkownik bazy danych na zewnętrznym module EKM/HSM.

Rozszerzone zarządzanie kluczami zapewnia również następujące korzyści:

  • Dodatkowa kontrola autoryzacji, która umożliwia rozdzielenie obowiązków.
  • Wyższa wydajność w szyfrowaniu i deszyfrowaniu opartym na sprzęcie.
  • Generowanie klucza szyfrowania zewnętrznego.
  • Zewnętrzne przechowywanie kluczy szyfrowania, które fizycznie oddziela dane od kluczy.
  • Pobieranie klucza szyfrowania.
  • Zewnętrzne przechowywanie klucza szyfrowania, które umożliwia rotację klucza szyfrowania.
  • Łatwiejsze odzyskiwanie klucza szyfrowania.
  • Zarządzalna dystrybucja kluczy szyfrowania.
  • Bezpieczne usuwanie kluczy szyfrowania.

Można użyć rozszerzalnego zarządzania kluczami dla kombinacji nazwy użytkownika i hasła lub innych metod zdefiniowanych przez sterownik EKM.

Ostrzeżenie

W przypadku rozwiązywania problemów pomoc techniczna firmy Microsoft może wymagać klucza szyfrowania od dostawcy EKM. W celu rozwiązania problemu może być również konieczne uzyskanie dostępu do narzędzi lub procesów dostawcy.

Uwierzytelnianie za pomocą urządzenia EKM

Moduł EKM może obsługiwać więcej niż jeden typ uwierzytelniania. Każdy dostawca udostępnia tylko jeden typ uwierzytelniania dla programu SQL Server. To znaczy, jeśli moduł obsługuje zarówno podstawowe, jak i inne typy uwierzytelniania, udostępnia jeden lub drugi, ale nie oba.

Podstawowe uwierzytelnianie specyficzne dla urządzenia EKM za pomocą nazwy użytkownika i hasła

Dla modułów EKM obsługujących podstawową autoryzację za pomocą pary nazwy użytkownika i hasła, SQL Server zapewnia transparentne uwierzytelnianie za pomocą danych uwierzytelniających. Aby uzyskać więcej informacji na temat poświadczeń, zobacz Credentials (Aparat bazy danych).

Możesz utworzyć poświadczenie dla dostawcy EKM i przypisać je do logowania, czy to konta Windows, czy SQL Server, aby uzyskać dostęp do modułu EKM dla każdego logowania osobno. Pole tożsamości w poświadczeniu zawiera nazwę użytkownika, a pole sekretu zawiera hasło do połączenia z modułem EKM.

Jeśli dla dostawcy EKM nie istnieje poświadczenie skojarzone z loginem, SQL Server używa poświadczeń przypisanych do konta usługi.

Logowanie może mieć przypisane wiele danych uwierzytelniających, o ile każde z nich jest używane dla odrębnego dostawcy EKM. Musi istnieć tylko jedno zamapowane poświadczenie dla dostawcy EKM na logowanie. Możesz przypisać to samo poświadczenie do innych loginów.

Inne typy uwierzytelniania specyficznego dla urządzeń EKM

W przypadku modułów EKM wykorzystujących uwierzytelnianie inne niż Windows lub kombinacje nazw użytkownika i haseł, musisz przeprowadzić uwierzytelnianie niezależnie od SQL Server.

Szyfrowanie i deszyfrowanie przez urządzenie EKM

Użyj następujących funkcji i cech do szyfrowania i odszyfrowywania danych za pomocą kluczy symetrycznych i asymetrycznych:

Funkcja lub cecha Reference
Szyfrowanie klucza symetrycznego CREATE SYMMETRIC KEY (Transact-SQL)
Szyfrowanie kluczem asymetrycznym CREATE ASYMMETRIC KEY (Transact-SQL)
EncryptByKey(key_guid, 'cleartext', ...) ENCRYPTBYKEY (Transact-SQL)
DecryptByKey(ciphertext, ...) DECRYPTBYKEY (Transact-SQL)
EncryptByAsmKey(key_guid, 'cleartext') ENCRYPTBYASYMKEY (Transact-SQL)
DecryptByAsmKey(ciphertext) DECRYPTBYASYMKEY (Transact-SQL)

Szyfrowanie kluczy bazy danych za pomocą kluczy EKM

Program SQL Server może używać kluczy EKM do szyfrowania innych kluczy w bazie danych. Możesz tworzyć i używać zarówno kluczy symetrycznych, jak i asymetrycznych na urządzeniu EKM. Za pomocą kluczy asymetrycznych EKM można szyfrować natywne klucze symetryczne (nienależące do EKM).

Poniższy przykład tworzy symetryczny klucz bazy danych i szyfruje go, używając klucza w module EKM.

CREATE SYMMETRIC KEY Key1
WITH ALGORITHM = AES_256
ENCRYPTION BY EKM_AKey1;
GO

-- Open the database key.
OPEN SYMMETRIC KEY Key1
DECRYPTION BY EKM_AKey1;

Więcej informacji o kluczach bazy danych i serwera w SQL Server można znaleźć w artykule Klucze szyfrowania programu SQL Server i bazy danych (Database Engine).

Uwaga / Notatka

Nie da się zaszyfrować jednego klucza EKM innym kluczem EKM.

SQL Server nie obsługuje podpisywania modułów asymetrycznymi kluczami generowanymi przez dostawcę EKM.