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
Azure SQL Database
Azure SQL Managed Instance
Always Encrypted używa dwóch typów kluczy kryptograficznych do ochrony danych — jeden klucz do szyfrowania danych, a drugi klucz do szyfrowania klucza, który szyfruje dane. Klucz szyfrowania kolumny szyfruje dane, a klucz główny kolumny szyfruje klucz szyfrowania kolumny. Ten artykuł zawiera szczegółowe omówienie zarządzania tymi kluczami szyfrowania.
Podczas omawiania zawsze zaszyfrowanych kluczy i zarządzania kluczami ważne jest zrozumienie różnic między rzeczywistymi kluczami kryptograficznymi i obiektami metadanych, które opisać kluczy. Używamy terminów klucz szyfrowania kolumny i klucz główny kolumny, aby odwoływać się do rzeczywistych kluczy kryptograficznych, i używamy metadanych klucza szyfrowania kolumny oraz metadanych klucza głównego kolumny, aby odwoływać się do opisów kluczy Always Encrypted w bazie danych.
klucze szyfrowania kolumn są kluczami szyfrowania zawartości, które są używane do szyfrowania danych. Jak wskazuje nazwa, klucze szyfrowania kolumn są używane do szyfrowania danych w kolumnach bazy danych. Można zaszyfrować co najmniej jedną kolumnę przy użyciu tego samego klucza szyfrowania kolumny lub użyć wielu kluczy szyfrowania kolumn w zależności od wymagań aplikacji. Klucze szyfrowania kolumny są szyfrowane, a w bazie danych są przechowywane tylko zaszyfrowane wartości kluczy szyfrowania kolumny (w ramach metadanych klucza szyfrowania kolumny). Metadane klucza szyfrowania kolumny są przechowywane w widokach katalogu sys.column_encryption_keys (Transact-SQL) i sys.column_encryption_key_values (Transact-SQL). Klucze szyfrowania kolumn używane z algorytmem AES-256 mają długość 256-bitową.
klucze główne kolumny to klucze chroniące używane do szyfrowania kluczy szyfrowania kolumn. Klucze główne kolumn muszą być przechowywane w zaufanym magazynie kluczy, takim jak magazyn certyfikatów systemu Windows, usługa Azure Key Vault lub sprzętowy moduł zabezpieczeń. Baza danych zawiera tylko metadane dotyczące kluczy głównych kolumn (typ magazynu kluczy i lokalizacji). Metadane klucza głównego kolumny są przechowywane w widoku katalogu sys.column_master_keys (Transact-SQL ).
Należy pamiętać, że metadane klucza w systemie bazy danych nie zawierają kluczy głównych kolumn w postaci zwykłego tekstu ani kluczy szyfrowania kolumn w postaci zwykłego tekstu. Baza danych zawiera tylko informacje o typie i lokalizacji kluczy głównych kolumn oraz zaszyfrowanych wartościach kluczy szyfrowania kolumn. Oznacza to, że klucze w postaci zwykłego tekstu nigdy nie są udostępniane systemowi bazy danych, zapewniając bezpieczeństwo danych chronionych przy użyciu funkcji Always Encrypted, nawet jeśli system bazy danych zostanie naruszony. Aby upewnić się, że system bazy danych nie może uzyskać dostępu do kluczy w postaci zwykłego tekstu, pamiętaj, aby uruchomić narzędzia do zarządzania kluczami na innej maszynie niż ta hostująca bazę danych — zapoznaj się z sekcją Zagadnienia dotyczące zabezpieczeń zarządzania kluczami poniżej, aby uzyskać szczegółowe informacje.
Ponieważ baza danych zawiera tylko zaszyfrowane dane (w kolumnach chronionych funkcją Always Encrypted) i nie może uzyskać dostępu do kluczy w postaci zwykłego tekstu, nie może odszyfrować danych. Oznacza to, że wykonywanie zapytań względem kolumn Always Encrypted spowoduje po prostu zwrócenie zaszyfrowanych wartości, więc aplikacje klienckie, które muszą szyfrować lub odszyfrowywać chronione dane, muszą mieć dostęp do klucza głównego kolumny i powiązanych kluczy szyfrowania kolumn. Aby uzyskać szczegółowe informacje, zobacz Opracuj aplikacje przy użyciu Always Encrypted.
Zadania zarządzania kluczami
Proces zarządzania kluczami można podzielić na następujące zadania wysokiego poziomu:
Udostępnianie kluczy — tworzenie kluczy fizycznych w zaufanym magazynie kluczy (na przykład w magazynie certyfikatów Windows, usłudze Azure Key Vault lub modułach bezpieczeństwa sprzętowego), szyfrowanie kluczy szyfrowania kolumn za pomocą kluczy głównych kolumn oraz tworzenie metadanych dla obu typów kluczy w bazie danych.
Rotacja klucza — okresowa wymiana istniejącego klucza na nowy. Może być konieczne rotacja klucza, jeśli klucz został naruszony lub w celu zachowania zgodności z zasadami lub przepisami dotyczącymi zgodności organizacji, które wymagają rotacji kluczy kryptograficznych.
Kluczowe role w zarządzaniu
Istnieją dwie odrębne role użytkowników, którzy zarządzają kluczami Always Encrypted; Administratorzy zabezpieczeń i administratorzy baz danych (DBA):
- Administrator zabezpieczeń — generuje klucze szyfrowania kolumn i klucze główne oraz zarządza magazynami kluczy zawierającymi klucze główne. Aby wykonać te zadania, administrator zabezpieczeń musi mieć dostęp do kluczy i magazynu kluczy, ale nie musi mieć dostępu do bazy danych.
- dba — zarządza metadanymi dotyczącymi kluczy w bazie danych. Aby wykonywać zadania zarządzania kluczami, administrator bazy danych musi mieć możliwość zarządzania metadanymi kluczy w bazie danych, ale nie musi mieć dostępu do kluczy ani magazynu kluczy przechowującego klucze główne kolumny.
Biorąc pod uwagę powyższe role, istnieją dwa różne sposoby wykonywania kluczowych zadań związanych z zarządzaniem funkcją Always Encrypted: z separacją róli bez separacji ról. W zależności od potrzeb organizacji można wybrać proces zarządzania kluczami, który najlepiej odpowiada Twoim wymaganiom.
Zarządzanie kluczami przy użyciu separacji ról
Gdy klucze Always Encrypted są zarządzane z separacją ról, różne osoby w organizacji przyjmują role administratorów zabezpieczeń i administratorów baz danych. Proces zarządzania kluczami z separacją ról zapewnia, że administratorzy baz danych nie mają dostępu do kluczy lub magazynów kluczy zawierających rzeczywiste klucze, a administratorzy zabezpieczeń nie mają dostępu do bazy danych zawierającej poufne dane. Zarządzanie kluczami przy użyciu separacji ról jest zalecane, jeśli twoim celem jest zapewnienie, że administratorzy baz danych w organizacji nie mogą uzyskać dostępu do poufnych danych.
Uwaga: Administratorzy zabezpieczeń generują klucze zwykłego tekstu i pracują z nimi, więc nigdy nie powinni wykonywać swoich zadań na tych samych komputerach hostujących system bazy danych lub komputerach, do których mogą uzyskiwać dostęp administratorzy baz danych lub wszyscy inni, którzy mogą być potencjalnymi przeciwnikami.
Zarządzanie kluczami bez separacji ról
Gdy klucze Always Encrypted są zarządzane bez separacji ról, jedna osoba może przyjąć zarówno role administratora zabezpieczeń, jak i administratora bazy danych, co oznacza, że osoba musi mieć dostęp do kluczy/kluczy i metadanych klucza oraz zarządzać nimi. Zarządzanie kluczami bez separacji ról może być zalecane w przypadku organizacji korzystających z modelu DevOps lub jeśli baza danych jest hostowana w chmurze, a głównym celem jest ograniczenie administratorów chmury (ale nie lokalnych administratorów baz danych), uzyskiwanie dostępu do poufnych danych.
Narzędzia do zarządzania kluczami Always Encrypted
Klucze Always Encrypted można zarządzać przy użyciu programu SQL Server Management Studio (SSMS) i programu PowerShell:
programu SQL Server Management Studio (SSMS) — udostępnia okna dialogowe i kreatory łączące zadania obejmujące dostęp do magazynu kluczy i dostęp do bazy danych, dzięki czemu program SSMS nie obsługuje separacji ról, ale ułatwia konfigurowanie kluczy. Aby uzyskać więcej informacji na temat zarządzania kluczami przy użyciu programu SSMS, zobacz:
programu SQL Server PowerShell — zawiera polecenia cmdlet do zarządzania kluczami Always Encrypted z separacją ról i bez nich. Aby uzyskać więcej informacji, zobacz:
Zagadnienia dotyczące zabezpieczeń związane z zarządzaniem kluczami
Głównym celem funkcji Always Encrypted jest zapewnienie bezpieczeństwa poufnych danych przechowywanych w bazie danych, nawet jeśli system bazy danych lub środowisko hostingu zostaną naruszone. Przykłady ataków zabezpieczeń, w których funkcja Always Encrypted może pomóc w zapobieganiu wyciekom poufnych danych:
- Złośliwy użytkownik bazy danych o wysokim poziomie uprawnień, taki jak administrator bazy danych, wysyła zapytanie o kolumny danych poufnych.
- Nieuprawniony administrator komputera hostującego wystąpienie programu SQL Server, skanujący pamięć procesu programu SQL Server, lub analizujący pliki zrzutów procesów programu SQL Server.
- Złośliwy operator centrum danych wysyła zapytanie do bazy danych klienta, bada pliki zrzutu programu SQL Server lub bada pamięć komputera hostujące dane klienta w chmurze.
- Złośliwe oprogramowanie uruchomione na komputerze hostowym bazę danych.
Aby zapewnić, że funkcja Always Encrypted jest skuteczna w zapobieganiu tym typom ataków, proces zarządzania kluczami musi zapewnić, że klucze główne kolumn i klucze szyfrowania kolumn, a także poświadczenia do magazynu kluczy zawierającego klucze główne kolumn, nigdy nie zostaną ujawnione potencjalnemu atakującemu. Oto kilka wskazówek, które należy wykonać:
- Nigdy nie generuj kluczy głównych kolumn ani kluczy szyfrowania kolumn na komputerze hostujący bazę danych. Zamiast tego wygeneruj klucze na osobnym komputerze, który jest przeznaczony do zarządzania kluczami lub jest maszyną hostująca aplikacje, które będą potrzebować dostępu do kluczy. Oznacza to, że nigdy nie należy uruchamiać narzędzi używanych do generowania kluczy na komputerze hostujących bazę danych, ponieważ jeśli osoba atakująca uzyskuje dostęp do komputera używanego do aprowizowania lub obsługi kluczy Always Encrypted, osoba atakująca może potencjalnie uzyskać klucze, nawet jeśli klucze są wyświetlane tylko w pamięci narzędzia przez krótki czas.
- Aby upewnić się, że proces zarządzania kluczami nie przypadkowo ujawnia kluczy głównych kolumn lub kluczy szyfrowania kolumn, ważne jest zidentyfikowanie potencjalnych przeciwników i zagrożeń bezpieczeństwa przed zdefiniowaniem i wdrożeniem procesu zarządzania kluczami. Jeśli na przykład twoim celem jest zapewnienie, że administratorzy baz danych nie mają dostępu do poufnych danych, administrator bazy danych nie może być odpowiedzialny za generowanie kluczy. Administrator bazy danych może jednak zarządzać kluczowymi metadanymi w bazie danych, ponieważ metadane nie zawierają kluczy w postaci tekstu jawnego.
Następne kroki
- pl-PL: Konfigurowanie szyfrowania kolumn za pomocą kreatora Always Encrypted
- Tworzenie i przechowywanie kluczy głównych kolumn dla Always Encrypted
- Aprowizuj klucze Always Encrypted przy użyciu programu SQL Server Management Studio
- Aprowizuj klucze Always Encrypted przy użyciu programu PowerShell
- Always Encrypted
- samouczek dotyczący Always Encrypted Wizard (Azure Key Vault)
- samouczek kreatora Always Encrypted (Magazyn certyfikatów systemu Windows)