Udostępnij za pośrednictwem


Obracanie kluczy Always Encrypted przy użyciu programu SQL Server Management Studio

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

W tym artykule opisano zadania rotacji kluczy głównych kolumn Always Encrypted i kluczy szyfrowania kolumn za pomocą programu SQL Server Management Studio (SSMS).

Aby zapoznać się z omówieniem zarządzania kluczami Always Encrypted, w tym zaleceniami dotyczącymi najlepszych rozwiązań i ważnymi zagadnieniami dotyczącymi zabezpieczeń, zobacz Omówienie zarządzania kluczami dla funkcji Always Encrypted.

Uwaga / Notatka

Używanie kluczy wzorcowych kolumn przechowywanych w zarządzanym modulem HSM w usłudze Azure Key Vault wymaga SSMS 18.9 lub nowszej wersji.

Obracanie kluczy głównych kolumn

Rotacja klucza głównego kolumny to proces zastępowania istniejącego klucza głównego kolumny nowym kluczem głównym kolumny. Możesz potrzebować zmiany klucza, jeśli został naruszony lub w celu spełnienia wymagań polityki lub regulacji zgodności Twojej organizacji, które wymagają regularnej zmiany kluczy kryptograficznych. Rotacja klucza głównego kolumny obejmuje odszyfrowywanie kluczy szyfrowania kolumn, które są chronione przy użyciu bieżącego klucza głównego kolumny, ponowne szyfrowanie ich przy użyciu nowego klucza głównego kolumny i aktualizowanie metadanych klucza.

Krok 1. Aprowizuj nowy klucz główny kolumny

Wykonaj kroki opisane w sekcji Skonfiguruj główne klucze kolumn w oknie dialogowym o nazwie Nowy klucz główny kolumny.

Uwaga / Notatka

W przypadku korzystania z usługi Azure Key Vault jako magazynu kluczy, rotacja kluczy zarządzanych przez klienta w środowisku wielodostępnym nie jest obsługiwana. Upewnij się, że nowy klucz zarządzany przez klienta znajduje się w tym samym tenantcie co istniejący.

Krok 2. Szyfrowanie kluczy szyfrowania kolumn przy użyciu nowego klucza głównego kolumny

Klucz główny kolumny zwykle chroni co najmniej jeden klucz szyfrowania kolumny. Każdy klucz szyfrowania kolumny ma zaszyfrowaną wartość przechowywaną w bazie danych, która jest produktem szyfrowania klucza szyfrowania kolumny przy użyciu klucza głównego kolumny. W tym kroku zaszyfruj każdy klucz szyfrowania kolumny chroniony za pomocą obracanego klucza głównego kolumny, przy użyciu nowego klucza głównego kolumny i zapisz nową zaszyfrowaną wartość w bazie danych. W rezultacie każdy klucz szyfrowania kolumny, którego dotyczy rotacja, będzie miał dwie zaszyfrowane wartości: jedną wartość zaszyfrowaną przy użyciu istniejącego klucza głównego kolumny i nową wartość zaszyfrowaną przy użyciu nowego klucza głównego kolumny.

  1. Korzystając z Eksploratora obiektów, przejdź do folderu Zabezpieczenia>Klucze Always Encrypted>Klucze główne kolumny i znajdź klucz główny kolumny, który obracasz.
  2. Kliknij prawym przyciskiem myszy klucz główny kolumny i wybierz polecenie Obróć.
  3. W oknie dialogowym Rotacja klucza głównego kolumny wybierz nazwę nowego klucza głównego kolumny utworzonego w kroku 1 w polu Cel .
  4. Przejrzyj listę kluczy szyfrowania kolumn chronionych przez istniejące klucze nadrzędne kolumn. Te klucze zostaną dotknięte przez rotację.
  5. Kliknij przycisk OK.

Program SQL Server Management Studio uzyskuje metadane kluczy szyfrowania kolumn, które są chronione za pomocą starego klucza głównego kolumny oraz metadane starych i nowych kluczy głównych kolumn. Następnie program SSMS użyje metadanych klucza głównego kolumny, aby uzyskać dostęp do magazynu kluczy zawierającego stary klucz główny kolumny i odszyfrować klucze szyfrowania kolumn. Następnie program SSMS uzyska dostęp do magazynu kluczy zawierającego nowy klucz główny kolumny w celu utworzenia nowego zestawu zaszyfrowanych wartości kluczy szyfrowania kolumny, a następnie doda nowe wartości do metadanych (generowanie i wydawanie instrukcji ALTER COLUMN ENCRYPTION KEY ).

Uwaga / Notatka

Upewnij się, że każdy z kluczy szyfrowania kolumny zaszyfrowany przy użyciu starego klucza głównego kolumny nie jest szyfrowany przy użyciu żadnego innego klucza głównego kolumny. Innymi słowy, każdy klucz szyfrowania kolumny, którego dotyczy rotacja, musi mieć dokładnie jedną zaszyfrowaną wartość w bazie danych. Jeśli jakikolwiek klucz szyfrowania kolumny, którego dotyczy problem, ma więcej niż jedną zaszyfrowaną wartość, musisz usunąć wartość przed kontynuowaniem rotacji (zobacz krok 4 , jak usunąć zaszyfrowaną wartość klucza szyfrowania kolumny).

Krok 3: Skonfiguruj swoje aplikacje z użyciem nowego klucza głównego kolumny

W tym kroku należy upewnić się, że wszystkie aplikacje klienckie, które wysyłają zapytania o kolumny bazy danych chronione przy użyciu obracanego klucza głównego kolumny, mogą uzyskać dostęp do nowego klucza głównego kolumny (czyli kolumny bazy danych zaszyfrowane kluczem szyfrowania kolumny, który jest zaszyfrowany obracanym kluczem głównym kolumny). Ten krok zależy od rodzaju magazynu kluczy, w jakim znajduje się nowy kolumnowy klucz główny. Przykład:

  • Jeśli nowy klucz główny kolumny jest certyfikatem przechowywanym w magazynie certyfikatów systemu Windows, należy wdrożyć certyfikat w tej samej lokalizacji magazynu certyfikatów (bieżący użytkownik lub komputer lokalny), co lokalizacja określona w ścieżce klucza klucza głównego kolumny w bazie danych. Aplikacja musi mieć dostęp do certyfikatu:
    • Jeśli certyfikat jest przechowywany w lokalizacji magazynu certyfikatów bieżącego użytkownika, certyfikat musi zostać zaimportowany do magazynu bieżącego użytkownika tożsamości użytkownika aplikacji w systemie Windows.
    • Jeśli certyfikat jest przechowywany w lokalizacji magazynu certyfikatów komputera lokalnego , tożsamość systemu Windows aplikacji musi mieć uprawnienia dostępu do certyfikatu.
  • Jeśli nowy klucz główny kolumny jest przechowywany w usłudze Microsoft Azure Key Vault, należy zaimplementować aplikację, aby mogła uwierzytelniać się na platformie Azure i mieć uprawnienia dostępu do klucza.

Aby uzyskać szczegółowe informacje, zobacz Tworzenie i przechowywanie kluczy głównych kolumn dla funkcji Always Encrypted.

Uwaga / Notatka

W tym momencie rotacji zarówno stary klucz główny kolumny, jak i nowy klucz główny kolumny są prawidłowe i mogą służyć do uzyskiwania dostępu do danych.

Krok 4: Usuń wartości klucza szyfrowania kolumny zaszyfrowane przy użyciu starego klucza głównego kolumny

Po skonfigurowaniu wszystkich aplikacji do używania nowego klucza głównego kolumny usuń wartości kluczy szyfrowania kolumny zaszyfrowanych przy użyciu starego klucza głównego kolumny z bazy danych. Usunięcie starych wartości zapewni gotowość do następnej rotacji (pamiętaj, że każdy klucz szyfrowania kolumny, chroniony przy użyciu klucza głównego kolumny do rotacji, musi mieć dokładnie jedną zaszyfrowaną wartość).

Innym powodem, aby wyczyścić starą wartość przed archiwizacją lub usunięciem starego klucza głównego kolumny, jest związane z wydajnością: podczas wykonywania zapytań względem zaszyfrowanej kolumny sterownik klienta z włączoną funkcją Always Encrypted może wymagać próby odszyfrowania dwóch wartości: starej wartości i nowej. Sterownik nie wie, który z dwóch kluczy głównych kolumn jest prawidłowy w środowisku aplikacji, więc sterownik pobierze obie zaszyfrowane wartości z serwera. Jeśli odszyfrowanie jednej z wartości zakończy się niepowodzeniem, ponieważ jest ona chroniona kluczem głównym kolumny, który nie jest dostępny (na przykład starym kluczem głównym kolumny, który został usunięty z magazynu), sterownik podejmie próbę odszyfrowania innej wartości przy użyciu nowego klucza głównego kolumny.

Ostrzeżenie

Jeśli usuniesz wartość klucza szyfrowania kolumny przed udostępnieniem odpowiedniego klucza głównego kolumny przez aplikację, aplikacja nie będzie mogła odszyfrować kolumny bazy danych.

  1. Za pomocą Eksploratora obiektów przejdź do folderu Klucze zabezpieczeń Always Encrypted> i znajdź istniejący klucz główny kolumny, który chcesz zamienić.
  2. Kliknij prawym przyciskiem myszy istniejący klucz główny kolumny i wybierz polecenie Wyczyść.
  3. Przejrzyj listę wartości klucza szyfrowania kolumn, które mają zostać usunięte.
  4. Kliknij przycisk OK.

Program SQL Server Management Studio wyda instrukcje ALTER COLUMN ENCRYPTION KEY , aby usunąć zaszyfrowane wartości kluczy szyfrowania kolumny zaszyfrowanych przy użyciu starego klucza głównego kolumny.

Krok 5. Usuwanie metadanych dla starego klucza głównego kolumny

Jeśli zdecydujesz się usunąć definicję starego klucza głównego kolumny z bazy danych, wykonaj poniższe kroki.

  1. Za pomocą Eksploratora obiektów przejdź do folderu Zabezpieczenia>Always Encrypted Keys>Klucze główne kolumny i znajdź stary klucz główny kolumny, który ma zostać usunięty z bazy danych.
  2. Kliknij prawym przyciskiem myszy stary klucz główny kolumny i wybierz polecenie Usuń. (Spowoduje to wygenerowanie i wydanie instrukcji DROP COLUMN MASTER KEY w celu usunięcia metadanych klucza głównego kolumny).
  3. Kliknij przycisk OK.

Uwaga / Notatka

Zdecydowanie zaleca się, aby po rotacji nie usuwać na stałe starego klucza głównego dla kolumn. Zamiast tego należy przechowywać stary klucz główny kolumny w aktualnym magazynie kluczy lub zarchiwizować go w innym bezpiecznym miejscu. Jeśli przywracasz bazę danych z pliku kopii zapasowej do punktu w czasie przed skonfigurowaniem nowego klucza głównego kolumny, musisz mieć stary klucz, aby uzyskać dostęp do danych.

Uprawnienia do rotacji klucza głównego kolumny

Rotacja klucza głównego kolumny wymaga następujących uprawnień bazy danych:

  • ALTER ANY COLUMN MASTER KEY —wymagane do utworzenia metadanych dla nowego klucza głównego kolumny i usunięcia metadanych dla starego klucza głównego kolumny.
  • ZMIEŃ JAKIKOLWIEK KLUCZ SZYFROWANIA KOLUMNY — wymagane do zmodyfikowania metadanych klucza szyfrowania kolumny (przy dodaniu nowych zaszyfrowanych wartości).

Potrzebujesz również uprawnień magazynu kluczy, aby mieć dostęp zarówno do starego klucza głównego kolumny, jak i nowego klucza głównego kolumny w ich magazynach kluczy. Aby uzyskać szczegółowe informacje na temat uprawnień magazynu kluczy wymaganych dla operacji zarządzania kluczami, przejdź do artykułu Tworzenie i przechowywanie kluczy głównych kolumn dla funkcji Always Encrypted i znajdź sekcję odpowiednią dla magazynu kluczy.

Obracanie kluczy szyfrowania kolumn

Rotacja klucza szyfrowania kolumny polega na odszyfrowaniu danych we wszystkich kolumnach zaszyfrowanych dotychczasowym kluczem, a następnie zaszyfrowaniu tych danych przy użyciu nowego klucza szyfrowania kolumny.

Uwaga / Notatka

Rotacja klucza szyfrowania kolumny może potrwać bardzo długo, jeśli tabele, które zawierają kolumny zaszyfrowane obracanym kluczem, są duże. Podczas ponownego szyfrowania danych aplikacje nie mogą zapisywać w tabelach, których dotyczy problem. W związku z tym organizacja musi bardzo uważnie zaplanować rotację kluczy szyfrowania kolumn. Aby obrócić klucz szyfrowania kolumny, użyj Kreatora Always Encrypted.

  1. Otwórz kreatora bazy danych: kliknij prawym przyciskiem myszy bazę danych, wskaż pozycję Zadania, a następnie wybierz pozycję Szyfruj kolumny.
  2. Przejrzyj stronę Wprowadzenie , a następnie wybierz pozycję Dalej.
  3. Na stronie Wybór kolumny rozwiń tabele i znajdź wszystkie kolumny, które chcesz zamienić, które są obecnie szyfrowane przy użyciu starego klucza szyfrowania kolumny.
  4. Dla każdej kolumny zaszyfrowanej przy użyciu starego klucza szyfrowania kolumny ustaw klucz szyfrowania na nowy automatycznie wygenerowany klucz. Nuta: Alternatywnie możesz utworzyć nowy klucz szyfrowania kolumny przed uruchomieniem kreatora — zobacz Aprowizuj klucze szyfrowania kolumn za pomocą okna dialogowego Nowy klucz szyfrowania kolumny.
  5. Na stronie Konfiguracja klucza głównego wybierz lokalizację do przechowywania nowego klucza, a następnie wybierz źródło klucza głównego, a następnie wybierz przycisk Dalej. Nuta: Jeśli używasz istniejącego klucza szyfrowania kolumny (nie wygenerowanego automatycznie), nie ma żadnej akcji do wykonania na tej stronie.
  6. Na stronie Walidacja wybierz, czy skrypt ma zostać uruchomiony natychmiast, czy też utworzyć skrypt programu PowerShell, a następnie wybierz przycisk Dalej.
  7. Na stronie Podsumowanie przejrzyj wybrane opcje, a następnie wybierz pozycję Zakończ i zamknij kreatora po zakończeniu.
  8. Za pomocą Eksploratora obiektów przejdź do folderu Security/Always Encrypted Keys/Column Encryption Keys i znajdź stary klucz szyfrowania kolumny, który ma zostać usunięty z bazy danych. Kliknij prawym przyciskiem myszy klucz i wybierz polecenie Usuń.

Uprawnienia do rotacji kluczy szyfrowania kolumn

Rotacja klucza szyfrowania kolumny wymaga następujących uprawnień bazy danych: ALTER ANY COLUMN MASTER KEY — wymagane, jeśli używasz nowego automatycznie wygenerowanego klucza szyfrowania kolumny (nowy klucz główny kolumny i jego nowe metadane również zostaną wygenerowane). ZMIEŃ DOWOLNY KLUCZ SZYFROWANIA KOLUMNY -required, aby dodać metadane dla nowego klucza szyfrowania kolumny.

Aby uzyskać dostęp do kluczy głównych kolumn zarówno dla nowego, jak i starego klucza szyfrowania kolumny, potrzebujesz również uprawnień magazynu kluczy. Aby uzyskać szczegółowe informacje na temat uprawnień magazynu kluczy wymaganych dla operacji zarządzania kluczami, przejdź do artykułu Tworzenie i przechowywanie kluczy głównych kolumn dla funkcji Always Encrypted i znajdź sekcję odpowiednią dla magazynu kluczy.