ALTER MASTER KEY (Transact-SQL)

适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric SQL 数据库

更改数据库主密钥的属性。

Transact-SQL 语法约定

语法

SQL Server 的语法

-- Syntax for SQL Server
ALTER MASTER KEY <alter_option>

<alter_option> ::=
    <regenerate_option> | <encryption_option>

<regenerate_option> ::=
    [ FORCE ] REGENERATE WITH ENCRYPTION BY PASSWORD = 'password'

<encryption_option> ::=
    ADD ENCRYPTION BY { SERVICE MASTER KEY | PASSWORD = 'password' }
    |
    DROP ENCRYPTION BY { SERVICE MASTER KEY | PASSWORD = 'password' }

Microsoft Fabric 中Azure SQL 数据库和 SQL 数据库的语法

-- Syntax for Azure SQL Database
-- Note: DROP ENCRYPTION BY SERVICE MASTER KEY is not supported on Azure SQL Database.

ALTER MASTER KEY <alter_option>

<alter_option> ::=
    <regenerate_option> | <encryption_option>

<regenerate_option> ::=
    [ FORCE ] REGENERATE WITH ENCRYPTION BY PASSWORD = 'password'

<encryption_option> ::=
    ADD ENCRYPTION BY { SERVICE MASTER KEY | PASSWORD = 'password' }
    |
    DROP ENCRYPTION BY { PASSWORD = 'password' }

Azure Synapse Analytics 和 Analytics Platform System (PDW)的语法

-- Syntax for Azure Synapse Analytics and Analytics Platform System

ALTER MASTER KEY <alter_option>

<alter_option> ::=
    <regenerate_option> | <encryption_option>

<regenerate_option> ::=
    [ FORCE ] REGENERATE WITH ENCRYPTION BY PASSWORD ='password'

<encryption_option> ::=
    ADD ENCRYPTION BY SERVICE MASTER KEY
    |
    DROP ENCRYPTION BY SERVICE MASTER KEY

参数

PASSWORD ='password'

指定用于加密或解密数据库主密钥的密码。 password 必须符合运行 SQL Server 实例的计算机的 Windows 密码策略要求。

备注

可使用 REGENERATE 选项重新创建数据库主密钥和所有受该主密钥保护的密钥。 首先使用旧的主密钥对这些密钥进行解密,然后使用新的主密钥对它们进行加密。 除非主密钥遭到入侵,否则应在需求较低的时间段内计划此资源密集型操作。

SQL Server 2012 (11.x) 使用 AES-256 加密算法来保护服务主密钥 (SMK) 和数据库主密钥 (DMK)。 AES 是一种比早期版本中使用的 3DES 更新的加密算法。 将数据库引擎实例升级到 SQL Server 2012 (11.x),应重新生成 SMK 和 DMK,以便将主密钥升级到 AES。 有关重新生成 SMK 的详细信息,请参阅 ALTER SERVICE MASTER KEY

使用 FORCE 选项时,即使主密钥不可用或服务器无法解密所有加密的私钥,密钥重新生成也会继续。 如果主密钥无法打开,则使用 RESTORE MASTER KEY 语句从备份中还原主密钥。 请仅在主密钥无法恢复或解密失败时,才使用 FORCE 选项。 仅通过不可挽回的密钥加密的信息将丢失。

使用 DROP ENCRYPTION BY SERVICE MASTER KEY 选项,可以删除通过服务主密钥对数据库主密钥的加密。

Azure SQL 数据库不支持 DROP ENCRYPTION BY SERVICE MASTER KEY。

使用 ADD ENCRYPTION BY SERVICE MASTER KEY,可以通过服务主密钥对主密钥的副本进行加密,然后将副本存储在当前数据库和 master 中。

权限

需要针对数据库的 CONTROL 权限。 如果数据库主密钥使用密码进行加密,则还需要了解该密码。

示例

以下示例为 AdventureWorks 创建新的数据库主密钥,并且重新加密在加密层次结构中位于该主密钥之下的密钥。 替换为 <secure password> 强唯一密码。

USE AdventureWorks2022;
ALTER MASTER KEY REGENERATE WITH ENCRYPTION BY PASSWORD = '<secure password>';
GO

示例:Azure Synapse Analytics 和 Analytics Platform System (PDW)

以下示例为 AdventureWorksPDW2012 创建新的数据库主密钥,并且重新加密在加密层次结构中位于该主密钥之下的密钥。 替换为 <secure password> 强唯一密码。

USE master;
ALTER MASTER KEY REGENERATE WITH ENCRYPTION BY PASSWORD = '<secure password>';
GO