现在的位置: 首页 > 综合 > 正文

Sqlserver:更改 SQL Server 实例的服务主密钥

2013年01月10日 ⁄ 综合 ⁄ 共 1582字 ⁄ 字号 评论关闭

据已知的问题现象:凡是和加密相关的东西 都会涉及到 Sqlserver服务器主密钥。因此 在涉及到“解密过程中出错 15466”的问题。均可以通过重置服务器主密钥解决。

注意:这是个运算密集型的操作!!!!可能会丢失加密数据!

语法

ALTER SERVICE MASTER KEY 
[ { <regenerate_option> | <recover_option> } ] [;]

<regenerate_option> ::=
[ FORCE ] REGENERATE

<recover_option> ::=
{ WITH OLD_ACCOUNT = 'account_name' , OLD_PASSWORD = 'password' }
|
{ WITH NEW_ACCOUNT = 'account_name' , NEW_PASSWORD = 'password' }

参数

FORCE

指示即使存在数据丢失的风险,也应当重新生成服务主密钥。有关详细信息,请参阅本主题下文中的更改 SQL
Server 服务帐户

REGENERATE

指示应当重新生成服务主密钥。

OLD_ACCOUNT = 'account_name'

指定旧的 Windows 服务帐户的名称。

OLD_PASSWORD = 'password'

指定旧的 Windows 服务帐户的密码。

NEW_ACCOUNT = 'account_name'

指定新的 Windows 服务帐户的名称。

NEW_PASSWORD = 'password'

指定新的 Windows 服务帐户的密码。

注释

使用本地计算机密钥和 Windows
数据保护 API 对服务主密钥进行加密。该 API 使用从 SQL Server 服务帐户的 Windows 凭据中派生出来的密钥。

第一次需要使用服务主密钥对链接服务器密码、凭据或数据库主密钥进行加密时,便会自动生成服务主密钥。

服务主密钥只能由创建它时所用的服务帐户进行解密,或者由可以访问该服务帐户的 Windows 凭据的主体进行解密。因此,如果您更改了运行
SQL Server 服务所用的 Windows 帐户,则还必须使新帐户能够对服务主密钥进行解密。


更改 SQL Server 服务帐户

若要更改 SQL Server 服务帐户,请使用 SQL Server 配置管理器。为了对服务帐户的变更进行管理,SQL Server
将存储服务主密钥的冗余副本,该密钥由具有授予 SQL Server
服务组的必要权限的计算机帐户对其加以保护。在重建计算机时,将可以为该服务帐户以前使用的同一域用户恢复服务主密钥。这不适用于本地帐户、Local
System、Local Service 或 Network Service 帐户。如果要将 SQL Server
迁移至另一台计算机,请使用备份和还原功能迁移服务主密钥。

REGENERATE 短语可以重新生成服务主密钥。当重新生成服务主密钥时,SQL Server
会对所有使用该主密钥加密的密钥进行解密,然后使用新的服务主密钥对这些密钥进行加密。这是一种消耗大量资源的操作。在不危及密钥安全性的前提下,应当将该操作安排在资源需求较低的时段执行。如果有任意一种解密操作失败,则整个语句将会失败。

即使密钥重新生成过程无法检索当前的主密钥,或者无法对所有使用该主密钥加密的私钥进行解密,使用 FORCE
选项也可以使得密钥重新生成过程继续进行。只有在重新生成过程失败,并且您无法使用 语句还原服务主密钥时,才使用 FORCE 选项。

注意:
服务主密钥为 SQL Server
加密层次结构的根。服务主密钥直接或间接地保护树中的所有其他密钥和机密内容。如果在强制的重新生成过程中不能对某个相关密钥进行解密,则由该密钥所保护的数据便会丢失。

通过 MACHINE KEY
选项,可以使用计算机密钥添加或删除加密。

权限

需要对服务器具有 CONTROL SERVER 权限。

示例

下面的示例重新生成服务主密钥。

复制代码
ALTER SERVICE MASTER KEY REGENERATE;
GO

抱歉!评论已关闭.