Udostępnij za pomocą


Włączanie przezroczystego szyfrowania danych w programie SQL Server przy użyciu EKM

Dotyczy:programu SQL Server

W tym artykule opisano sposób włączania funkcji Transparent Data Encryption (TDE) w programie SQL Server w celu ochrony klucza szyfrowania bazy danych przy użyciu klucza asymetrycznego przechowywanego w module zarządzania kluczami rozszerzalnymi (EKM) za pomocą języka Transact-SQL.

Funkcja TDE szyfruje magazyn całej bazy danych przy użyciu klucza symetrycznego nazywanego kluczem szyfrowania bazy danych. Klucz szyfrowania bazy danych może być również chroniony przy użyciu certyfikatu, który jest chroniony przez klucz główny bazy danych (DMK) master bazy danych. Aby uzyskać więcej informacji na temat ochrony klucza szyfrowania bazy danych przy użyciu klucza DMK, zobacz Transparent Data Encryption (TDE). Aby uzyskać informacje na temat konfigurowania funkcji TDE, gdy program SQL Server jest uruchomiony na maszynie wirtualnej platformy Azure, zobacz Extensible Key Management Using Azure Key Vault (SQL Server). Aby uzyskać informacje na temat konfigurowania funkcji TDE przy użyciu klucza w usłudze Azure Key Vault, zobacz Use SQL Server Connector with SQL Encryption Features (Używanie łącznika programu SQL Server z funkcjami szyfrowania SQL).

Ograniczenia

Aby utworzyć klucz szyfrowania bazy danych i zaszyfrować bazę danych, musisz być użytkownikiem o wysokim poziomie uprawnień (takim jak administrator systemu). Moduł EKM musi mieć możliwość uwierzytelnienia tego użytkownika.

Podczas uruchamiania aparat bazy danych musi otworzyć bazę danych. Należy utworzyć poświadczenie, które zostanie uwierzytelnione przez EKM i dodać je do identyfikatora logowania opartego na kluczu asymetrycznym. Użytkownicy nie mogą zalogować się przy użyciu tego identyfikatora logowania, ale aparat bazy danych może uwierzytelnić się za pomocą urządzenia EKM.

Jeśli klucz asymetryczny przechowywany w module EKM zostanie utracony, nie można otworzyć bazy danych przez program SQL Server. Jeśli dostawca EKM umożliwia utworzenie kopii zapasowej klucza asymetrycznego, należy utworzyć kopię zapasową i zapisać ją w bezpiecznej lokalizacji.

Opcje i parametry wymagane przez dostawcę EKM mogą różnić się od podanych w poniższym przykładzie kodu. Aby uzyskać więcej informacji, skontaktuj się z dostawcą EKM.

Uprawnienia

W tym artykule są używane następujące uprawnienia:

  • Aby zmienić opcję konfiguracji i uruchomić instrukcję RECONFIGURE , należy przyznać ALTER SETTINGS uprawnienie na poziomie serwera. Uprawnienie ALTER SETTINGS jest niejawnie posiadane przez sysadmin i serveradmin role stałe serwera.

  • Wymaga ALTER ANY CREDENTIAL uprawnień.

  • Wymaga ALTER ANY LOGIN uprawnień.

  • Wymaga CREATE ASYMMETRIC KEY uprawnień.

  • Wymaga CONTROL uprawnień do szyfrowania bazy danych w bazie danych.

Korzystanie z Transact-SQL

  1. Skopiuj pliki dostarczone przez dostawcę EKM do odpowiedniej lokalizacji na komputerze z programem SQL Server. W tym przykładzie C:\EKM_Files używamy folderu .

  2. Zainstaluj certyfikaty na komputerze zgodnie z wymaganiami dostawcy EKM.

    Notatka

    Program SQL Server nie dostarcza dostawcy EKM. Każdy dostawca EKM może mieć różne procedury instalowania, konfigurowania i autoryzowania użytkowników. Aby wykonać ten krok, zapoznaj się z dokumentacją dostawcy EKM.

  3. W Eksploratorze obiektów , nawiąż połączenie z wystąpieniem Silnika bazy danych.

  4. Na pasku Standard wybierz pozycję Nowe zapytanie.

  5. Skopiuj i wklej poniższy przykład w oknie zapytania, a następnie wybierz pozycję Wykonaj.

    -- Enable advanced options.
    EXECUTE sp_configure 'show advanced options', 1;
    GO
    
    RECONFIGURE;
    GO
    
    -- Enable EKM provider
    EXECUTE sp_configure 'EKM provider enabled', 1;
    GO
    
    RECONFIGURE;
    GO
    
    -- Create a cryptographic provider, which we have chosen to call "EKM_Prov," based on an EKM provider
    CREATE CRYPTOGRAPHIC PROVIDER EKM_Prov
        FROM FILE = 'C:\EKM_Files\KeyProvFile.dll';
    GO
    
    -- Create a credential that will be used by system administrators.
    CREATE CREDENTIAL sa_ekm_tde_cred
        WITH IDENTITY = 'Identity1',
        SECRET = '<password>' FOR CRYPTOGRAPHIC PROVIDER EKM_Prov;
    GO
    
    -- Add the credential to a high privileged user such as your
    -- own domain login in the format [DOMAIN\login].
    ALTER LOGIN [Contoso\Mary] ADD CREDENTIAL sa_ekm_tde_cred;
    GO
    
    -- create an asymmetric key stored inside the EKM provider
    USE master;
    GO
    
    CREATE ASYMMETRIC KEY ekm_login_key
         FROM PROVIDER [EKM_Prov]
             WITH ALGORITHM = RSA_512,
             PROVIDER_KEY_NAME = 'SQL_Server_Key';
    GO
    
    -- Create a credential that will be used by the Database Engine.
    CREATE CREDENTIAL ekm_tde_cred
        WITH IDENTITY = 'Identity2', SECRET = '<secret>'
        FOR CRYPTOGRAPHIC PROVIDER EKM_Prov;
    
    -- Add a login used by TDE, and add the new credential to the login.
    CREATE LOGIN EKM_Login
        FROM ASYMMETRIC KEY ekm_login_key;
    GO
    
    ALTER LOGIN EKM_Login
        ADD CREDENTIAL ekm_tde_cred;
    GO
    
    -- Create the database encryption key that will be used for TDE.
    USE AdventureWorks2022;
    GO
    
    CREATE DATABASE ENCRYPTION KEY
        WITH ALGORITHM = AES_128
        ENCRYPTION BY SERVER ASYMMETRIC KEY ekm_login_key;
    GO
    
    -- Alter the database to enable transparent data encryption.
    ALTER DATABASE AdventureWorks2022
        SET ENCRYPTION ON;
    GO