CREATE SYMMETRIC KEY (Transact-SQL)

更新 : 2008 年 11 月 17 日

対称キーを生成し、プロパティを指定します。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

CREATE SYMMETRIC KEY key_name [ AUTHORIZATION owner_name ]
    WITH <key_options> [ , ... n ]
    ENCRYPTION BY <encrypting_mechanism> [ , ... n ] 

<encrypting_mechanism> ::=
    CERTIFICATE certificate_name 
    |
    PASSWORD = 'password' 
    |
    SYMMETRIC KEY symmetric_key_name 
    |
    ASYMMETRIC KEY asym_key_name    

<key_options> ::=
    KEY_SOURCE = 'pass_phrase'
    |
    ALGORITHM = <algorithm>
    |
    IDENTITY_VALUE = 'identity_phrase'

<algorithm> ::=
    DES | TRIPLE_DES | RC2 | RC4 | RC4_128
    | DESX | AES_128 | AES_192 | AES_256 

引数

  • key_name
    データベースで認識される対称キーの一意な名前を指定します。一時キーの名前は、シャープ (#) 記号で始める必要があります。たとえば、#temporaryKey900007 のように指定します。2 つ以上の # で始まる名前の対称キーは作成できません。
  • AUTHORIZATION owner_name
    対称キーを所有するデータベース ユーザーまたはアプリケーション ロールの名前を指定します。
  • certificate_name
    対称キーの暗号化に使用する証明書の名前を指定します。証明書はデータベース内に存在する必要があります。
  • 'password'
    対称キーを保護する TRIPLE_DES キーの派生元パスワードを指定します。パスワードの複雑性が確認されます。複雑なパスワードの使用をお勧めします。
  • symmetric_key_name
    作成するキーの暗号化に使用する対称キーを指定します。指定したキーはデータベース内に存在し、開かれている必要があります。
  • asym_key_name
    作成するキーの暗号化に使用する非対称キーを指定します。この非対称キーはデータベース内に存在する必要があります。
  • KEY_SOURCE ='pass_phrase'
    キーの派生元のパスフレーズを指定します。
  • IDENTITY_VALUE ='identity_phrase'
    一時キーで暗号化されるタグ付けデータの GUID の生成元となる ID 句を指定します。

解説

対称キーを作成するときには、証明書、パスワード、対称キー、非対称キーのうち少なくとも 1 つを使用して対称キーを暗号化する必要があります。キーには種類ごとの暗号化を複数指定できます。つまり、1 つの対称キーを、複数の証明書、パスワード、対称キー、および非対称キーを使用して同時に暗号化できます。

ms188357.Caution(ja-jp,SQL.90).gif注意 :
データベースのマスタ キーの公開キーではなく、パスワードを使用して対称キーを暗号化する場合は、TRIPLE_DES 暗号化アルゴリズムが使用されます。このため、AES など、複雑な暗号化アルゴリズムで作成されたキーの場合、キー自身はそれより弱いアルゴリズムで保護されます。

キーを複数のユーザーに配布する前に、追加パスワードを使用して対称キーを暗号化できます。

一時キーは、そのキーを作成したユーザーが所有します。また一時キーは、現在のセッションでのみ有効です。

IDENTITY_VALUE では、新しい対称キーで暗号化されるデータをタグ付けするための GUID が生成されます。このタグ付けは、キーと暗号化データの照合に使用できます。特定の句で生成された GUID は常に同じになります。句を使用して GUID を生成した後は、句に関連付けられている対称キーが削除されるまで、現在のセッションで同じ句を再度使用することはできません。IDENTITY_VALUE は省略可能な句ですが、一時キーで暗号化したデータを保存する場合はこの句を使用することをお勧めします。

既定の暗号化アルゴリズムはありません。

ms188357.note(ja-jp,SQL.90).gif重要 :
重要なデータの保護には RC4 および RC4_128 ストリーム暗号を使用しないことをお勧めします。SQL Server 2005 ではこうしたキーで実行される暗号化に salt を使用しません。

対称キーに関する情報は、sys.symmetric_keys カタログ ビューで確認できます。

DES アルゴリズムに関する説明 :

  • DESX は不適切な名前でした。ALGORITHM = DESX を使用して作成された対称キーでは、実際には 192 ビット キーを使用した TRIPLE DES 暗号が使用されます。DESX アルゴリズムは提供されません。
  • ALGORITHM = TRIPLE_DES を使用して作成された対称キーでは、128 ビット キーを使用した TRIPLE DES が使用されます。

権限

データベースに対する ALTER ANY SYMMETRIC KEY 権限が必要です。AUTHORIZATION を指定する場合は、データベース ユーザーに対する IMPERSONATE 権限、またはアプリケーション ロールに対する ALTER 権限が必要です。証明書または非対称キーを使って暗号化する場合は、証明書または非対称キーに対する VIEW DEFINITION 権限が必要です。

A. 対称キーを作成する

次の例では、AES 256 アルゴリズムを使用して対称キー JanainaKey09 を作成し、新しいキーを証明書 Shipping04 を使用して暗号化します。

CREATE SYMMETRIC KEY JanainaKey09 WITH ALGORITHM = AES_256
    ENCRYPTION BY CERTIFICATE Shipping04;
GO

B. 一時対称キーを作成する

次の例では、パスフレーズ The square of the hypotenuse is equal to the sum of the squares of the sides から、一時対称キー #MarketingXXV を作成します。このキーには文字列 Pythagoras から生成された GUID が与えられ、証明書 Marketing25 を使用して暗号化されます。

CREATE SYMMETRIC KEY #MarketingXXV 
     WITH ALGORITHM = AES_128,
     KEY_SOURCE 
     = 'The square of the hypotenuse is equal to the sum of the squares of the sides',
     IDENTITY_VALUE = 'Pythagoras'
     ENCRYPTION BY CERTIFICATE Marketing25;
GO

参照

関連項目

ALTER SYMMETRIC KEY (Transact-SQL)
DROP SYMMETRIC KEY (Transact-SQL)
sys.symmetric_keys (Transact-SQL)

その他の技術情報

暗号化アルゴリズムの選択
暗号化階層

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2005 年 12 月 5 日

追加内容 :
  • RC4 および RC4_128 ストリーム暗号の使用に関する重要な注を追加。

2008 年 11 月 17 日

追加内容 :
  • DESX アルゴリズムに関する説明を追加。