CREATE DATABASE ENCRYPTION KEY (Transact-SQL)
适用于: SQL Server Azure SQL 托管实例 分析平台系统 (PDW)
创建用于以透明方式加密数据库的加密密钥。 有关透明数据加密(TDE)的详细信息,请参阅透明数据加密(TDE)。
语法
-- Syntax for SQL Server
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = { AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY }
ENCRYPTION BY SERVER
{
CERTIFICATE Encryptor_Name |
ASYMMETRIC KEY Encryptor_Name
}
[ ; ]
-- Syntax for Parallel Data Warehouse
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = { AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY }
ENCRYPTION BY SERVER CERTIFICATE Encryptor_Name
[ ; ]
参数
WITH ALGORITHM = { AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY }
指定用于加密密钥的加密算法。
警告
从 SQL Server 2016 开始,除 AES_128、AES_192 和 AES_256 以外的所有算法都不再使用。 若要使用旧算法(不推荐),必须将数据库设置为兼容级别 120 或更低。
ENCRYPTION BY SERVER CERTIFICATE Encryptor_Name
指定用于加密数据库加密密钥的加密程序的名称。
ENCRYPTION BY SERVER ASYMMETRIC KEY Encryptor_Name
指定用于加密数据库加密密钥的非对称密钥的名称。 要使用非对称密钥对数据库加密密钥进行加密,非对称密钥必须驻留在可扩展密钥管理提供程序上。
注解
在使用透明数据加密(TDE)加密数据库之前,需要数据库加密密钥。 以透明方式加密数据库时,将在文件级别上加密整个数据库,而无需对代码进行特殊修改。 用于加密数据库加密密钥的证书或非对称密钥必须位于 master 系统数据库中。
用于 TDE 的证书或非对称密钥限于 3072 比特的私钥大小。
只允许对用户数据库使用数据库加密语句。
数据库加密密钥不能从数据库中导出。 它只能供系统、对服务器拥有调试权限的用户以及能够访问证书(用于加密和解密数据库加密密钥)的用户使用。
数据库所有者 (dbo) 发生更改时不必重新生成数据库加密密钥。
系统会为 SQL 数据库自动创建一个数据库加密密钥。 用户无需使用 CREATE DATABASE ENCRYPTION KEY 语句创建密钥。
权限
需要数据库的 CONTROL 权限和用于加密数据库加密密钥的证书或非对称密钥的 VIEW DEFINITION 权限。
示例
有关使用 TDE 的其他示例,请参阅透明数据加密 (TDE)、使用 EKM 在 SQL Server 上启用 TDE 和使用 Azure Key Vault 的可扩展密钥管理 (SQL Server)。
下面的示例使用 AES_256
算法创建一个数据库加密密钥,并使用名为 MyServerCert
的证书保护私钥。
USE AdventureWorks2022;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO
另请参阅
透明数据加密 (TDE)
SQL Server 加密
SQL Server 和数据库加密密钥(数据库引擎)
加密层次结构
ALTER DATABASE SET 选项 (Transact-SQL)
ALTER DATABASE ENCRYPTION KEY (Transact-SQL)
DROP DATABASE ENCRYPTION KEY (Transact-SQL)
sys.dm_database_encryption_keys (Transact-SQL)