CREATE COLUMN ENCRYPTION KEY (Transact-SQL)
Gilt für: SQL Server 2016 (13.x) und höher Azure SQL-Datenbank Azure SQL Managed Instance
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