CREATE ASYMMETRIC KEY (Transact-SQL)
Создает асимметричный ключ в базе данных.
Синтаксис
CREATE ASYMMETRIC KEY Asym_Key_Name
[ AUTHORIZATION database_principal_name ]
{
[ FROM <Asym_Key_Source> ]
|
WITH <key_option>
[ ENCRYPTION BY <encrypting_mechanism> ]
<Asym_Key_Source>::=
FILE ='path_to_strong-name_file'
|
EXECUTABLE FILE ='path_to_executable_file'
|
ASSEMBLY Assembly_Name
|
PROVIDER Provider_Name<key_option> ::=
ALGORITHM = <algorithm>
|
PROVIDER_KEY_NAME ='key_name_in_provider'
|
CREATION_DISPOSITION = { CREATE_NEW | OPEN_EXISTING }
<algorithm> ::=
{ RSA_512 | RSA_1024 | RSA_2048 }
<encrypting_mechanism> ::=
PASSWORD = 'password'
Аргументы
FROM Asym_Key_Source
Задает источник, из которого нужно загрузить пару асимметричных ключей.AUTHORIZATION database_principal_name
Задает владельца асимметричного ключа. Владелец не может быть ролью или группой. Если этот параметр опущен, владельцем будет текущий пользователь.FILE ='path_to_strong-name_file'
Указывает путь надежного имени файла, из которого будет загружена пара ключей.EXECUTABLE FILE ='path_to_executable_file'
Указывает файл сборки, из которого будет загружен открытый ключ. Константа MAX_PATH в Windows API задает ограничение в 260 символов.ASSEMBLY Assembly_Name
Указывает имя сборки, из которой будет загружен открытый ключ.ENCRYPTION BY <key_name_in_provider>
Указывает способ шифрования ключа. Это может быть сертификат, пароль или асимметричный ключ.KEY_NAME ='key_name_in_provider'
Указывает имя ключа из внешнего поставщика. Дополнительные сведения об управлении ключами EKM см. в разделе Основные сведения о расширенном управлении ключами (EKM).CREATION_DISPOSITION = CREATE_NEW
Создает новый ключ на устройстве расширенного управления ключами. Свойство PROV_KEY_NAME должно использоваться для указания имени ключа на устройстве. Если ключ уже существует в устройстве, оператор завершается с ошибкой.CREATION_DISPOSITION = OPEN_EXISTING
Сопоставляет асимметричный ключ SQL Server с существующим ключом системы расширенного управления ключами. Свойство PROV_KEY_NAME должно использоваться для указания имени ключа на устройстве. Если выражение CREATION_DISPOSITION = OPEN_EXISTING не предусмотрено, значением по умолчанию является CREATE_NEW.PASSWORD = 'password'
Указывает пароль для шифрования закрытого ключа. Если это предложение отсутствует, закрытый ключ будет зашифрован главным ключом базы данных. Максимальная длина параметра password составляет 128 символов. Параметр password должен отвечать требованиям политики Windows в отношении паролей для компьютера, на котором работает экземпляр SQL Server.
Замечания
Асимметричный ключ является защищаемой сущностью на уровне базы данных. В его форме по умолчанию эта сущность содержит как открытый, так и закрытый ключ. CREATE ASYMMETRIC KEY при выполнении без предложения FROM формирует новую пару ключей. CREATE ASYMMETRIC KEY при выполнении с предложением FROM импортирует пару ключей из файла или открытый ключ из сборки.
По умолчанию закрытый ключ защищается с помощью главного ключа базы данных. Для защиты закрытого ключа необходим пароль, если не был создан главный ключ базы данных. Если главный ключ базы данных существует, пароль необязателен.
Закрытый ключ может быть длинной 512, 1024 или 2048 бит.
Разрешения
Необходимо разрешение CREATE ASYMMETRIC KEY на базу данных. Если указывается предложение AUTHORIZATION, необходимо разрешение IMPERSONATE на участника базы данных или разрешение ALTER на роль приложения. Асимметричными ключами могут владеть только имена входа Windows, имена входа SQL Server и роли приложений. Группы и роли не могут владеть асимметричными ключами.
Примеры
А. Создание асимметричного ключа
Следующий пример создает асимметричный ключ под именем PacificSales09, используя алгоритм RSA_2048, и защищает закрытый ключ паролем.
CREATE ASYMMETRIC KEY PacificSales09
WITH ALGORITHM = RSA_2048
ENCRYPTION BY PASSWORD = '<enterStrongPasswordHere>';
GO
Б. Создание асимметричного ключа из файла с предоставлением авторизации пользователю
Следующий пример создает асимметричный ключ PacificSales19 из пары ключей, сохраненных в файле, и затем авторизует пользователя Christina для использования асимметричного ключа.
CREATE ASYMMETRIC KEY PacificSales19 AUTHORIZATION Christina
FROM FILE = 'c:\PacSales\Managers\ChristinaCerts.tmp'
ENCRYPTION BY PASSWORD = '<enterStrongPasswordHere>';
GO
В. Создание асимметричного ключа из поставщика расширенного управления ключами
В следующем примере создается асимметричный ключ EKM_askey1 из пары ключей, сохраненной в файле. Затем выполняется шифрование этого ключа с использованием поставщика расширенного управления ключами с именем EKMProvider1 и ключа на этом поставщике с именем key10_user1.
CREATE ASYMMETRIC KEY EKM_askey1
FROM PROVIDER EKM_Provider1
WITH
ALGORITHM = RSA_512,
CREATION_DISPOSITION = CREATE_NEW
, PROVIDER_KEY_NAME = 'key10_user1' ;
GO
См. также