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'
    公開キーの読み込み元となる、アセンブリ ファイルを指定します。Windows API では、パスの最大長が MAX_PATH によって 260 文字に制限されています。

  • ASSEMBLY Assembly_Name
    公開キーの読み込み元となる、アセンブリの名前を指定します。

  • ENCRYPTION BY <key_name_in_provider>
    キーの暗号化方法を指定します。証明書、パスワード、または非対称キーを指定できます。

  • KEY_NAME ='key_name_in_provider'
    外部プロバイダーからキー名を指定します。外部キー管理の詳細については、「拡張キー管理 (EKM) について」を参照してください。

  • 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 は、SQL Server のインスタンスを実行しているコンピューターの Windows パスワード ポリシーの要件を満たす必要があります。

説明

非対称キーは、データベース レベルのセキュリティ保護可能なエンティティです。既定の形式では、このエンティティには公開キーと秘密キーの両方が含まれます。FROM 句を使用せずに CREATE ASYMMETRIC KEY を実行した場合は、新しいキー ペアが作成されます。FROM 句を使用して CREATE ASYMMETRIC KEY を実行した場合は、キー ペアがファイルからインポートされるか、公開キーがアセンブリからインポートされます。

既定では、秘密キーはデータベースのマスター キーによって保護されます。データベースのマスター キーが作成されていない場合、秘密キーを保護するにはパスワードが必要です。データベースのマスター キーが存在する場合、パスワードは省略可能です。

秘密キーは、512、1,024、または 2,048 ビットの長さで指定できます。

権限

データベースに対する CREATE ASYMMETRIC KEY 権限が必要です。AUTHORIZATION 句を指定する場合は、データベース プリンシパルに対する IMPERSONATE 権限、またはアプリケーション ロールに対する ALTER 権限が必要です。非対称キーを所有できるのは、Windows ログイン、SQL Server ログイン、およびアプリケーション ロールだけです。グループとロールは非対称キーを所有できません。

A. 非対称キーを作成する

次の例では、RSA_2048 アルゴリズムを使用して PacificSales09 という非対称キーを作成し、パスワードで秘密キーを保護します。

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'  
    ENCRYPTION BY PASSWORD = '<enterStrongPasswordHere>';
GO

C. EKM プロバイダーから非対称キーを作成する

次の例では、ファイルに格納されたキー ペアから非対称キー 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