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

이 항목은 다음에 적용됩니다.예SQL Server(2008부터)예Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

데이터베이스에서 비대칭 키를 만듭니다.Creates an asymmetric key in the database.

이 기능은 Data Tier Application Framework(DACFx)를 사용하는 데이터베이스 내보내기와 호환되지 않습니다.This feature is incompatible with database export using Data Tier Application Framework (DACFx). 내보내기 전에 모든 비대칭 키를 삭제해야 합니다.You must drop all asymmetric keys before exporting.

항목 링크 아이콘 Transact-SQL 구문 규칙Topic 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

Asym_Key_SourceFROM Asym_Key_Source
비대칭 키 쌍을 로드할 원본을 지정합니다.Specifies the source from which to load the asymmetric key pair.

권한 부여 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.

파일 ='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.

실행 파일 ='path_to_executable_file'EXECUTABLE FILE ='path_to_executable_file'
공개 키를 로드할 어셈블리 파일을 지정합니다.Specifies an assembly file from which to load the public key. Windows API에서 MAX_PATH를 통해 260자로 제한됩니다.Limited to 260 characters by MAX_PATH from the Windows API.

참고

포함된 데이터베이스에서는 이 옵션을 사용할 수 없습니다.This option is not available in a contained database.

어셈블리 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>
5 개의 알고리즘 제공 될 수 있습니다. 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'
개인 키를 암호화하는 데 사용할 암호를 지정합니다.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. 암호 최대 128 자입니다.password is a maximum of 128 characters. 암호 의 인스턴스를 실행 하는 컴퓨터의 Windows 암호 정책 요구 사항을 충족 해야 SQL ServerSQL Server합니다.password must meet the Windows password policy requirements of the computer that is running the instance of SQL ServerSQL Server.

주의Remarks

비대칭 키 는 데이터베이스 수준에서 보안 가능한 엔터티입니다.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. FROM 절 없이 실행될 경우 CREATE ASYMMETRIC KEY는 새로운 키 쌍을 생성합니다.When executed without the FROM clause, CREATE ASYMMETRIC KEY generates a new key pair. FROM 절로 실행될 경우 CREATE ASYMMETRIC KEY는 파일에서 키 쌍을 가져오거나 어셈블리에서 공개 키를 가져옵니다.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.

PermissionsPermissions

데이터베이스에 대한 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

1.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  

2.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  

3.C. EKM 공급자에서 비대칭 키 만들기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 Key Vault를 사용한 확장 가능 키 관리(SQL Server)Extensible Key Management Using Azure Key Vault (SQL Server)