加密資料庫中的復原資料
適用於:Configuration Manager (目前的分支)
當您建立 BitLocker 管理原則時,Configuration Manager將復原服務部署到管理點。 在 BitLocker 管理原則的 [ 客戶 端管理] 頁面上,當您 設定 BitLocker 管理服務時,用戶端會將金鑰修復資訊備份至月臺資料庫。 此資訊包括 BitLocker 修復金鑰、復原套件和 TPM 密碼雜湊。 當使用者被鎖定在受保護的裝置外時,您可以使用此資訊來協助他們復原裝置的存取權。
基於這項資訊的敏感性,您必須保護它。 Configuration Manager需要用戶端與復原服務之間的 HTTPS 連線,才能透過網路加密傳輸中的資料。 如需詳細資訊,請參閱透過 網路加密復原資料。
儲存在月臺資料庫時,也請考慮加密此資料。 如果您安裝SQL Server憑證,Configuration Manager在 SQL 中加密您的資料。
如果您不想建立 BitLocker 管理加密憑證,請加入宣告復原資料的純文字儲存體。 當您建立 BitLocker 管理原則時,請啟用 [ 允許以純文字儲存復原資訊]選項。
注意事項
另一層安全性是加密整個月臺資料庫。 如果您在資料庫上啟用加密,Configuration Manager中沒有任何功能問題。
請小心加密,特別是在大規模環境中。 根據您加密的資料表和 SQL 版本,您可能會發現效能降低高達 25%。 更新備份和復原方案,以便成功復原加密的資料。
注意事項
Configuration Manager永遠不會從資料庫中移除或刪除裝置的復原資訊,即使用戶端為非使用中或已刪除也一樣。 此行為是基於安全性考慮。 它有助於處理裝置遭竊但稍後復原的情況。 對於大型環境,對資料庫大小的影響大約是每個加密磁片區 9 KB 的資料。
SQL Server加密憑證
針對Configuration Manager使用此SQL Server憑證來加密月臺資料庫中的 BitLocker 復原資料。 您可以在 SQL Server 中使用腳本來建立自我簽署憑證。
或者,您可以使用自己的程式來建立和部署此憑證,只要它符合下列需求:
BitLocker 管理加密憑證的名稱必須是
BitLockerManagement_CERT
。使用資料庫主要金鑰加密此憑證。
下列SQL Server使用者需要憑證的控制許可權:
- RecoveryAndHardwareCore
- RecoveryAndHardwareRead
- RecoveryAndHardwareWrite
在階層中的每個月臺資料庫部署相同的憑證。
使用最新版本的 SQL Server 建立憑證。
重要事項
- 使用 SQL Server 2016 或更新版本建立的憑證與 SQL Server 2014 或更早版本相容。
- 使用 SQL Server 2014 或更早版本建立的憑證與 SQL Server 2016 或更新版本不相容。
在SQL Server升級時管理加密憑證
如果您的月臺資料庫位於 SQL Server 2014 或更早版本,在升級SQL Server至 2016 版或更新版本之前,請使用下列程式將憑證輪替至支援的版本。
在執行最新可用版本SQL Server實例上,至少為 2016 版:
在SQL Server實例上,具有您打算升級的加密月臺資料庫:
將月臺資料庫伺服器上的現有憑證SQL Server實例移至另一個名稱。
在 中輪替現有憑證的新憑證。 使用提供的 SQL 函式
[RecoveryAndHardwareCore].[RecryptKey]
重要事項
如果您在輪替憑證之前先升級SQL Server,請連絡 Microsoft 支援服務 以取得因應措施的協助。
如果您的商務需求指定您需要定期更新此憑證,您也可以使用此程式。
範例腳本
這些 SQL 腳本是在Configuration Manager月臺資料庫中建立和部署 BitLocker 管理加密憑證的範例。
建立憑證
此範例腳本會執行下列動作:
- 建立憑證
- 設定許可權
- 建立資料庫主要金鑰
在生產環境中使用此腳本之前,請變更下列值:
- 月臺資料庫名稱 (
CM_ABC
) - 用來建立主要金鑰 ()
MyMasterKeyPassword
的密碼 - 憑證到期日 (
20391022
)
USE CM_ABC
IF NOT EXISTS (SELECT name FROM sys.symmetric_keys WHERE name = '##MS_DatabaseMasterKey##')
BEGIN
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'MyMasterKeyPassword'
END
IF NOT EXISTS (SELECT name from sys.certificates WHERE name = 'BitLockerManagement_CERT')
BEGIN
CREATE CERTIFICATE BitLockerManagement_CERT AUTHORIZATION RecoveryAndHardwareCore
WITH SUBJECT = 'BitLocker Management',
EXPIRY_DATE = '20391022'
GRANT CONTROL ON CERTIFICATE ::BitLockerManagement_CERT TO RecoveryAndHardwareRead
GRANT CONTROL ON CERTIFICATE ::BitLockerManagement_CERT TO RecoveryAndHardwareWrite
END
備份憑證
此範例腳本會備份憑證。 當您將憑證儲存至檔案時,接著可以將它 還 原至階層中的其他月臺資料庫。
在生產環境中使用此腳本之前,請變更下列值:
- 月臺資料庫名稱 (
CM_ABC
) - 檔案路徑和名稱 (
C:\BitLockerManagement_CERT_KEY
) - 匯出金鑰密碼 (
MyExportKeyPassword
)
USE CM_ABC
BACKUP CERTIFICATE BitLockerManagement_CERT TO FILE = 'C:\BitLockerManagement_CERT'
WITH PRIVATE KEY ( FILE = 'C:\BitLockerManagement_CERT_KEY',
ENCRYPTION BY PASSWORD = 'MyExportKeyPassword')
重要事項
請一律備份憑證。 如果您需要復原月臺資料庫,您可能需要還原憑證,才能重新取得修復金鑰的存取權。
將匯出的憑證檔案和相關聯的密碼儲存在安全的位置。
還原憑證
此範例腳本會從檔案還原憑證。 使用此程式來部署您在另一個月臺資料庫上建立的憑證。
在生產環境中使用此腳本之前,請變更下列值:
- 月臺資料庫名稱 (
CM_ABC
) - 主要金鑰密碼 (
MyMasterKeyPassword
) - 檔案路徑和名稱 (
C:\BitLockerManagement_CERT_KEY
) - 匯出金鑰密碼 (
MyExportKeyPassword
)
USE CM_ABC
IF NOT EXISTS (SELECT name FROM sys.symmetric_keys WHERE name = '##MS_DatabaseMasterKey##')
BEGIN
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'MyMasterKeyPassword'
END
IF NOT EXISTS (SELECT name from sys.certificates WHERE name = 'BitLockerManagement_CERT')
BEGIN
CREATE CERTIFICATE BitLockerManagement_CERT AUTHORIZATION RecoveryAndHardwareCore
FROM FILE = 'C:\BitLockerManagement_CERT'
WITH PRIVATE KEY ( FILE = 'C:\BitLockerManagement_CERT_KEY',
DECRYPTION BY PASSWORD = 'MyExportKeyPassword')
GRANT CONTROL ON CERTIFICATE ::BitLockerManagement_CERT TO RecoveryAndHardwareRead
GRANT CONTROL ON CERTIFICATE ::BitLockerManagement_CERT TO RecoveryAndHardwareWrite
END
驗證憑證
使用此 SQL 腳本來確認SQL Server已成功建立具有必要許可權的憑證。
USE CM_ABC
declare @count int
select @count = count(distinct u.name) from sys.database_principals u
join sys.database_permissions p on p.grantee_principal_id = u.principal_id or p.grantor_principal_id = u.principal_id
join sys.certificates c on c.certificate_id = p.major_id
where u.name in('RecoveryAndHardwareCore', 'RecoveryAndHardwareRead', 'RecoveryAndHardwareWrite') and
c.name = 'BitLockerManagement_CERT' and p.permission_name like 'CONTROL'
if(@count >= 3) select 1
else select 0
如果憑證有效,腳本會傳回 的 1
值。
另請參閱
如需這些 SQL 命令的詳細資訊,請參閱下列文章: