CREATE COLUMN ENCRYPTION KEY (Transact-SQL)
適用於:SQL Server 2016 (13.x) 和更新版本的
Azure SQL 資料庫 Azure SQL 受控執行個體
針對 Always Encrypted 或具有安全記憶體保護區的 Always Encrypted 建立資料行加密金鑰中繼資料物件。 資料行加密金鑰中繼資料物件包含一或兩個資料行加密金鑰的加密值,該資料行加密金鑰用來加密資料行中的資料。 每個值都是使用資料行主要金鑰進行加密。
語法
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
) ]
[;]
引數
key_name
為資料行加密金鑰在資料庫中的識別名稱。
column_master_key_name 指定用於加密資料行加密金鑰的自訂 CMK 名稱。
algorithm_name
用來將資料行加密金鑰值加密的演算法名稱。 系統提供者的演算法必須是 RSA_OAEP。
varbinary_literal
加密的資料行加密金鑰值 BLOB。
警告
絕對不要在此陳述式中傳遞純文字的資料行加密金鑰值。 如此會影響此功能的優勢。
備註
CREATE COLUMN ENCRYPTION KEY
陳述式必須包含至少一或兩個值。 如您可以使用 ALTER COLUMN ENCRYPTION KEY (Transact-SQL),稍後再新增第二個值。 您也可以使用 ALTER COLUMN ENCRYPTION KEY
陳述式來移除值。
一般來說,資料行加密金鑰建立時只會使用一個加密值。 有時候,您需要輪替資料行主要金鑰,以新的資料行主要金鑰來取代目前的資料行主要金鑰。 需要輪替金鑰時,請新增資料行加密金鑰的新值,並使用新的 CMK 加密。 此輪替一方面可讓您確保用戶端應用程式能夠存取由資料行加密金鑰加密的資料,一方面也可確保用戶端應用程式能夠使用新的資料行主要金鑰。 如果用戶端應用程式中的驅動程式已啟用 Always Encrypted,但沒有新的主要金鑰存取權,其將使用以舊資料行主要金鑰加密的資料行加密金鑰值來存取敏感性資料。
Always Encrypted 支援的加密演算法需要使用 256 位元純文字值。
建議您使用 SQL Server Management Studio (SSMS) 或 PowerShell 之類的工具來管理資料行加密金鑰。 這類工具會產生加密值,並自動發出 CREATE COLUMN ENCRYPTION KEY
陳述式來建立資料行加密金鑰中繼資料物件。 請參閱使用 SQL Server Management Studio 佈建 Always Encrypted 金鑰和使用 PowerShell 佈建 Always Encrypted 金鑰。
您也可以使用金鑰存放區提供者 (封裝保存資料行主要金鑰的金鑰存放區),以程式設計方式產生資料行加密金鑰值。 如需詳細資訊,請參閱使用 Always Encrypted 開發應用程式。
使用 sys.columns (Transact-SQL)、sys.column_encryption_keys (Transact-SQL) 和 sys.column_encryption_key_values (Transact-SQL),可檢視資料行加密金鑰的相關資訊。
權限
需要 ALTER ANY COLUMN ENCRYPTION KEY 權限。
範例
A. 建立資料行加密金鑰
下列範例會建立稱為 MyCEK
的資料行加密金鑰。
CREATE COLUMN ENCRYPTION KEY MyCEK
WITH VALUES
(
COLUMN_MASTER_KEY = MyCMK,
ALGORITHM = 'RSA_OAEP',
ENCRYPTED_VALUE = 0x01700000016C006F00630061006C006D0061006300680069006E0065002F006D0079002F003200660061006600640038003100320031003400340034006500620031006100320065003000360039003300340038006100350064003400300032003300380065006600620063006300610031006300284FC4316518CF3328A6D9304F65DD2CE387B79D95D077B4156E9ED8683FC0E09FA848275C685373228762B02DF2522AFF6D661782607B4A2275F2F922A5324B392C9D498E4ECFC61B79F0553EE8FB2E5A8635C4DBC0224D5A7F1B136C182DCDE32A00451F1A7AC6B4492067FD0FAC7D3D6F4AB7FC0E86614455DBB2AB37013E0A5B8B5089B180CA36D8B06CDB15E95A7D06E25AACB645D42C85B0B7EA2962BD3080B9A7CDB805C6279FE7DD6941E7EA4C2139E0D4101D8D7891076E70D433A214E82D9030CF1F40C503103075DEEB3D64537D15D244F503C2750CF940B71967F51095BFA51A85D2F764C78704CAB6F015EA87753355367C5C9F66E465C0C66BADEDFDF76FB7E5C21A0D89A2FCCA8595471F8918B1387E055FA0B816E74201CD5C50129D29C015895CD073925B6EA87CAF4A4FAF018C06A3856F5DFB724F42807543F777D82B809232B465D983E6F19DFB572BEA7B61C50154605452A891190FB5A0C4E464862CF5EFAD5E7D91F7D65AA1A78F688E69A1EB098AB42E95C674E234173CD7E0925541AD5AE7CED9A3D12FDFE6EB8EA4F8AAD2629D4F5A18BA3DDCC9CF7F352A892D4BEBDC4A1303F9C683DACD51A237E34B045EBE579A381E26B40DCFBF49EFFA6F65D17F37C6DBA54AA99A65D5573D4EB5BA038E024910A4D36B79A1D4E3C70349DADFF08FD8B4DEE77FDB57F01CB276ED5E676F1EC973154F86
);
GO
建立含兩個值的資料行加密金鑰
下列範例會建立含 2 個值且名為 TwoValueCEK
的資料行加密金鑰。
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
另請參閱
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 管理金鑰