Sdílet prostřednictvím


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 ověřit daného uživatele.

Při spuštění musí databázový stroj databázi otevřít. Měli byste vytvořit přihlašovací údaje, které bude ověřovat EKM, a přidat je k přihlášení založenému na asymetrickém klíči. 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 asymetrický klíč uložený v modulu EKM ztratíte, nelze databázi otevřít SQL Serverem. Pokud poskytovatel EKM umožňuje zálohovat asymetrický klíč, měli byste vytvořit zálohu a uložit 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í

Tento článek používá následující oprávnění:

  • Pokud chcete změnit možnost konfigurace a spustit RECONFIGURE příkaz, musíte mít udělená ALTER SETTINGS oprávnění na úrovni serveru. Oprávnění ALTER SETTINGS implicitně uchovává správce systému a správce serveru pevné role serveru.

  • Vyžaduje ALTER ANY CREDENTIAL oprávnění.

  • Vyžaduje ALTER ANY LOGIN oprávnění.

  • Vyžaduje CREATE ASYMMETRIC KEY oprávnění.

  • Vyžaduje 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_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