CREATE ASYMMETRIC KEY (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics

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

Эта функция несовместима с экспортом базы данных с использованием платформы приложения уровня данных (DACFx). Необходимо удалить все асимметричные ключи перед экспортом.

Соглашения о синтаксисе Transact-SQL

Примечание.

Этот синтаксис не поддерживается бессерверным пулом SQL в Azure Synapse Analytics.

Синтаксис

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_4096 | RSA_3072 | RSA_2048 | RSA_1024 | RSA_512 }   
  
<encrypting_mechanism> ::=  
    PASSWORD = 'password'   

Аргументы

asym_key_name
Имя асимметричного ключа в базе данных. Имена ключей должны соответствовать требованиям, предъявляемым к идентификаторам, и должны быть уникальными в базе данных.

AUTHORIZATION database_principal_name
Задает владельца асимметричного ключа. Владелец не может быть ролью или группой. Если этот параметр опущен, владельцем будет текущий пользователь.

FROM источник_асимметричных_ключей
Задает источник, из которого нужно загрузить пару асимметричных ключей.

FILE = 'путь_к_файлу_надежного_имени'
Указывает путь надежного имени файла, из которого будет загружена пара ключей. Ограничен 260 символами MAX_PATH из API интерфейса Windows.

Примечание.

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

EXECUTABLE FILE = 'путь_к_исполняемому_файлу'
Указывает путь к файлу сборки, из которого будет загружен открытый ключ. Ограничен 260 символами MAX_PATH из API интерфейса Windows.

Примечание.

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

ASSEMBLY assembly_name
Задает имя используемой подписанной сборки, которая уже была загружена в базу данных и из которой следует загрузить открытый ключ.

PROVIDER имя_поставщика
Указывает имя поставщика расширенного управления ключами. Поставщик должен быть сначала определен с использованием инструкции CREATE PROVIDER. Дополнительные сведения о расширенном управлении ключами см. в разделе Расширенное управление ключами (EKM).

ALGORITHM = <algorithm>
Доступны пять алгоритмов: RSA_4096, RSA_3072, RSA_2048, RSA_1024 и RSA_512.

RSA_1024 и RSA_512 являются устаревшими. Чтобы использовать алгоритмы RSA_1024 или RSA_512 (что не рекомендуется), необходимо установить уровень совместимости базы данных 120 или ниже.

PROVIDER_KEY_NAME = 'имя_ключа_у_поставщика'
Указывает имя ключа из внешнего поставщика.

CREATION_DISPOSITION = CREATE_NEW
Создает новый ключ на устройстве расширенного управления ключами. Свойство PROVIDER_KEY_NAME должно использоваться для указания имени ключа на устройстве. Если ключ уже существует в устройстве, оператор завершается с ошибкой.

CREATION_DISPOSITION = OPEN_EXISTING
Сопоставляет асимметричный ключ SQL Server с существующим ключом управления расширяемыми ключами. Свойство PROVIDER_KEY_NAME должно использоваться для указания имени ключа на устройстве. Если выражение CREATION_DISPOSITION = OPEN_EXISTING не предусмотрено, значением по умолчанию является CREATE_NEW.

ENCRYPTION BY PASSWORD = 'пароль'
Указывает пароль для шифрования закрытого ключа. Если это предложение отсутствует, закрытый ключ будет зашифрован с использованием главного ключа базы данных. password имеет максимальную длину 128 символов. пароль должен соответствовать требованиям политики паролей Windows компьютера, на котором выполняется экземпляр SQL Server.

Замечания

Асимметричный ключ является защищаемой сущностью на уровне базы данных. В его форме по умолчанию эта сущность содержит как открытый, так и закрытый ключ. CREATE ASYMMETRIC KEY при выполнении без предложения FROM формирует новую пару ключей. CREATE ASYMMETRIC KEY при выполнении с предложением FROM импортирует пару ключей из файла или открытый ключ из сборки или библиотеки DLL.

По умолчанию закрытый ключ защищается с помощью главного ключа базы данных. Для защиты закрытого ключа необходим пароль, если не был создан главный ключ базы данных.

Закрытый ключ может быть длинной 512, 1024 или 2048 бит.

Для асимметричных ключей, используемых для прозрачного шифрования данных, размер закрытого ключа ограничен 3072 битами.

Разрешения

Необходимо разрешение 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  

B. Создание асимметричного ключа из файла с предоставлением авторизации пользователю

Следующий пример создает асимметричный ключ PacificSales19 из пары ключей, сохраненных в файле, и затем назначает владение асимметричным ключом пользователю Christina. Закрытый ключ защищен главным ключом базы данных, который должен быть создан до создания асимметричного ключа.

CREATE ASYMMETRIC KEY PacificSales19  
    AUTHORIZATION Christina  
    FROM FILE = 'c:\PacSales\Managers\ChristinaCerts.tmp';  
GO  

C. Создание асимметричного ключа из поставщика расширенного управления ключами

В следующем примере создается асимметричный ключ EKM_askey1 из пары ключей, сохраненной в поставщике расширенного управления ключами с именем EKM_Provider1, и ключ с именем key10_user1 в этом же поставщике.

CREATE ASYMMETRIC KEY EKM_askey1   
    FROM PROVIDER EKM_Provider1  
    WITH   
        ALGORITHM = RSA_2048,   
        CREATION_DISPOSITION = CREATE_NEW  
        , PROVIDER_KEY_NAME  = 'key10_user1' ;  
GO  

См. также

ALTER ASYMMETRIC KEY (Transact-SQL)
DROP ASYMMETRIC KEY (Transact-SQL)
ASYMKEYPROPERTY (Transact-SQL)
ASYMKEY_ID (Transact-SQL)
Выбор алгоритма шифрования
Иерархия средств шифрования
Расширенное управление ключами с помощью Azure Key Vault (SQL Server)