CREATE ASYMMETRIC KEY (Transact-SQL)
在数据库中创建非对称密钥。
语法
CREATE ASYMMETRIC KEY Asym_Key_Name
[ AUTHORIZATION database_principal_name ]
{
FROM <Asym_Key_Source>
|
WITH ALGORITHM = { RSA_512 | RSA_1024 | RSA_2048 }
}
[ ENCRYPTION BY PASSWORD = 'password' ]
<Asym_Key_Source>::=
FILE = 'path_to_strong-name_file'
|
EXECUTABLE FILE = 'path_to_executable_file'
|
ASSEMBLY Assembly_Name
参数
- FROM Asym_Key_Source
指定从中加载非对称密钥对的源。
- AUTHORIZATION database_principal_name
指定非对称密钥的所有者。所有者不能是角色或组。如果省略该选项,则所有者为当前用户。
- FILE ='path_to_strong-name_file'
指定从中加载密钥对的强名称文件所在的路径。
- EXECUTABLE FILE ='path_to_executable_file'
指定从中加载公钥的程序集文件。
- ASSEMBLY Assembly_Name
指定从中加载公钥的程序集的名称。
- ENCRYPTION BY PASSWORD ='password'
指定用于对私钥进行加密的密码。如果未提供该子句,则使用数据库主密钥对私钥进行加密。password 最多为 128 个字符。
备注
“非对称密钥**”是数据库级的安全对象实体。该实体的默认格式包含公钥和私钥。当未使用 FROM 子句执行时,CREATE ASYMMETRIC KEY 会生成新的密钥对。当使用 FROM 子句执行时,CREATE ASYMMETRIC KEY 会从文件中导入密钥对,或从程序集中导入公钥。
默认情况下,私钥受数据库主密钥保护。如果尚未创建任何数据库主密钥,则需要使用密码保护私钥。如果不存在数据库主密钥,则可以选择性地使用密码。
私钥的长度可以为 512、1024 或 2048 位。
权限
要求对数据库具有 CREATE ASYMMETRIC KEY 权限。如果指定了 AUTHORIZATION 子句,则需要对数据库主体具有 IMPERSONATE 权限,或者对应用程序角色具有 ALTER 权限。
示例
A. 创建非对称密钥
以下示例使用 RSA_2048
算法创建名为 PacificSales09
的非对称密钥,并使用密码保护私钥。
CREATE ASYMMETRIC KEY PacificSales09
WITH ALGORITHM = RSA_2048
ENCRYPTION BY PASSWORD = 'bmsA$dk7i82bv55foajsd9764';
GO
B. 通过文件创建非对称密钥,为用户提供授权
以下示例通过文件中存储的密钥对创建非对称密钥 PacificSales19
,然后授权用户 SyedAbbas
使用该非对称密钥。
CREATE ASYMMETRIC KEY PacificSales19 AUTHORIZATION SyedAbbas
FROM FILE = ' c:\PacSales\Managers\SyedAbbasCerts.tmp'
ENCRYPTION BY PASSWORD = '35698ofg0sjlkfLKJ4548872$$$2';
GO
请参阅
参考
ALTER ASYMMETRIC KEY (Transact-SQL)
DROP ASYMMETRIC KEY (Transact-SQL)