Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa

Darmowa diagnoza laptopa

Dojazd do klienta bezpłatnie

Dojazd do klienta bezpłatnie

Laptopy zastępcze bezpłatnie

Laptopy zastępcze bezpłatnie

Odbiór i zwrot sprzętu bezpłatnie

Odbiór i zwrot sprzętu bezpłatnie

Service Master Key

Termin Definicja
Service Master Key

Service Master Key to główny klucz szyfrujący instancji, chroniący pozostałe klucze i certyfikaty na poziomie serwera.

Rola Service Master Key w hierarchii szyfrowania SQL Server

Service Master Key, w skrócie SMK, jest głównym kluczem szyfrującym instancji Microsoft SQL Server. Stanowi najwyższy element hierarchii kluczy używanej przez aparat Database Engine. Nie służy bezpośrednio do szyfrowania tabel ani pojedynczych kolumn. Jego zadaniem jest zabezpieczanie innych kluczy i sekretów wykorzystywanych na poziomie serwera, bez których SQL Server nie mógłby poprawnie odczytać części chronionych informacji konfiguracyjnych.

SMK jest tworzony automatycznie podczas inicjalizacji instancji SQL Server. Klucz jest przechowywany w sposób powiązany z usługą SQL Server i mechanizmami ochrony systemu Windows. Dostęp do niego nie polega na wpisywaniu hasła przy każdym uruchomieniu usługi. Dzięki temu instancja może automatycznie używać klucza do odszyfrowywania zależnych obiektów, o ile działa w środowisku, w którym został utworzony albo prawidłowo odtworzony.

Ważne jest odróżnienie SMK od Database Master Key, czyli DMK. Service Master Key należy do instancji i znajduje się na poziomie serwera, natomiast Database Master Key jest tworzony w konkretnej bazie danych. SMK może chronić kopię DMK przechowywaną przez instancję. DMK służy następnie do ochrony kolejnych kluczy, certyfikatów i innych obiektów kryptograficznych znajdujących się w danej bazie.

Powiązanie SMK z kluczami i certyfikatami

Hierarchia szyfrowania SQL Server pozwala rozdzielić odpowiedzialność między poziom serwera i poziom bazy danych. Service Master Key chroni elementy należące do instancji, a Database Master Key zabezpiecza obiekty kryptograficzne konkretnej bazy. Certyfikat używany przez funkcję szyfrowania, klucz symetryczny albo klucz wykorzystywany przez inne mechanizmy bezpieczeństwa może być więc zależny pośrednio od SMK, nawet jeśli aplikacja korzystająca z bazy nigdy nie odwołuje się do niego bezpośrednio.

SMK nie jest tym samym co klucz używany przez Transparent Data Encryption. W przypadku TDE istotną rolę odgrywa Database Encryption Key, czyli klucz szyfrujący pliki danych, a także certyfikat lub asymetryczny klucz zabezpieczający ten klucz. Service Master Key może uczestniczyć w ochronie obiektów znajdujących się wyżej w hierarchii, ale nie należy utożsamiać go z kluczem, którym SQL Server szyfruje zawartość pliku danych.

Uszkodzenie albo utrata Service Master Key może uniemożliwić SQL Server odszyfrowanie zależnych kluczy i sekretów. Skutki zależą od tego, jakie obiekty były chronione oraz czy dostępna jest kopia zapasowa odpowiednich kluczy. Sam backup bazy danych nie zawsze wystarcza do odtworzenia całej konfiguracji kryptograficznej instancji, dlatego SMK powinien być traktowany jako osobny element procedury zabezpieczania SQL Server.

Backup, odtworzenie i migracja instancji

Kopię Service Master Key można utworzyć poleceniem Transact-SQL BACKUP SERVICE MASTER KEY. Przykładowa składnia wygląda następująco:

USE master;
BACKUP SERVICE MASTER KEY TO FILE = 'C:\Backups\Keys\service_master_key'
ENCRYPTION BY PASSWORD = '<haslo-backupu>';

Operacja wymaga uprawnienia CONTROL SERVER. Hasło podane w klauzuli ENCRYPTION BY PASSWORD chroni plik zawierający kopię klucza na nośniku backupu. Nie jest ono zamiennikiem samego Service Master Key i nie powinno być przechowywane razem z plikiem w tym samym, niechronionym miejscu. Katalog przeznaczony na kopie kluczy powinien mieć ograniczone uprawnienia systemu plików, ponieważ przejęcie pliku oraz hasła może ułatwić odtworzenie materiału kryptograficznego.

Do załadowania kopii służy polecenie RESTORE SERVICE MASTER KEY. Podczas odtwarzania SQL Server przetwarza klucze i sekrety zabezpieczone dotychczasowym SMK, a następnie chroni je kluczem wczytanym z pliku kopii. Taka operacja może być potrzebna po awarii, uszkodzeniu klucza albo podczas przenoszenia instancji na inny komputer. Migracja powinna obejmować również backupy zależnych Database Master Key, certyfikatów i innych obiektów kryptograficznych, jeżeli są wymagane przez konkretną bazę lub funkcję SQL Server.

Objawy problemów z Service Master Key

Problemy z SMK mogą ujawnić się po odtworzeniu bazy na innej instancji, zmianie środowiska uruchomieniowego albo nieudanej operacji przywracania kluczy. Typowym sygnałem jest błąd wskazujący, że SQL Server nie może otworzyć lub odszyfrować klucza, certyfikatu albo sekretu. Sam komunikat nie zawsze oznacza uszkodzenie SMK. Przyczyną może być również brak właściwego Database Master Key, brak jego kopii chronionej przez aktualny SMK albo niepoprawne hasło używane do ręcznego otwarcia DMK.

W diagnostyce należy najpierw ustalić, czy problem dotyczy poziomu instancji, czy konkretnej bazy danych. Service Master Key jest kluczem serwera, natomiast polecenie OPEN MASTER KEY odnosi się do Database Master Key w aktualnie wybranej bazie. Po przeniesieniu lub przywróceniu bazy na nową instancję kopia DMK może nie być jeszcze zabezpieczona przez Service Master Key tej instancji. W takiej sytuacji wymagane może być otwarcie DMK przy użyciu hasła, a następnie ponowne zabezpieczenie go przez SMK.

Bezpieczna procedura obejmuje sprawdzenie dostępności kopii Service Master Key, weryfikację hasła do backupu, analizę komunikatów SQL Server oraz potwierdzenie, które certyfikaty i klucze są używane przez daną bazę. Nie należy regenerować ani zastępować SMK pochopnie, ponieważ zmiana klucza może wymagać ponownego zabezpieczenia zależnych obiektów. Przed ingerencją trzeba zachować kopie istniejących kluczy i ustalić zależności między instancją, bazą danych oraz używanymi mechanizmami szyfrowania.