CREATE COLUMN ENCRYPTION KEY (Transact-SQL)CREATE COLUMN ENCRYPTION KEY (Transact-SQL)

適用対象: ○SQL Server (2016 以降) ○Azure SQL Database XAzure SQL Data Warehouse XParallel Data Warehouse APPLIES TO: yesSQL Server (starting with 2016) yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

値の初期セットを使用して列暗号化キー (CEK) を作成します。暗号化は、指定された列のマスター キー (CMK) を使用して実行されます。Creates a column encryption key (CEK) with the initial set of values, encrypted with the specified column master keys (CMKs). この暗号化は、メタデータ操作です。This encryption is a metadata operation. CEK には最大 2 つの値を持つことができます。これにより、CMK をローテーションできます。A CEK might have up to two values, which allows for a CMK rotation. Always Encrypted (データベース エンジン) 機能によってデータベースの列を暗号化する前に、CEK を作成しておく必要があります。Creating a CEK is required before the Always Encrypted (Database Engine) feature encrypts any column in the database. CEK は、SQL Server Management StudioSQL Server Management Studio を使って作成することもできます。CEKs can also be created by using SQL Server Management StudioSQL Server Management Studio. CEK を作成する前に、Management StudioManagement Studio または CREATE COLUMN MASTER KEY ステートメントを使って CMK を定義する必要があります。Before creating a CEK, you must define a CMK by using Management StudioManagement Studio or the CREATE COLUMN MASTER KEY statement.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

CREATE COLUMN ENCRYPTION KEY key_name   
WITH VALUES  
  (  
    COLUMN_MASTER_KEY = column_master_key_name,   
    ALGORITHM = 'algorithm_name',   
    ENCRYPTED_VALUE = varbinary_literal  
  )   
[, (  
    COLUMN_MASTER_KEY = column_master_key_name,   
    ALGORITHM = 'algorithm_name',   
    ENCRYPTED_VALUE = varbinary_literal  
  ) ]   
[;]  

引数Arguments

key_namekey_name
データベースで、列の暗号化キーを認識する名前です。Is the name by which the column encryption key will be known in the database.

column_master_key_name CEK を暗号化するために使用されるカスタム CMK の名前を指定します。column_master_key_name Specifies the name of the custom CMK used for encrypting the CEK.

algorithm_namealgorithm_name
列の暗号化キーの値を暗号化するために使用する暗号化アルゴリズムの名前です。Name of the encryption algorithm used to encrypt the value of the column encryption key. システム プロバイダーのアルゴリズムは、RSA_OAEP である必要があります。The algorithm for the system providers must be RSA_OAEP.

varbinary_literalvarbinary_literal
暗号化のように CEK 値 BLOB です。The encrypted CEK value BLOB.

警告

ありませんプレーン テキスト CEK 値で渡す次のステートメント。Never pass plaintext CEK values in this statement. そうと、この機能のメリットを構成します。Doing so will comprise the benefit of this feature.

RemarksRemarks

列の暗号化キーの作成ステートメントでは、少なくとも 1 つの VALUES 句を含める必要があります、2 つまでことがあります。The CREATE COLUMN ENCRYPTION KEY statement must include at least one VALUES clause and may have up to two. 提供されているだけの場合は、2 番目の値を後で追加するのに列の暗号化キーの ALTER ステートメントを使用できます。If only one is provided, you can use the ALTER COLUMN ENCRYPTION KEY statement to add a second value later. VALUES 句を削除するのに列の暗号化キーの ALTER ステートメントを使用することもできます。You can also use the ALTER COLUMN ENCRYPTION KEY statement to remove a VALUES clause.

通常、CEK は、1 つの暗号化された値のみを使用して作成されます。Typically, a CEK is created with just one encrypted value. CMK は、ときどきローテーションする必要があります。At times, you need to rotate a CMK. 現在の CMK を新しい CMK に置き換えます。Replace the current CMK with the new CMK. キーをローテーションする必要がある場合は、新しい CMK を使用して暗号化された列暗号化キーの値を追加します。When you need to rotate the key, add a new value of the column encryption key, encrypted with the new CMK. このローテーションにより、クライアント アプリケーションが CEK を使用して暗号化されたデータに確実にアクセスでき、新しい CMK を使用できるようになります。This rotation allows you to ensure client applications can access data encrypted with the CEK, while the new CMK is made available to client applications. クライアント アプリケーション内の新しいマスター キーにアクセスできない Always Encrypted 対応ドライバーでは、古い CMK を使用して暗号化された CEK を使用して、重要なデータのアクセスします。An Always Encrypted enabled driver in a client application that doesn't have access to the new master key, will use the CEK value encrypted with the old CMK to access sensitive data.

暗号化アルゴリズム、常に暗号化のサポートでは、256 ビットをプレーン テキストの値が必要です。The encryption algorithms, Always Encrypted supports, require the plaintext value to have 256 bits.

暗号化された値は、CMK を保持するキー ストアをカプセル化するキー ストア プロバイダーを使用して生成する必要があります。An encrypted value should be generated using a key store provider that encapsulates the key store holding the CMK. 詳しくは、「Always Encrypted (クライアント開発)」をご覧ください。For more information, see Always Encrypted (client development).

列暗号化キーについての情報を表示するには、sys.columns (Transact-SQL)sys.column_encryption_keys (Transact-SQL)、および sys.column_encryption_key_values (Transact-SQL) を使用します。Use sys.columns (Transact-SQL), sys.column_encryption_keys (Transact-SQL), and sys.column_encryption_key_values (Transact-SQL) to view information about column encryption keys.

アクセス許可Permissions

ALTER ANY COLUMN ENCRYPTION KEY 権限が必要です。Requires the ALTER ANY COLUMN ENCRYPTION KEY permission.

使用例Examples

A.A. 列の暗号化キーを作成します。Creating a column encryption key

次の例では、列の暗号化キー MyCEK を作成します。The following example creates a column encryption key called MyCEK.

CREATE COLUMN ENCRYPTION KEY MyCEK   
WITH VALUES  
(  
    COLUMN_MASTER_KEY = MyCMK,   
    ALGORITHM = 'RSA_OAEP',   
    ENCRYPTED_VALUE = 0x01700000016C006F00630061006C006D0061006300680069006E0065002F006D0079002F003200660061006600640038003100320031003400340034006500620031006100320065003000360039003300340038006100350064003400300032003300380065006600620063006300610031006300284FC4316518CF3328A6D9304F65DD2CE387B79D95D077B4156E9ED8683FC0E09FA848275C685373228762B02DF2522AFF6D661782607B4A2275F2F922A5324B392C9D498E4ECFC61B79F0553EE8FB2E5A8635C4DBC0224D5A7F1B136C182DCDE32A00451F1A7AC6B4492067FD0FAC7D3D6F4AB7FC0E86614455DBB2AB37013E0A5B8B5089B180CA36D8B06CDB15E95A7D06E25AACB645D42C85B0B7EA2962BD3080B9A7CDB805C6279FE7DD6941E7EA4C2139E0D4101D8D7891076E70D433A214E82D9030CF1F40C503103075DEEB3D64537D15D244F503C2750CF940B71967F51095BFA51A85D2F764C78704CAB6F015EA87753355367C5C9F66E465C0C66BADEDFDF76FB7E5C21A0D89A2FCCA8595471F8918B1387E055FA0B816E74201CD5C50129D29C015895CD073925B6EA87CAF4A4FAF018C06A3856F5DFB724F42807543F777D82B809232B465D983E6F19DFB572BEA7B61C50154605452A891190FB5A0C4E464862CF5EFAD5E7D91F7D65AA1A78F688E69A1EB098AB42E95C674E234173CD7E0925541AD5AE7CED9A3D12FDFE6EB8EA4F8AAD2629D4F5A18BA3DDCC9CF7F352A892D4BEBDC4A1303F9C683DACD51A237E34B045EBE579A381E26B40DCFBF49EFFA6F65D17F37C6DBA54AA99A65D5573D4EB5BA038E024910A4D36B79A1D4E3C70349DADFF08FD8B4DEE77FDB57F01CB276ED5E676F1EC973154F86  
);  
GO  

2 つの値を使用した列暗号化キーの作成Creating a Column Encryption Key with Two Values

次の例では、2 つの値を使って列の暗号化キー TwoValueCEK を作成します。The following example creates a column encryption key called TwoValueCEK with two values.

  
CREATE COLUMN ENCRYPTION KEY TwoValueCEK   
WITH VALUES  
(  
    COLUMN_MASTER_KEY = CMK1,   
    ALGORITHM = 'RSA_OAEP',   
    ENCRYPTED_VALUE = 0x016E000001630075007200720065006E00740075007300650072002F006D0079002F0037006300380061003100310033003400320037003800620037003000630038003100390062003900630039003400360061006600340039006500610030003200650038006200650038003400340065006C33A82ECF04A7185824B4545457AC5244CD9C219E64067B9520C0081B8399B58C2863F7494ABE3694BD87D55FFD7576FFDC47C28F94ECC99577DF4FB8FA19AA95764FEF889CDE0F176DA5897B74382FBB22756CE2921050A09201A0EB6AF3D6091014C30146EA62635EE8CBF0A8074DEDFF125CEA80D1C0F5E8C58750A07D270E2A8BF824EE4C0C156366BF26D38CCE49EBDD5639A2DF029A7DBAE5A5D111F2F2FA3246DF8C2FA83C1E542C10570FADA98F6B29478DC58CE5CBDD407CCEFCDB97814525F6F32BECA266014AC346AC39C4F185C6C0F0A24FEC4DFA015649624692DE7865B9827BA22C3B574C9FD169F822B609F902288C5880EB25F14BD990D871B1BC4BA3A5B237AF76D26354773FA2A25CF4511AF58C911E601CFCB1905128C997844EED056C2AE7F0B48700AB41307E470FF9520997D0EB0D887DE11AFE574FFE845B7DC6C03FEEE8D467236368FC0CB2FDBD54DADC65B10B3DE6C80DF8B7B3F8F3CE5BE914713EE7B1FA5B7A578359592B8A5FDFDDE5FF9F392BC87C3CD02FBA94582AC063BBB9FFAC803FD489E16BEB28C4E3374A8478C737236A0B232F5A9DDE4D119573F1AEAE94B2192B81575AD6F57E670C1B2AB91045124DFDAEC2898F3F0112026DFC93BF9391D667D1AD7ED7D4E6BB119BBCEF1D1ADA589DD3E1082C3DAD13223BE438EB9574DA04E9D8A06320CAC6D3EC21D5D1C2A0AA484C7C  
),  
(  
    COLUMN_MASTER_KEY = CMK2,   
    ALGORITHM = 'RSA_OAEP',   
    ENCRYPTED_VALUE = 0x016E000001630075007200720065006E00740075007300650072002F006D0079002F0064006500650063006200660034006100340031003000380034006200350033003200360066003200630062006200350030003600380065003900620061003000320030003600610037003800310066001DDA6134C3B73A90D349C8905782DD819B428162CF5B051639BA46EC69A7C8C8F81591A92C395711493B25DCBCCC57836E5B9F17A0713E840721D098F3F8E023ABCDFE2F6D8CC4339FC8F88630ED9EBADA5CA8EEAFA84164C1095B12AE161EABC1DF778C07F07D413AF1ED900F578FC00894BEE705EAC60F4A5090BBE09885D2EFE1C915F7B4C581D9CE3FDAB78ACF4829F85752E9FC985DEB8773889EE4A1945BD554724803A6F5DC0A2CD5EFE001ABED8D61E8449E4FAA9E4DD392DA8D292ECC6EB149E843E395CDE0F98D04940A28C4B05F747149B34A0BAEC04FFF3E304C84AF1FF81225E615B5F94E334378A0A888EF88F4E79F66CB377E3C21964AACB5049C08435FE84EEEF39D20A665C17E04898914A85B3DE23D56575EBC682D154F4F15C37723E04974DB370180A9A579BC84F6BC9B5E7C223E5CBEE721E57EE07EFDCC0A3257BBEBF9ADFFB00DBF7EF682EC1C4C47451438F90B4CF8DA709940F72CFDC91C6EB4E37B4ED7E2385B1FF71B28A1D2669FBEB18EA89F9D391D2FDDEA0ED362E6A591AC64EF4AE31CA8766C259ECB77D01A7F5C36B8418F91C1BEADDD4491C80F0016B66421B4B788C55127135DA2FA625FB7FD195FB40D90A6C67328602ECAF3EC4F5894BFD84A99EB4753BE0D22E0D4DE6A0ADFEDC80EB1B556749B4A8AD00E73B329C95827AB91C0256347E85E3C5FD6726D0E1FE82C925D3DF4A9  
);  
GO  

参照See Also

ALTER COLUMN ENCRYPTION KEY (Transact-SQL) ALTER COLUMN ENCRYPTION KEY (Transact-SQL)
DROP COLUMN ENCRYPTION KEY (Transact-SQL) DROP COLUMN ENCRYPTION KEY (Transact-SQL)
CREATE COLUMN MASTER KEY (Transact-SQL) CREATE COLUMN MASTER KEY (Transact-SQL)
Always Encrypted (データベース エンジン) Always Encrypted (Database Engine)
sys.column_encryption_keys (Transact-SQL) sys.column_encryption_keys (Transact-SQL)
sys.column_encryption_key_values (Transact-SQL) sys.column_encryption_key_values (Transact-SQL)
sys.columns (Transact-SQL)sys.columns (Transact-SQL)