SQL Server i klucze szyfrowania bazy danych (Database Engine)

Dotyczy:SQL Server

Program SQL Server używa kluczy szyfrowania do zabezpieczania danych, poświadczeń i informacji o połączeniu przechowywanych w bazie danych serwera. Program SQL Server ma dwa rodzaje kluczy: symetryczne i asymetryczne. Klucze symetryczne używają tego samego hasła do szyfrowania i odszyfrowywania danych. Klucze asymetryczne używają jednego hasła do szyfrowania danych (nazywanego kluczem publicznym ), a drugiego do odszyfrowania danych (nazywanego kluczem prywatnym ).

W programie SQL Server klucze szyfrowania obejmują kombinację kluczy publicznych, prywatnych i symetrycznych, które są używane do ochrony poufnych danych. Klucz symetryczny jest tworzony podczas inicjowania programu SQL Server podczas pierwszego uruchamiania wystąpienia programu SQL Server. SQL Server wykorzystuje ten klucz do szyfrowania wrażliwych danych przechowywanych w SQL Server. System operacyjny tworzy klucze publiczne i prywatne, które chronią klucz symetryczny. Para kluczy publicznych i prywatnych jest tworzona dla każdego wystąpienia programu SQL Server, które przechowuje poufne dane w bazie danych.

Aplikacje dla kluczy SQL Server i baz danych

Program SQL Server ma dwa podstawowe zastosowania kluczy: klucz główny usługi (SMK), wygenerowany dla wystąpienia programu SQL Server, oraz klucz główny bazy danych (DMK) używany w bazie danych.

Klucz główny usługi

Klucz główny serwisowej jest korzeniem hierarchii szyfrowania programu SQL Server. SQL Server generuje SMK przy pierwszym uruchomieniu instancji i używa go do szyfrowania haseł serwera połączonego, poświadczeń oraz klucza głównego bazy danych w każdej bazie danych.

SMK jest szyfrowany za pomocą lokalnego klucza maszynowego lub Windows Data Protection API (DPAPI). DPAPI wykorzystuje klucz wyprowadzony z danych poświadczeń Windows konta usługi SQL Server. Ponieważ klucz jest chroniony na oba sposoby, główny klucz usługi może zostać otwarty przez konto usługowe, pod którym został utworzony, lub przez podmiot mający dostęp do danych uwierzytelniających maszyny.

SQL Server wykorzystuje algorytm szyfrowania AES do ochrony klucza głównego usługi oraz klucza głównego bazy danych. AES zastąpił algorytm 3DES używany w wersjach wcześniejszych niż SQL Server 2012 (11.x). Po aktualizacji instancji Database Engine z jednej z tych wcześniejszych wersji, zregeneruj SMK i DMK, aby zaktualizować klucze główne do AES. Aby uzyskać więcej informacji na temat ponownego generowania zestawu SMK, zobacz ALTER SERVICEALTER SERVICE MASTER KEY (Transact-SQL) i ALTER MASTER KEY (Transact-SQL).

Klucz główny bazy danych

Klucz główny bazy danych to klucz symetryczny, który chroni klucze prywatne certyfikatów oraz klucze asymetryczne obecne w bazie danych. Może także szyfrować dane, ale ma ograniczenia długości, które sprawiają, że jest to mniej praktyczne w przypadku danych niż w przypadku klucza asymetrycznego. Aby umożliwić automatyczne odszyfrowanie klucza głównego bazy danych, kopia klucza jest szyfrowana za pomocą SMK. SQL Server przechowuje tę kopię zarówno w bazie danych, w której klucz jest używany, jak i w systemowej bazie danych master.

Kopia DMK przechowywana w systemowej bazie danych master jest automatycznie aktualizowana bez powiadomienia za każdym razem, gdy DMK się zmienia. Możesz zmienić to ustawienie domyślne za pomocą opcji DROP ENCRYPTION BY SERVICE MASTER KEY elementu ALTER MASTER KEY (Transact-SQL). DMK, który nie jest szyfrowany przez klucz serwisowy, musi zostać otwarty za pomocą OPEN MASTER KEYOPEN MASTER KEY (Transact-SQL) i hasła.

Zarządzanie programem SQL Server i kluczami bazy danych

Zarządzanie kluczami szyfrującymi polega na tworzeniu nowych kluczy bazy danych, tworzeniu kopii zapasowych kluczy serwera i bazy danych oraz wiedzy, kiedy i jak przywrócić, usunąć lub zmienić klucze.

Aby zarządzać kluczami symetrycznymi, użyj narzędzi dołączonych do SQL Server do wykonywania następujących zadań:

  • Wykonaj kopię zapasową kluczy serwera i bazy danych, aby móc ich użyć do odzyskania instalacji serwera lub jako części planowanej migracji.
  • Przywróć wcześniej zapisany klucz do bazy danych. Przywrócenie klucza pozwala nowej instancji serwera uzyskać dostęp do istniejących danych, których pierwotnie nie zaszyfrowała.
  • Usuń zaszyfrowane dane w bazie danych w mało prawdopodobnym przypadku, gdy nie można już uzyskać dostępu do zaszyfrowanych danych.
  • Odtwórz klucze i ponownie zaszyfruj dane w mało prawdopodobnym przypadku, gdy klucz zostanie przejęty. Jako najlepszą praktykę bezpieczeństwa, twórz klucze ponownie okresowo, na przykład co kilka miesięcy, aby chronić serwer przed atakami próbującymi je rozszyfrować.
  • Dodaj lub usuń instancję serwera z wdrożenia rozproszonego serwerów, w którym wiele serwerów współdzieli zarówno pojedynczą bazę danych, jak i klucz zapewniający odwracalne szyfrowanie dla tej bazy danych.

Ważne informacje o bezpieczeństwie

Aby uzyskać dostęp do obiektów zabezpieczonych przez główny klucz usługi, potrzebujesz albo konta usługi SQL Server, którego użyto do utworzenia klucza, albo konta komputera (maszyny) powiązanego z systemem, w którym utworzono klucz. Możesz zmienić konto usługi SQL Server lub konto komputerowe bez utraty dostępu do klucza. Jednak jeśli zmienisz oba konta, tracisz dostęp do klucza głównego serwisu. Jeśli stracisz dostęp do klucza głównego serwisu bez jednego z tych dwóch elementów, nie możesz odszyfrować danych i obiektów, które zaszyfrował oryginalny klucz.

Nie możesz przywrócić połączeń zabezpieczonych kluczem serwisowym, jeśli nie masz tego klucza.

Aby uzyskać dostęp do obiektów i danych zabezpieczonych kluczem głównym bazy danych, wystarczy hasło, które pomaga zabezpieczyć klucz.

Ostrzeżenie

Jeśli stracisz cały dostęp do kluczy opisanych w tym artykule, tracisz dostęp do obiektów, połączeń i danych zabezpieczonych przez te klucze. Możesz przywrócić klucz główny serwisu zgodnie z opisem w sekcji Przywróć klucz główny serwisu lub wrócić do oryginalnego systemu szyfrującego, aby odzyskać dostęp. Nie ma obejścia, by odzyskać dostęp.