SQL Server 和資料庫加密金鑰 (Database Engine)

適用於:SQL Server

SQL Server 會使用加密金鑰,來協助保護儲存在伺服器資料庫中的資料、認證和連線資訊。 SQL Server 有兩種類型的金鑰:對稱非對稱。 對稱金鑰會使用相同的密碼為資料加密與解密。 非對稱金鑰會使用某個密碼來加密資料 (稱為「公開」金鑰),並使用另一個密碼來解密資料 (稱為「私密」金鑰)。

在 SQL Server 中,加密金鑰包括用於保護機密資料的公開、私密和對稱金鑰的組合。 當您初次啟動 SQL Server 執行個體時,系統會在 SQL Server 初始化期間建立對稱金鑰。 金鑰會由 SQL Server 用來加密儲存在 SQL Server 中的機密資料。 公開金鑰和私密金鑰是由作業系統所建立,可用來保護對稱金鑰。 針對在資料庫中儲存機密資料的每個 SQL Server 執行個體,建立一組公開和私密金鑰。

SQL Server 和資料庫金鑰的套用

SQL Server 對於金鑰有兩個主要的應用:在 SQL Server 執行個體上產生並供其使用的服務主要金鑰 (SMK),以及用於資料庫的資料庫主要金鑰 (DMK)。

服務主要金鑰

服務主要金鑰是 SQL Server 加密階層的根。 SMK 會在 SQL Server 執行個體第一次啟動時自動產生,且用以加密各資料庫的連結伺服器密碼、認證和資料庫主要金鑰。 SMK 是以本機電腦金鑰或 Windows 資料保護 API (DPAPI) 加密。 DPAPI 所用的金鑰衍生自 SQL Server 服務帳戶的 Windows 認證和電腦認證。 服務主要金鑰只能由建立它時所使用的服務帳戶解密,或是只能由可以存取電腦認證的主體解密。

服務主要金鑰只能由建立此金鑰的 Windows 服務帳戶來開啟,或是由可存取服務帳戶名稱及其密碼的主體來開啟。

SQL Server 使用 AES 加密演算法保護服務主要金鑰 (SMK) 及資料庫主要金鑰 (DMK)。 與舊版中使用的 3DES 相比,AES 是一種較新的加密演算法。 將資料庫引擎執行個體升級至 SQL Server 之後,系統應該會重新產生 SMK 和 DMK,以將主要金鑰升級至 AES。 如需重新產生 SMK 的詳細資訊,請參閱 ALTER SERVICE MASTER KEY (Transact-SQL)ALTER MASTER KEY (Transact-SQL)

資料庫主要金鑰

資料庫主要金鑰是一個用來保護資料庫中憑證之私密金鑰和非對稱金鑰的對稱金鑰。 其也可用來加密資料,但是有長度限制,與非對稱金鑰相比較不適合用於資料中。 若要啟用資料庫主要金鑰的自動解密,則需使用 SMK 來加密此金鑰的複本。 這個複本會同時存放在使用它的資料庫和 master 系統資料庫中。

每當 DMK 變更時,也會以無訊息模式更新儲存於 master 系統資料庫中的 DMK 複本。 但是,此預設值可以使用 DROP ENCRYPTION BY SERVICE MASTER KEY 陳述式的 ALTER MASTER KEY 選項來加以變更。 未以服務主要金鑰加密的 DMK 必須使用 OPEN MASTER KEY 陳述式和密碼來開啟。

管理 SQL Server 和資料庫金鑰

加密金鑰的管理包括建立新的資料庫金鑰、建立伺服器和資料庫金鑰的備份,以及了解還原、刪除或變更金鑰的時機和方法。

若要管理對稱金鑰,您可以使用 SQL Server 隨附的工具執行以下作業:

  • 備份伺服器和資料庫金鑰的複本,讓您能夠使用它們來復原伺服器安裝,或當做計劃移轉的一部分。

  • 將之前儲存的金鑰還原至資料庫。 如此可讓新的伺服器執行個體存取它原先未加密的現有資料。

  • 當發生無法再存取加密資料的罕見事件中,刪除資料庫中的加密資料。

  • 在金鑰受到危害的罕見事件中,重新建立金鑰並重新加密資料。 就安全性最佳作法而言,您應定期重新建立金鑰 (例如,每隔幾個月),以保護伺服器免於駭客進行破解金鑰的攻擊。

  • 在伺服器向外延展部署中加入或移除伺服器執行個體,其中多部伺服器會共用單一資料庫以及能加解密該資料庫的金鑰。

重要安全性資訊

存取服務主要金鑰所保護的物件時,需要使用先前用來建立金鑰或電腦 (機器) 帳戶的 SQL Server 服務帳戶。 也就是說,電腦帳戶會與金鑰建立所在的系統繫結在一起。 您可以變更 SQL Server 服務帳戶電腦帳戶,而不會遺失金鑰的存取權。 但是,如果您變更這兩者,您將會遺失對服務主要金鑰的存取權。 如果您在沒有這兩個元素之其中一個的情況下遺失對服務主要金鑰的存取權,您將無法使用原始金鑰來解密資料和物件。

以服務主要金鑰維護安全的連接一定要有服務主要金鑰,才能進行還原。

當存取以資料庫主要金鑰維護安全的物件和資料時,只需要用來維護此金鑰安全的密碼。

警告

如果您遺失對上述金鑰的所有存取權,您也會遺失用這些金鑰維護安全之物件、連接和資料的存取權。 您可以還原服務主要金鑰 (如這裡所顯示的連結中所述),或者回到原始加密系統來復原存取。 並沒有其他「捷徑」可復原存取。

本節內容

服務主要金鑰
提供服務主要金鑰和其最佳作法的簡短說明。

可延伸金鑰管理 (EKM)
說明如何搭配 SQL Server 使用第三方金鑰管理系統。

備份服務主要金鑰

還原服務主要金鑰

建立資料庫主要金鑰

備份資料庫主要金鑰

還原資料庫主要金鑰

在兩部伺服器上建立相同的對稱金鑰

使用 EKM 在 SQL Server 上啟用 TDE

使用 Azure Key Vault 的可延伸金鑰管理 (SQL Server)

加密資料行

CREATE MASTER KEY (Transact-SQL)

ALTER SERVICE MASTER KEY (Transact-SQL)

還原資料庫主要金鑰

另請參閱

備份與還原 Reporting Services 加密金鑰
刪除和重新建立加密金鑰 (SSRS Configuration Manager)
加入和移除向外延展部署的加密金鑰 (SSRS 組態管理員)
透明資料加密 (TDE)