ALTER SERVICE MASTER KEY (Transact-SQL)
更改 SQL Server 实例的服务主密钥。
语法
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 服务帐户的名称。注意 此选项已过时。 请勿使用。 请改用 SQL Server 配置管理器。
OLD_PASSWORD ='password'
指定旧的 Windows 服务帐户的密码。注意 此选项已过时。 请勿使用。 请改用 SQL Server 配置管理器。
NEW_ACCOUNT ='account_name'
指定新的 Windows 服务帐户的名称。注意 此选项已过时。 请勿使用。 请改用 SQL Server 配置管理器。
NEW_PASSWORD ='password'
指定新的 Windows 服务帐户的密码。注意 此选项已过时。 请勿使用。 请改用 SQL Server 配置管理器。
注释
当第一次需要使用服务主密钥对链接服务器密码、凭据或数据库主密钥进行加密时,便会自动生成服务主密钥。 使用本地计算机密钥和 Windows 数据保护 API 对服务主密钥进行加密。 该 API 使用从 SQL Server 服务帐户的 Windows 凭据中派生的密钥。
SQL Server 2012 使用 AES-256 加密算法来保护服务主密钥 (SMK) 和数据库主密钥 (DMK)。 AES 是一种比早期版本中使用的 3DES 更新的加密算法。 在将数据库引擎实例升级到 SQL Server 2012 后,应重新生成 SMK 和 DMK,以便将主密钥升级到 AES。 有关重新生成 DMK 的详细信息,请参阅 ALTER MASTER KEY (Transact-SQL)。
更改 SQL Server 服务帐户
若要更改 SQL Server 服务帐户,请使用 SQL Server 配置管理器。为了对服务帐户的变更进行管理,SQL Server 将存储服务主密钥的冗余副本,该密钥由具有授予 SQL Server 服务组的必要权限的计算机帐户对其加以保护。在重建计算机时,将可以为该服务帐户以前使用的同一域用户恢复服务主密钥。 这不适用于本地帐户、Local System、Local Service 或 Network Service 帐户。 如果要将 SQL Server 迁移至另一台计算机,请使用备份和还原功能迁移服务主密钥。
REGENERATE 短语可以重新生成服务主密钥。 当重新生成服务主密钥时,SQL Server 会对所有使用该主密钥加密的密钥进行解密,然后使用新的服务主密钥对这些密钥进行加密。 这是一种消耗大量资源的操作。 在不危及密钥安全性的前提下,应当将该操作安排在资源需求较低的时段执行。 如果有任意一种解密操作失败,则整个语句将会失败。
即使密钥重新生成过程无法检索当前的主密钥,或者无法对所有使用该主密钥加密的私钥进行解密,使用 FORCE 选项也可以使得密钥重新生成过程继续进行。 只有在重新生成过程失败,并且您无法使用 RESTORE SERVICE MASTER KEY 语句还原服务主密钥时,才使用 FORCE 选项。
注意 |
---|
服务主密钥为 SQL Server 加密层次结构的根。 服务主密钥直接或间接地保护树中的所有其他密钥和机密内容。 如果在强制的重新生成过程中不能对某个相关密钥进行解密,则由该密钥所保护的数据会丢失。 |
如果将 SQL 移到另一计算机,则必须使用相同的服务帐户来解密 SMK – SQL Server 将自动修复计算机帐户加密。
权限
需要对服务器的 CONTROL SERVER 权限。
示例
下面的示例重新生成服务主密钥。
ALTER SERVICE MASTER KEY REGENERATE;
GO
请参阅
参考
RESTORE SERVICE MASTER KEY (Transact-SQL)
BACKUP SERVICE MASTER KEY (Transact-SQL)