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

適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database

データベースに非対称キーを作成します。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-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'   

注意

SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

引数Arguments

asym_key_nameasym_key_name
データベース内の非対称キーの名前です。Is the name for the asymmetric key in the database. 非対称キー名は、識別子のルールに従うと共に、データベース内で一意である必要があります。Asymmetric key names must comply with the rules for identifiers and must be unique within the database.

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.

FROM asym_key_sourceFROM asym_key_source
非対称キー ペアの読み込み元を指定します。Specifies the source from which to load the asymmetric key pair.

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

EXECUTABLE FILE = 'path_to_executable_file'EXECUTABLE FILE = 'path_to_executable_file'
公開キーの読み込み元となる、アセンブリ ファイルのパスを指定します。Specifies the path of 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 assembly_nameASSEMBLY assembly_name
公開キーの読み込み元となるデータベースに既に読み込まれている署名付きアセンブリの名前を指定します。Specifies the name of a signed assembly that has already been loaded into the database from which to load the public key.

PROVIDER provider_namePROVIDER provider_name
拡張キー管理 (EKM) プロバイダーの名前を指定します。Specifies the name of an Extensible Key Management (EKM) provider. 最初に CREATE PROVIDER ステートメントを使用してプロバイダーを定義する必要があります。The provider must be defined first using the CREATE PROVIDER statement. 外部キーの管理について詳しくは、「拡張キー管理 (EKM)」をご覧ください。For more information about external key management, see Extensible Key Management (EKM).

ALGORITHM = <algorithm>ALGORITHM = <algorithm>
指定できるアルゴリズムは、RSA_4096、RSA_3072、RSA_2048、RSA_1024、RSA_512 の 5 つです。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.

PROVIDER_KEY_NAME = 'key_name_in_provider'PROVIDER_KEY_NAME = 'key_name_in_provider'
外部プロバイダーからキー名を指定します。Specifies the key name from the external provider.

CREATION_DISPOSITION = CREATE_NEWCREATION_DISPOSITION = CREATE_NEW
拡張キー管理デバイス上で新しいキーを作成します。Creates a new key on the Extensible Key Management device. デバイス上のキー名を指定するには、PROVIDER_KEY_NAME を使用する必要があります。PROVIDER_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. デバイス上のキー名を指定するには、PROVIDER_KEY_NAME を使用する必要があります。PROVIDER_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.

ENCRYPTION BY PASSWORD = 'password'ENCRYPTION BY 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.

解説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 を実行した場合は、ファイルからキー ペアがインポートされるか、アセンブリまたは DLL ファイルから公開キーがインポートされます。When executed with the FROM clause, CREATE ASYMMETRIC KEY imports a key pair from a file, or imports a public key from an assembly or DLL file.

既定では、秘密キーはデータベースのマスター キーによって保護されます。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.

秘密キーは、512、1,024、または 2,048 ビットの長さで指定できます。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

次の例では、RSA_2048 アルゴリズムを使って PacificSales09 という非対称キーを作成し、パスワードで秘密キーを保護します。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.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 assigns ownership of the asymmetric key to user Christina. 秘密キーは、データベース マスター キーによって保護され、非対称キーを作成する前に作成される必要があります。The private key is protected by the database master key, which must be created prior to creating the asymmetric key.

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

C.C. EKM プロバイダーから非対称キーを作成するCreating an asymmetric key from an EKM provider

次の例では、EKM_Provider1 という拡張キー管理プロバイダーに格納されているキー ペアから非対称キー EKM_askey1 を作成し、そのプロバイダー上の key10_user1 というキーを作成します。The following example creates the asymmetric key EKM_askey1 from a key pair stored in an Extensible Key Management provider called EKM_Provider1, 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

ALTER ASYMMETRIC KEY (Transact-SQL)ALTER ASYMMETRIC KEY (Transact-SQL)
DROP ASYMMETRIC KEY (Transact-SQL)DROP ASYMMETRIC KEY (Transact-SQL)
ASYMKEYPROPERTY (Transact-SQL)ASYMKEYPROPERTY (Transact-SQL)
ASYMKEY_ID (Transact-SQL)ASYMKEY_ID (Transact-SQL)
暗号化アルゴリズムの選択Choose an Encryption Algorithm
暗号化階層Encryption Hierarchy
Azure Key Vault を使用する拡張キー管理 (SQL Server)Extensible Key Management Using Azure Key Vault (SQL Server)