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 資料保護 API (DPAPI) 的本機電腦金鑰來加密。 DPAPI 會使用衍生自 SQL Server 服務帳戶之 Windows 認證和電腦認證的密鑰。 服務主要金鑰只能由建立的服務帳戶或具有計算機認證存取權的主體解密。
資料庫主要金鑰是對稱金鑰,用來保護資料庫中存在的憑證和非對稱密鑰的私鑰。 它也可以用來加密資料,但它有長度限制,使得相比使用對稱密鑰來說,對資料的加密實用性較低。
建立時,主要密鑰會使用 Triple DES 演演算法和使用者提供的密碼來加密。 若要啟用主要金鑰的自動解密,請使用 SMK 來加密金鑰複本。 它儲存在所使用的資料庫和 master 系統資料庫中。
每當 DMK 變更時,系統會以無訊息方式更新儲存在 master 系統資料庫中的 DMK 複本。 不過,您可以使用 語句的 ALTER MASTER KEY 選項來變更DROP ENCRYPTION BY SERVICE MASTER KEY此預設值。 未由服務主金鑰加密之 DMK 必須使用 OPEN MASTER KEY 語句和密碼來開啟。
管理 SQL Server 和資料庫金鑰
管理加密金鑰包含建立新的資料庫金鑰、建立伺服器和資料庫金鑰的備份,以及知道還原、刪除或變更密鑰的時機和方式。
若要管理對稱金鑰,您可以使用 SQL Server 中包含的工具來執行下列動作:
備份伺服器和資料庫金鑰的複本,讓您可以使用它們來復原伺服器安裝,或作為計劃性移轉的一部分。
將先前儲存的金鑰還原至資料庫。 這可讓新的伺服器實例存取原本未加密的現有數據。
在不太可能發生的情況下,您無法再存取加密數據時,刪除資料庫中的加密數據。
在金鑰遭到入侵的不太可能事件中重新建立金鑰並重新加密數據。 作為安全性最佳做法,您應該定期重新建立密鑰(例如,每隔幾個月),以保護伺服器免於嘗試解密密鑰的攻擊。
從伺服器向外延展部署新增或移除伺服器實例,其中多部伺服器同時共用單一資料庫,以及為該資料庫提供可逆加密的密鑰。
重要安全性資訊
由服務主金鑰保護的物件的存取需要使用建立該金鑰的 SQL Server 服務帳戶或是電腦(機器)帳戶。 也就是說,電腦會連接到密鑰被創建的系統。 您可以變更 SQL Server 服務帳戶 或 電腦帳戶,而不會失去密鑰的存取權。 不過,如果您變更這兩者,您將失去服務主要密鑰的存取權。 如果您遺失服務主要密鑰的存取權,而沒有這兩個元素之一,就無法使用原始密鑰來解密加密的數據和物件。
若沒有服務主要密鑰,就無法還原使用服務主要密鑰保護的連線。
存取使用資料庫主要密鑰保護的物件和數據,只需要用來協助保護密鑰的密碼。
謹慎
如果您遺失先前所述的金鑰的所有存取權,您將無法存取這些密鑰所保護的物件、連線和數據。 您可以還原服務主要密鑰,如這裡所示的連結所述,或者您可以返回原始加密系統來復原存取權。 沒有復原存取權的「後門」。
本節中
服務主要金鑰
提供服務主要金鑰及其最佳做法的簡短說明。
可延伸金鑰管理 (EKM)
說明如何搭配 SQL Server 使用第三方金鑰管理系統。
相關工作
使用 Azure Key Vault 進行可延伸的密鑰管理 (SQL Server)
相關內容
CREATE MASTER KEY (Transact-SQL)
ALTER SERVICE MASTER KEY (Transact-SQL)
另請參閱
備份和還原報表服務加密金鑰
刪除並重新建立加密金鑰 (SSRS 組態管理員)
新增與移除 Scale-Out 部署的加密金鑰 (SSRS 組態管理員)
透明資料加密 (TDE)