CREATE ASYMMETRIC KEY (Transact-SQL)

Создает асимметричный ключ в базе данных.

Значок ссылки на раздел Синтаксические обозначения 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'
    Указывает файл сборки, из которого будет загружен открытый ключ. Ограничен 260 символами MAX_PATH из API интерфейса Windows.

    ПримечаниеПримечание

    Этот параметр недоступен в автономной базе данных.

  • ASSEMBLY Assembly_Name
    Указывает имя сборки, из которой будет загружен открытый ключ.

  • ENCRYPTION BY <key_name_in_provider>
    Указывает способ шифрования ключа. Это может быть сертификат, пароль или асимметричный ключ.

  • KEY_NAME ='key_name_in_provider'
    Указывает имя ключа из внешнего поставщика. Дополнительные сведения об управлении ключами EKM см. в разделе Расширенное управление ключами (Extensible Key Management).

  • 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

См. также

Справочник

ALTER ASYMMETRIC KEY (Transact-SQL)

DROP ASYMMETRIC KEY (Transact-SQL)

Основные понятия

Выбор алгоритма шифрования

Иерархия средств шифрования