CREATE ASYMMETRIC KEY (Transact-SQL)CREATE ASYMMETRIC KEY (Transact-SQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ:даSQL Server (начиная с 2008)даБаза данных SQL AzureдаХранилище данных SQL AzureнетParallel Data WarehouseAPPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Создает асимметричный ключ в базе данных.Creates an asymmetric key in the database.

Эта функция несовместима с экспортом базы данных с использованием платформы приложения уровня данных (DACFx).This feature is incompatible with database export using Data Tier Application Framework (DACFx). Необходимо удалить все асимметричные ключи перед экспортом.You must drop all asymmetric keys before exporting.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQLTopic link icon Transact-SQL Syntax Conventions

СинтаксисSyntax

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'   

АргументыArguments

FROM Asym_Key_SourceFROM Asym_Key_Source
Задает источник, из которого нужно загрузить пару асимметричных ключей.Specifies the source from which to load the asymmetric key pair.

AUTHORIZATION database_principal_nameAUTHORIZATION database_principal_name
Задает владельца асимметричного ключа.Specifies the owner of the asymmetric key. Владелец не может быть ролью или группой.The owner cannot be a role or a group. Если этот параметр опущен, владельцем будет текущий пользователь.If this option is omitted, the owner will be the current user.

FILE ='path_to_strong-name_file'FILE ='path_to_strong-name_file'
Указывает путь надежного имени файла, из которого будет загружена пара ключей.Specifies the path of a strong-name file from which to load the key pair.

Примечание

Этот параметр недоступен в автономной базе данных.This option is not available in a contained database.

EXECUTABLE FILE ='path_to_executable_file'EXECUTABLE FILE ='path_to_executable_file'
Указывает файл сборки, из которого будет загружен открытый ключ.Specifies an assembly file from which to load the public key. Ограничен 260 символами MAX_PATH из API интерфейса Windows.Limited to 260 characters by MAX_PATH from the Windows API.

Примечание

Этот параметр недоступен в автономной базе данных.This option is not available in a contained database.

ASSEMBLY Assembly_NameASSEMBLY Assembly_Name
Указывает имя сборки, из которой будет загружен открытый ключ.Specifies the name of an assembly from which to load the public key.

ENCRYPTION BY <key_name_in_provider> Указывает способ шифрования ключа.ENCRYPTION BY <key_name_in_provider> Specifies how the key is encrypted. Это может быть сертификат, пароль или асимметричный ключ.Can be a certificate, password, or asymmetric key.

KEY_NAME ='key_name_in_provider'KEY_NAME ='key_name_in_provider'
Указывает имя ключа из внешнего поставщика.Specifies the key name from the external provider. Дополнительные сведения о расширенном управлении ключами см. в разделе Расширенное управление ключами (EKM).For more information about external key management, see Extensible Key Management (EKM).

CREATION_DISPOSITION = CREATE_NEWCREATION_DISPOSITION = CREATE_NEW
Создает новый ключ на устройстве расширенного управления ключами.Creates a new key on the Extensible Key Management device. Свойство PROV_KEY_NAME должно использоваться для указания имени ключа на устройстве.PROV_KEY_NAME must be used to specify key name on the device. Если ключ уже существует в устройстве, оператор завершается с ошибкой.If a key already exists on the device the statement fails with error.

CREATION_DISPOSITION = OPEN_EXISTINGCREATION_DISPOSITION = OPEN_EXISTING
Сопоставляет асимметричный ключ SQL ServerSQL Server с существующим ключом системы расширенного управления ключами.Maps a SQL ServerSQL Server asymmetric key to an existing Extensible Key Management key. Свойство PROV_KEY_NAME должно использоваться для указания имени ключа на устройстве.PROV_KEY_NAME must be used to specify key name on the device. Если выражение CREATION_DISPOSITION = OPEN_EXISTING не предусмотрено, значением по умолчанию является CREATE_NEW.If CREATION_DISPOSITION = OPEN_EXISTING is not provided, the default is CREATE_NEW.

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

RSA_1024 и RSA_512 являются устаревшими.RSA_1024 and RSA_512 are deprecated. Чтобы использовать алгоритмы RSA_1024 или RSA_512 (что не рекомендуется), необходимо установить уровень совместимости базы данных 120 или ниже.To use RSA_1024 or RSA_512 (not recommended) you must set the database to database compatibility level 120 or lower.

PASSWORD = 'password'PASSWORD = 'password'
Указывает пароль для шифрования закрытого ключа.Specifies the password with which to encrypt the private key. Если это предложение отсутствует, закрытый ключ будет зашифрован с использованием главного ключа базы данных.If this clause is not present, the private key will be encrypted with the database master key. password имеет максимальную длину 128 символов.password is a maximum of 128 characters. password должен соответствовать требованиям политики паролей Windows применительно к компьютеру, на котором запущен экземпляр SQL ServerSQL Server.password must meet the Windows password policy requirements of the computer that is running the instance of SQL ServerSQL Server.

RemarksRemarks

Асимметричный ключ является защищаемой сущностью на уровне базы данных.An asymmetric key is a securable entity at the database level. В его форме по умолчанию эта сущность содержит как открытый, так и закрытый ключ.In its default form, this entity contains both a public key and a private key. CREATE ASYMMETRIC KEY при выполнении без предложения FROM формирует новую пару ключей.When executed without the FROM clause, CREATE ASYMMETRIC KEY generates a new key pair. CREATE ASYMMETRIC KEY при выполнении с предложением FROM импортирует пару ключей из файла или открытый ключ из сборки.When executed with the FROM clause, CREATE ASYMMETRIC KEY imports a key pair from a file or imports a public key from an assembly.

По умолчанию закрытый ключ защищается с помощью главного ключа базы данных.By default, the private key is protected by the database master key. Для защиты закрытого ключа необходим пароль, если не был создан главный ключ базы данных.If no database master key has been created, a password is required to protect the private key. Если главный ключ базы данных существует, пароль необязателен.If a database master key does exist, the password is optional.

Закрытый ключ может быть длинной 512, 1024 или 2048 бит.The private key can be 512, 1024, or 2048 bits long.

РазрешенияPermissions

Необходимо разрешение CREATE ASYMMETRIC KEY на базу данных.Requires CREATE ASYMMETRIC KEY permission on the database. Если указывается предложение AUTHORIZATION, необходимо разрешение IMPERSONATE на участника базы данных или разрешение ALTER на роль приложения.If the AUTHORIZATION clause is specified, requires IMPERSONATE permission on the database principal, or ALTER permission on the application role. Асимметричными ключами могут владеть только имена входа Windows, имена входа SQL ServerSQL Server и роли приложений.Only Windows logins, SQL ServerSQL Server logins, and application roles can own asymmetric keys. Группы и роли не могут владеть асимметричными ключами.Groups and roles cannot own asymmetric keys.

ПримерыExamples

A.A. Создание асимметричного ключаCreating an asymmetric key

Следующий пример создает асимметричный ключ под именем PacificSales09, используя алгоритм RSA_2048, и защищает закрытый ключ паролем.The following example creates an asymmetric key named PacificSales09 by using the RSA_2048 algorithm, and protects the private key with a password.

CREATE ASYMMETRIC KEY PacificSales09   
    WITH ALGORITHM = RSA_2048   
    ENCRYPTION BY PASSWORD = '<enterStrongPasswordHere>';   
GO  

Б.B. Создание асимметричного ключа из файла с предоставлением авторизации пользователюCreating an asymmetric key from a file, giving authorization to a user

Следующий пример создает асимметричный ключ PacificSales19 из пары ключей, сохраненных в файле, и затем авторизует пользователя Christina для использования асимметричного ключа.The following example creates the asymmetric key PacificSales19 from a key pair stored in a file, and then authorizes user Christina to use the asymmetric key.

CREATE ASYMMETRIC KEY PacificSales19 AUTHORIZATION Christina   
    FROM FILE = 'c:\PacSales\Managers\ChristinaCerts.tmp'    
    ENCRYPTION BY PASSWORD = '<enterStrongPasswordHere>';  
GO  

В.C. Создание асимметричного ключа из поставщика расширенного управления ключамиCreating an asymmetric key from an EKM provider

В следующем примере создается асимметричный ключ EKM_askey1 из пары ключей, сохраненной в файле.The following example creates the asymmetric key EKM_askey1 from a key pair stored in a file. Затем выполняется шифрование этого ключа с использованием поставщика расширенного управления ключами с именем EKMProvider1 и ключа на этом поставщике с именем key10_user1.It then encrypts it using an Extensible Key Management provider called EKMProvider1, and a key on that provider called 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  

См. также:See Also

Выбор алгоритма шифрования Choose an Encryption Algorithm
ALTER ASYMMETRIC KEY (Transact-SQL) ALTER ASYMMETRIC KEY (Transact-SQL)
DROP ASYMMETRIC KEY (Transact-SQL) DROP ASYMMETRIC KEY (Transact-SQL)
Иерархия средств шифрования Encryption Hierarchy
Расширенное управление ключами с помощью хранилища ключей Azure (SQL Server)Extensible Key Management Using Azure Key Vault (SQL Server)