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

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

在 SQL Server 中,加密金鑰包括用於保護機密資料的公開、私密和對稱金鑰的組合。 當您第一次啟動SQL Server實例時,會在SQL Server初始化期間建立對稱金鑰。 SQL Server會使用此金鑰來加密儲存在 SQL Server 中的敏感性資料。 公開金鑰和私密金鑰是由作業系統所建立,可用來保護對稱金鑰。 系統會為每個SQL Server實例建立公開和私密金鑰組,以將敏感性資料儲存在資料庫中。

SQL Server 和資料庫金鑰的套用

SQL Server有兩個金鑰的主要應用程式:服務主要金鑰 (SMK) 針對 SQL Server 實例產生,而資料庫主要金鑰 (DMK) 用於資料庫。

SMK 會在第一次啟動SQL Server實例時自動產生,並用來加密連結的伺服器密碼、認證和資料庫主要金鑰。 SMK 的加密方式,是使用透過 Windows Data Protection API (DPAPI) 的本機電腦金鑰。 DPAPI 會使用衍生自SQL Server服務帳戶和電腦認證的 Windows 認證金鑰。 服務主要金鑰只能由建立它時所使用的服務帳戶解密,或是只能由可以存取電腦認證的主體解密。

資料庫主要金鑰是一個用來保護資料庫中憑證之私密金鑰和非對稱金鑰的對稱金鑰。 它也可以用來加密資料,但是有長度上的限制,因此與對稱金鑰相較之下,它用於資料時比較不實用。

建立資料庫主要金鑰時,會利用三重 DES 演算法和使用者提供的密碼來加密主要金鑰。 若要啟用主要金鑰的自動解密,就要使用 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。

備份服務主要金鑰

還原服務主要金鑰

建立資料庫主要金鑰

備份資料庫主要金鑰

還原資料庫主要金鑰

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

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

使用 EKM 啟用 TDE

CREATE MASTER KEY (Transact-SQL)

ALTER SERVICE MASTER KEY (Transact-SQL)

還原資料庫主要金鑰

另請參閱

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