CREATE COLUMN ENCRYPTION KEY (Transact-SQL)

Gilt für: SQL Server 2016 (13.x) und höher Azure SQL-Datenbank Azure SQL verwaltete Instanz

Erstellt ein Metadatenobjekt für Spaltenverschlüsselungsschlüssel für Always Encrypted oder Always Encrypted mit Secure Enclaves. Ein Metadatenobjekt des Spaltenverschlüsselungsschlüssels enthält einen oder zwei verschlüsselte Werte eines Spaltenverschlüsselungsschlüssels, der zum Verschlüsseln von Daten in einer Spalte verwendet wird. Jeder Wert wird mit einem Spaltenhauptschlüssel verschlüsselt.

Transact-SQL-Syntaxkonventionen

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  
  ) ]   
[;]  

Argumente

key_name
Der Name des CEK in der Datenbank.

column_master_key_name Der Name des benutzerdefinierten CMK, der zur Verschlüsselung des CEK verwendet wird.

algorithm_name
Der Name des Algorithmus, der verwendet wurde, um den Wert des CEK zu verschlüsseln. Der Algorithmus für die Systemanbieter muss auf RSA_OAEP festgelegt sein

varbinary_literal
Der verschlüsselte Wert BLOB des Spaltenverschlüsselungsschlüssels.

Warnung

Verwenden Sie diese Anweisung nie mit Werten des Spaltenverschlüsselungsschlüssels im Klartext. Dies würde den Nutzen dieses Features beeinträchtigen.

Bemerkungen

Die CREATE COLUMN ENCRYPTION KEY-Anweisung muss mindestens einen oder zwei Werte enthalten. Sie können mit der Anweisung ALTER COLUMN ENCRYPTION KEY (Transact-SQL) später einen zweiten Wert hinzufügen. Außerdem können Sie mithilfe der ALTER COLUMN ENCRYPTION KEY-Anweisung einen Wert entfernen.

In der Regel wird ein CEK nur mit einem verschlüsselten Wert erstellt. Manchmal müssen Sie einen Spaltenhauptschlüssel rotieren, um den aktuellen durch den neuen Spaltenhauptschlüssel zu ersetzen. Wenn Sie den Schlüssel rotieren müssen, fügen Sie einen neuen Wert des Spaltenverschlüsselungsschlüssels hinzu, verschlüsselt mit dem neuen Spaltenhauptschlüssel. Diese Rotation stellt sicher, dass Clientanwendungen auf Daten zugreifen können, die mit dem Spaltenverschlüsselungsschlüssel verschlüsselt wurden, während der neue Spaltenhauptschlüssel den Clientanwendungen zur Verfügung gestellt wird. Ein Treiber, für den Always Encrypted aktiviert ist, kann in einer Clientanwendung, die keinen Zugriff auf den neuen Hauptschlüssel hat, für den Zugriff auf vertrauliche Daten den Wert des Spaltenverschlüsselungsschlüssel verwenden, der mit dem alten Spaltenhauptschlüssel verschlüsselt wurde.

Von Always Encrypted unterstützte Verschlüsselungsalgorithmen erfordern einen Klartextwert von 256 Bit.

Es wird empfohlen, Tools wie SQL Server Management Studio (SSMS) oder PowerShell zu verwenden, um Spaltenverschlüsselungsschlüssel zu verwalten. Derartige Tools generieren verschlüsselte Werte und geben automatisch CREATE COLUMN ENCRYPTION KEY-Anweisungen aus, um Metadatenobjekte der Spaltenverschlüsselungsschlüssel zu erstellen. Weitere Informationen finden Sie unter Bereitstellen von Always Encrypted-Schlüsseln mithilfe von SQL Server Management Studio und unter Bereitstellen von Always Encrypted-Schlüsseln mithilfe von PowerShell.

Sie können einen Wert für einen Spaltenverschlüsselungsschlüssel auch programmgesteuert mithilfe eines Schlüsselspeicheranbieters generieren, der den Schlüsselspeicher mit dem Spaltenhauptschlüssel enthält. Weitere Informationen finden Sie unter Entwickeln von Anwendungen mit Always Encrypted.

Mit sys.columns (Transact-SQL), sys.column_encryption_keys (Transact-SQL) und sys.column_encryption_key_values (Transact-SQL) können Sie sich Informationen zu CEKs anzeigen lassen.

Berechtigungen

Erfordert die ALTER ANY COLUMN ENCRYPTION KEY-Berechtigung.

Beispiele

A. Erstellen eines CEK

Im folgenden Beispiel wird ein CEK mit der Bezeichnung MyCEK erstellt.

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

Erstellen eines CEK mit zwei Werten

Im folgenden Beispiel wird ein CEK mit der Bezeichnung TwoValueCEK und zwei Werten erstellt.


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  

Weitere Informationen

ALTER COLUMN ENCRYPTION KEY (Transact-SQL)
DROP COLUMN ENCRYPTION KEY (Transact-SQL)
CREATE COLUMN MASTER KEY (Transact-SQL)
sys.column_encryption_keys (Transact-SQL)
sys.column_encryption_key_values (Transact-SQL)
sys.columns (Transact-SQL)
Always Encrypted
Always Encrypted mit Secure Enclaves
Übersicht über die Schlüsselverwaltung für Always Encrypted
Verwalten von Schlüsseln für Always Encrypted mit Secure Enclaves