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

適用対象: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Always Encrypted またはセキュリティで保護されたエンクレーブが設定された Always Encrypted に対する列暗号化キーのメタデータ オブジェクトを作成します。Creates a column encryption key metadata object for Always Encrypted or Always Encrypted with secure enclaves. 列暗号化キーのメタデータ オブジェクトには、列のデータを暗号化するために使用される列暗号化キーの 1 つまたは 2 つの暗号化された値が含まれます。A column encryption key metadata object contains one or two encrypted values of a column encryption key that is used to encrypt data in a column. 各値は、列マスター キーを使って暗号化されています。Each value is encrypted using a column master key.

トピック リンク アイコン 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 列暗号化キーを暗号化するために使用されるカスタム CMK の名前を指定します。column_master_key_name Specifies the name of the custom CMK used for encrypting the column encryption key.

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
暗号化された列暗号化キーの値の BLOB。The encrypted column encryption key value BLOB.

警告

このステートメントでは、プレーンテキストで列暗号化キーの値を渡さないでください。Never pass plaintext column encryption key values in this statement. そうすれば、この機能の利点が得られます。Doing so will comprise the benefit of this feature.

RemarksRemarks

CREATE COLUMN ENCRYPTION KEY ステートメントには、少なくとも 1 つまたは 2 つの値が含まれる必要があります。The CREATE COLUMN ENCRYPTION KEY statement must include at least one or two values. 後で ALTER COLUMN ENCRYPTION KEY (Transact-SQL) を使用して 2 番目の値を追加できます。You can use the ALTER COLUMN ENCRYPTION KEY (Transact-SQL) to add a second value later. ALTER COLUMN ENCRYPTION KEY ステートメントを使用して値を削除することもできます。You can also use the ALTER COLUMN ENCRYPTION KEY statement to remove a value.

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

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

SQL Server Management Studio (SSMS) や PowerShell などのツールを使って、列暗号化キーを管理することをお勧めします。It is recommended you use tools, such as SQL Server Management Studio (SSMS) or PowerShell to manage column encryption keys. そのようなツールを使うと、暗号化された値を生成し、CREATE COLUMN ENCRYPTION KEY ステートメントを自動的に発行して列暗号化キーのメタデータ オブジェクトを作成することができます。Such tools generate encrypted values and automatically issue CREATE COLUMN ENCRYPTION KEY statements to create column encryption key metadata object. SQL Server Management Studio を使用して Always Encrypted キーをプロビジョニングする」および「PowerShell を使用した Always Encrypted キーのプロビジョニング」を参照してください。See Provision Always Encrypted keys using SQL Server Management Studio and Provision Always Encrypted keys using PowerShell.

列マスター キーが保持されているキー ストアがカプセル化されたキー ストア プロバイダーを使って、列暗号化キーの値をプログラムで生成することもできます。You can also generate a column encryption key value programmatically using a using a key store provider that encapsulates the key store holding the column master key. 詳しくは、「Always Encrypted を使用したアプリケーションの開発」をご覧ください。For more information, see Develop applications using Always Encrypted.

列暗号化キーについての情報を表示するには、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)
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)
Always Encrypted Always Encrypted
セキュリティで保護されたエンクレーブが設定された Always Encrypted Always Encrypted with secure enclaves
Always Encrypted のキー管理の概要 Overview of Key Management for Always Encrypted
セキュリティで保護されたエンクレーブが設定された Always Encrypted のキーの管理Manage keys for Always Encrypted with secure enclaves