Rotacja kluczy asymetrycznych na potrzeby TDE za pomocą usługi Azure Key Vault w programie SQL Server

Dotyczy:SQL Server

W tym artykule pokazano, jak ręcznie obracać klucz asymetryczny używany przez Transparent Data Encryption (TDE) za pomocą rozszerzonego zarządzania kluczami (EKM) i Azure Key Vault.

Użyj tej procedury po skonfigurowaniu funkcji TDE z Azure Key Vault. Aby uzyskać instrukcje dotyczące początkowej konfiguracji, zobacz Konfigurowanie Transparent Data Encryption przy użyciu Azure Key Vault na potrzeby SQL Server.

Ważna

SQL Server nie obraca automatycznie klucza asymetrycznego używanego na potrzeby funkcji TDE. Rotacja jest operacją ręczną.

Obracanie logicznej ochrony TDE jest operacją online i zwykle kończy się szybko, ponieważ SQL Server ponownie szyfruje tylko klucz szyfrowania bazy danych (DEK), a nie całą bazę danych.

Nie usuwaj poprzednich wersji kluczy po rotacji. Wcześniejsze wersje mogą być nadal wymagane do przywrócenia starszych kopii zapasowych, dzienników transakcji lub innych artefaktów odzyskiwania.

Wymagania wstępne

  • Ukończ wstępną konfigurację EKM i TDE.
  • Sprawdź, czy SQL Server obecnie może uzyskać dostęp do magazynu kluczy.
  • Upewnij się, że masz uprawnienia do tworzenia poświadczeń, identyfikatorów logowania i kluczy asymetrycznych w SQL Server.
  • Upewnij się, że model uwierzytelniania jest nadal prawidłowy:
    • Jednostka usługi: rejestracja aplikacji i klucz tajny klienta są poprawne.
    • Tożsamość zarządzana: tożsamość zarządzana SQL Server jest nadal włączona i ma wymagane uprawnienia klucza.

Obracanie klucza

Wybierz model uwierzytelniania i wykonaj pasujące kroki.

  1. W Azure Key Vault lub zarządzanym module HSM obróć klucz:

    • Utwórz nową wersję tej samej nazwy klucza lub
    • Utwórz nową nazwę klucza.
  2. W SQL Server utwórz poświadczenie dla operacji rotacji w razie potrzeby.

    CREATE CREDENTIAL <new_credential_name>
       WITH IDENTITY = <key_vault_name_or_uri_without_https>,
       SECRET = '<client_id_without_hyphens><client_secret>'
       FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM;
    
  3. Dodaj poświadczenie do głównego podmiotu zabezpieczeń instalacji, który tworzy kolejny klucz asymetryczny.

    ALTER LOGIN [<domain>\<login>]
       ADD CREDENTIAL [<new_credential_name>];
    
  4. Utwórz nowy klucz asymetryczny SQL Server na podstawie Azure Key Vault.

    Note

    W przypadku rotacji ręcznej program SQL Server obsługuje zarówno nazwę klucza bez wersji, jak i odwołanie do klucza z wersją:

    • Bez określania wersji: użyj <key_name>, aby umożliwić programowi SQL Server użycie najwyższej dostępnej wersji klucza w usłudze Azure Key Vault.
    • Wersjonowane: użyj <key_name>/<version>, aby przypisać operacje szyfrowania do określonej wersji klucza.

    Aby przeprowadzić rotację, nie trzeba tworzyć innej nazwy klucza AKV. Rotuj klucze, tworząc nową wersję klucza, a następnie nowy klucz asymetryczny programu SQL Server odwołujący się do postaci bez wersji lub z określoną wersją.

    Użyj nazwy klucza bez wersji lub konkretnej wersji klucza:

    CREATE ASYMMETRIC KEY <new_ekm_key_name>
       FROM PROVIDER [AzureKeyVault_EKM]
       WITH PROVIDER_KEY_NAME = '<key_name_or_key_name/version>',
       CREATION_DISPOSITION = OPEN_EXISTING;
    
  5. Utwórz nowe dane logowania na podstawie nowego klucza asymetrycznego.

    CREATE LOGIN <new_login_name>
       FROM ASYMMETRIC KEY <new_ekm_key_name>;
    
  6. Przenieś mapowanie poświadczeń z logowania konfiguracyjnego do nowego logowania za pomocą klucza asymetrycznego.

    ALTER LOGIN [<domain>\<login>]
       DROP CREDENTIAL [<new_credential_name>];
    
    ALTER LOGIN <new_login_name>
       ADD CREDENTIAL [<new_credential_name>];
    
  7. Ponownie zaszyfruj klucz szyfrowania bazy danych przy użyciu nowego klucza asymetrycznego.

    USE [<database_name>];
    GO
    ALTER DATABASE ENCRYPTION KEY
       ENCRYPTION BY SERVER ASYMMETRIC KEY <new_ekm_key_name>;
    

Weryfikowanie rotacji

  1. Zweryfikuj metadane szyfrowania dla bazy danych.

    SELECT encryptor_type,
           encryption_state_desc,
           encryptor_thumbprint
    FROM sys.dm_database_encryption_keys
    WHERE database_id = DB_ID('<database_name>');
    
  2. Zweryfikuj odcisk palca klucza asymetrycznego programu SQL Server.

    SELECT name,
           algorithm_desc,
           thumbprint
    FROM sys.asymmetric_keys
    WHERE name = '<new_ekm_key_name>';
    
  3. Upewnij się, że odciski palca są zgodne.