共用方式為


如何:使用 EKM 啟用 TDE

透明資料加密 (TDE) 會將整個資料庫的儲存體加密。TDE 會使用稱為資料庫加密金鑰的對稱金鑰來加密資料。本主題描述如何使用可延伸金鑰管理 (EKM) 模組中所儲存的非對稱金鑰來保護資料庫加密金鑰。

也可以使用憑證來保護資料庫加密金鑰,該憑證是由 master 資料庫的資料庫主要金鑰所保護。如需有關使用資料庫主要金鑰來保護資料庫加密金鑰的詳細資訊,請參閱<了解透明資料加密 (TDE)>。

使用 EKM 啟用 TDE 的基本步驟如下:

  1. 安裝 EKM 提供者。這個步驟的程序將會因 EKM 提供者的需求而有所不同,但是可能會包含在本機憑證存放區中安裝 EKM 提供者的憑證,並將 EKM DLL 檔案複製到 SQL Server 電腦上。

  2. 設定 SQL Server 使用 EKM 提供者。

  3. 如果 EKM 模組使用基本驗證,請建立認證,並將該認證加入到使用者。

  4. 建立 EKM 提供者所保護的非對稱金鑰。

  5. 如果 EKM 模組使用基本驗證,請建立非對稱金鑰所保護的認證來供 Database Engine 使用。

  6. 建立對稱資料庫加密金鑰。

  7. 使用資料庫加密金鑰啟用 TDE。

若要完成這個主題的步驟,請使用 SQL Server Management Studio 中的 [查詢編輯器] 視窗連接到 SQL Server。

安裝及設定密碼編譯提供者

  1. 將 EKM 提供者提供的檔案複製到 SQL Server 電腦上的適當位置。在這個範例,我們使用 C:\EKM 資料夾。

  2. 依照 EKM 提供者的要求將憑證安裝到電腦上。

    [!附註]

    SQL Server 未提供 EKM 提供者。每一個 EKM 提供者都會有安裝、設定及授權使用者的不同程序。請參閱 EKM 提供者文件集來完成這個步驟。

設定 SQL Server 使用 EKM 提供者以及在 SQL Server 中建立此提供者

  1. 啟用 EKM 提供者是一個進階選項。首先,請執行以下陳述式來顯示進階選項。

    sp_configure 'show advanced options', 1 ;
    GO
    RECONFIGURE ;
    GO
    
  2. 執行下列陳述式來啟用 EKM 提供者:

    sp_configure 'EKM provider enabled', 1 ;
    GO
    RECONFIGURE ;
    GO
    
  3. 執行下列陳述式來建立密碼編譯提供者,我們已根據 EKM 提供者來選擇用它呼叫 EKM_Prov。

    CREATE CRYPTOGRAPHIC PROVIDER EKM_Prov 
    FROM FILE = 'C:\EKM_Files\KeyProvFile.dll' ;
    GO
    

    [!附註]

    EKM DLL 必須已數位簽署。

建立用來加密資料庫的認證

您必須是高權限使用者 (如系統管理員) 才能建立資料庫加密金鑰及加密資料庫。該使用者必須能夠由 EKM 模組來驗證。下列程序會建立一個使用 EKM 識別的認證,並將此認證加入到高權限的使用者。下列程序假設 EKM 模組可以驗證名為 'Identity1' 的使用者。應該提供密碼,而不是這裡所顯示的星號。當 EKM 提供者使用基本驗證時需要這些步驟,但是當 EKM 模組使用其他驗證時,可以略過本章節的步驟。

建立認證並將其加入到高權限使用者的登入

  1. 執行以下陳述式,建立將由系統管理員使用的認證:

    CREATE CREDENTIAL sa_ekm_tde_cred 
    WITH IDENTITY = 'Identity1', 
    SECRET = '*************' 
    FOR CRYPTOGRAPHIC PROVIDER EKM_Prov ;
    GO
    
  2. 執行以下陳述式,將系統管理員認證加入到高權限的使用者,例如您自己的網域登入,格式為 [DOMAIN\login]:

    ALTER LOGIN [DOMAIN\login]
    ADD CREDENTIAL sa_ekm_tde_cred ;
    GO
    

建立對稱金鑰

建立非對稱金鑰來保護資料庫加密金鑰的存取。此金鑰是由 SQL Server 用來存取資料庫加密金鑰。

建立資料庫加密金鑰

  • 執行以下陳述式,建立 EKM 提供者內所儲存的非對稱金鑰。在此範例中,SQL Server 將會根據 ekm_login_key 名稱來識別金鑰。在 EKM 裝置內,此金鑰的名稱將會是 SQL_Server_Key。

    [!附註]

    EKM 提供者所需的選項和參數可以與這個陳述式不同。如需詳細資訊,請洽詢 EKM 提供者。

    USE master ;
    GO
    CREATE ASYMMETRIC KEY ekm_login_key 
    FROM PROVIDER [EKM_Prov]
    WITH ALGORITHM = RSA_512,
    PROVIDER_KEY_NAME = 'SQL_Server_Key' ;
    GO
    

    [!附註]

    如果遺失了 EKM 模組內所儲存的非對稱金鑰,SQL Server 將無法開啟資料庫。如果 EKM 提供者可讓您備份非對稱金鑰,您應該建立備份,並將它儲存在安全的位置。

建立認證來供 Database Engine 使用

一啟動時,Database Engine 就必須開啟資料庫。下列程序會建立要由 EKM 所驗證的認證,並將它加入到根據非對稱金鑰的登入中。使用者無法使用該登入來進行登入,但是 Database Engine 將能夠使用 EKM 裝置來驗證本身。下列程序假設 EKM 模組可以驗證名為 'Identity2' 的使用者。應該提供密碼,而不是底下所顯示的星號。當 EKM 提供者使用基本驗證時需要這些步驟,但是當 EKM 模組使用其他驗證時,可以略過本章節的步驟。

建立認證並將其加入到登入中

  1. 執行以下陳述式,建立將由 Database Engine 使用的認證:

    CREATE CREDENTIAL ekm_tde_cred 
    WITH IDENTITY = 'Identity2' 
    , SECRET = '*************' 
    FOR CRYPTOGRAPHIC PROVIDER EKM_Prov ;
    
  2. 執行以下陳述式來加入 TDE 所使用的登入,並將新的認證加入到登入中:

    CREATE LOGIN EKM_Login 
    FROM ASYMMETRIC KEY ekm_login_key ;
    GO
    
    ALTER LOGIN EKM_Login 
    ADD CREDENTIAL ekm_tde_cred ;
    GO
    

建立資料庫加密金鑰

資料庫加密金鑰是對稱金鑰。請在 master 資料庫中建立資料庫加密金鑰。

建立資料庫加密金鑰

  1. 變更為將要加密的資料庫:

    USE AdventureWorks ;
    GO
    
  2. 執行以下程式碼,建立將用於 TDE 的資料庫加密金鑰:

    CREATE DATABASE ENCRYPTION KEY
    WITH ALGORITHM  = AES_128
    ENCRYPTION BY SERVER ASYMMETRIC KEY ekm_login_key ;
    GO
    
  3. 執行以下程式碼,更改資料庫來啟用透明資料加密:

    ALTER DATABASE AdventureWorks 
    SET ENCRYPTION ON ;
    GO
    

    資料庫現在會以加密的格式儲存。

安全性

此主題會使用以下權限:

  • 若要變更組態選項及執行 RECONFIGURE 陳述式,您必須取得 ALTER SETTINGS 伺服器層級的權限。系統管理員 (sysadmin) 和伺服器管理員 (serveradmin) 固定伺服器角色會隱含地擁有 ALTER SETTINGS 權限。

  • 需要 ALTER ANY CREDENTIAL 權限。

  • 需要 ALTER ANY LOGIN 權限。

  • 需要 CREATE ASYMMETRIC KEY 權限。

  • 需要資料庫的 CONTROL 權限才能加密資料庫。