SQL Server 和資料庫加密金鑰

iSQlServer發表於2008-11-25

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 並用於對連結的伺服器密碼、憑據和資料庫主金鑰進行加密。SMK 是通過使用採用 Windows 資料保護 API (DPAPI) 的本地計算機金鑰進行加密的。DPAPI 使用從 SQL Server 服務帳戶的 Windows 憑據和計算機的憑據派生的金鑰。服務主金鑰只能由建立它時所用的服務帳戶或可以訪問該計算機憑據的主體進行解密。

資料庫主金鑰是一種用於保護資料庫中存在的證書私鑰和非對稱金鑰的對稱金鑰。它還可用於對資料進行加密,但由於它有長度限制,所以用於資料加密時實用性不如對稱金鑰。

當建立主金鑰時,會使用 Triple DES 演算法以及使用者提供的密碼對其進行加密。若要啟用資料庫主金鑰的自動解密,請使用 SMK 對此金鑰的副本進行加密。此金鑰的副本儲存在使用它的資料庫和 master 系統資料庫中。

每當更改 DMK 時,儲存在 master 系統資料庫中的 DMK 副本都將在沒有提示的情況下更新。但是,使用 ALTER MASTER KEY 語句的 DROP ENCRYPTION BY SERVICE MASTER KEY 選項可以更改此預設設定。必須使用 OPEN MASTER KEY 語句和密碼開啟未使用服務主金鑰進行加密的 DMK。

 管理 SQL Server 和資料庫金鑰
對加密金鑰的管理包括建立新資料庫金鑰,建立伺服器和資料庫金鑰的備份以及瞭解還原、刪除或更改金鑰的條件和方式。

若要管理對稱金鑰,可以使用 SQL Server 中包括的工具執行下列操作:

備份伺服器和資料庫金鑰的副本,以便可以使用這些金鑰來恢復伺服器安裝,或作為計劃遷移的一部分。

將以前儲存的金鑰還原到資料庫。這樣,新伺服器例項就可以訪問最初不是由其加密的現有資料。

當不能再訪問加密資料時刪除資料庫中的加密資料,這種情況極少出現。

當金鑰的安全性受到威脅時,重新建立金鑰並重新對資料進行加密,這種情況極少出現。作為安全性方面的最佳做法,您應定期(例如,每隔幾個月)重新建立金鑰以保護伺服器,使其能夠抵禦試圖解開金鑰的攻擊。

在伺服器擴充套件部署(多個伺服器同時共享單個資料庫以及為該資料庫提供可逆加密的金鑰)中新增或刪除伺服器例項。

 重要的安全資訊
訪問由服務主金鑰保護的物件需要使用用來建立該金鑰的 SQL Server 服務帳戶或計算機帳戶。即,計算機與建立金鑰的系統繫結在一起。您可以更改 SQL Server 服務帳戶或計算機帳戶,而不會失去對金鑰的訪問許可權。但是,如果同時更改兩者,則將失去對服務主金鑰的訪問許可權。如果在不具有這兩個元素中的任何一個的情況下失去了服務主金鑰的訪問許可權,則將無法對使用原始金鑰加密的資料和物件進行解密。

如果沒有服務主金鑰,則將無法還原受服務主金鑰保護的連線。

訪問受資料庫主金鑰保護的物件和資料只需要有用於幫助保護金鑰的密碼。

注意:
如果失去了對前述金鑰的所有訪問許可權,則將無法訪問由這些金鑰保護的物件、連線和資料。可按照此處顯示的連結中說明的方法還原服務主金鑰,也可以返回原始加密系統來恢復訪問許可權。沒有用來恢復訪問許可權的“後門”。
 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-503170/,如需轉載,請註明出處,否則將追究法律責任。

相關文章