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

적용 대상:Applies to: 예SQL Server 2016(13.x)SQL Server 2016 (13.x)yesSQL Server 2016(13.x)SQL Server 2016 (13.x) 이상 예Azure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database 예Azure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance 예Azure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics적용 대상:Applies to: 예SQL Server 2016(13.x)SQL Server 2016 (13.x)yesSQL Server 2016(13.x)SQL Server 2016 (13.x) and later 예Azure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database 예Azure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance 예Azure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics

Always Encrypted 또는 보안 Enclave를 사용한 Always Encrypted의 열 암호화 키 메타데이터 개체를 만듭니다.Creates a column encryption key metadata object for Always Encrypted or Always Encrypted with secure enclaves. 열 암호화 키 메타데이터 개체에는 열에 있는 데이터를 암호화하는 데 사용되는 열 암호화 키의 암호화된 값이 한 개 또는 두 개 포함되어 있습니다.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.

설명Remarks

CREATE COLUMN ENCRYPTION KEY 문에는 적어도 한 개 또는 두 개의 값이 포함되어 있어야 합니다.The CREATE COLUMN ENCRYPTION KEY statement must include at least one or two values. ALTER COLUMN ENCRYPTION KEY(Transact-SQL).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.

일반적으로 열 암호화 키는 단 하나의 암호화된 값으로 만들어집니다.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.

SSMS(SQL Server Management Studio) 또는 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
보안 enclave를 사용한 Always Encrypted Always Encrypted with secure enclaves
Always Encrypted를 위한 키 관리 개요 Overview of Key Management for Always Encrypted
보안 Enclave를 사용한 Always Encrypted 키 관리Manage keys for Always Encrypted with secure enclaves