Povolení transparentního šifrování dat na SQL Serveru pomocí EKM

platí pro:SQL Server

Tento článek popisuje, jak povolit transparentní šifrování dat (TDE) v SQL Serveru k ochraně šifrovacího klíče databáze pomocí asymetrického klíče uloženého v modulu pro správu rozšiřitelného klíče (EKM) pomocí jazyka Transact-SQL.

TDE šifruje úložiště celé databáze pomocí symetrického klíče zvaného šifrovací klíč databáze. Šifrovací klíč databáze lze také chránit pomocí certifikátu, který je chráněn hlavním klíčem databáze (DMK) master databáze. Další informace o ochraně šifrovacího klíče databáze pomocí DMK najdete v tématu Transparentní šifrování dat (TDE). Informace o konfiguraci transparentního šifrování dat při spuštění SQL Serveru na virtuálním počítači Azure najdete v tématu Rozšiřitelná správa klíčů pomocí služby Azure Key Vault (SQL Server). Informace o konfiguraci transparentního šifrování dat (TDE) pomocí klíče uloženého v Azure Key Vault najdete v tématu Použití konektoru SQL Server s funkcemi šifrování SQL.

Omezení

Abyste mohli vytvořit šifrovací klíč databáze a šifrovat databázi, musíte být vysoce privilegovaný uživatel (například správce systému). Modul EKM musí být schopen vás ověřit.

Při spuštění musí databázový stroj databázi otevřít. Vytvořte přihlašovací údaje, které EKM ověřuje, a přidejte je k přihlášení na základě asymetrického klíče. Uživatelé se nemůžou přihlásit pomocí přihlášení, ale databázový stroj se může ověřit pomocí zařízení EKM.

Pokud ztratíte asymetrický klíč uložený v modulu EKM, SQL Server nemůže otevřít databázi. Pokud vám poskytovatel EKM umožňuje zálohovat asymetrický klíč, vytvořte zálohu a uložte ji do zabezpečeného umístění.

Možnosti a parametry vyžadované vaším poskytovatelem EKM se můžou lišit od toho, co je uvedeno v následujícím příkladu kódu. Další informace získáte od poskytovatele EKM.

Dovolení

Potřebujete následující oprávnění:

  • Pokud chcete změnit možnost konfigurace a spustit RECONFIGURE příkaz, potřebujete ALTER SETTINGS oprávnění na úrovni serveru. Pevné role sysadmin a serveradmin implicitně uchovávají ALTER SETTINGS oprávnění.

  • Oprávnění ALTER ANY CREDENTIAL.

  • Oprávnění ALTER ANY LOGIN.

  • Oprávnění CREATE ASYMMETRIC KEY.

  • CONTROL oprávnění k šifrování databáze.

Použijte Transact-SQL

  1. Zkopírujte soubory poskytnuté poskytovatelem EKM do vhodného umístění na počítači s SQL Serverem. V tomto příkladu C:\EKM_Files použijeme složku.

  2. Nainstalujte certifikáty do počítače podle požadavků poskytovatele EKM.

    Poznámka

    SQL Server neposkytuje poskytovatele EKM. Každý poskytovatel EKM může mít různé postupy pro instalaci, konfiguraci a autorizaci uživatelů. Pokud chcete tento krok dokončit, projděte si dokumentaci k poskytovateli EKM.

  3. V Průzkumníku objektůse připojte k instanci databázového stroje.

  4. Na panelu Standard vyberte Nový dotaz.

  5. Zkopírujte a vložte následující příklad do okna dotazu a vyberte Spustit.

    -- 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_2048,
             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