Sql-Server
SQL Server Always Encrypted - 創建包含加密列的外部表
我正在嘗試在伺服器 S2 上創建一個外部表 MyTable,該表引用來自伺服器 S1 的表 MyTable。MyTable 表包含使用 Always Encrypted 加密的列。從 S2 查詢 MyTable 時,我希望該列不加密。是不是可以完成的事情?我在文件中沒有找到任何關於它的資訊(如果有人知道在哪裡可以找到它,我很樂意閱讀文件)……我已經嘗試了下面的幼稚方法,但顯然它不起作用。
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'myEncryptionPassword'; CREATE DATABASE SCOPED CREDENTIAL MyCred WITH IDENTITY = 'myAdminAccount', SECRET = 'mySuperStrongPassword'; CREATE EXTERNAL DATA SOURCE RemoteServerRef WITH ( TYPE=RDBMS, LOCATION='somewhere.on.the.inter.net', DATABASE_NAME='myDatabase', CREDENTIAL= MyCred ); CREATE EXTERNAL TABLE [dbo].[MyTable] ( [Id] [uniqueidentifier] NOT NULL, [Field2] [int] NOT NULL, [Field3] [datetime] NOT NULL, [Field4] [decimal](18, 2) NULL, [EncryptedField1] [nvarchar](128) COLLATE Latin1_General_BIN2 ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK_Auto1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NULL, [EncryptedField2] [int] ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK_Auto1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NULL, ) WITH (DATA_SOURCE = RemoteServerRef)
有人知道該怎麼做嗎?作為一個額外的問題,有人可以向我解釋 CREATE MASTER KEY ENCRYPTION BY PASSWORD 的用途(它與第一個問題有什麼關係)嗎?
謝謝你的幫助!
第一的:
在創建數據庫範圍的憑證之前,數據庫必須有一個主密鑰來保護憑證。有關詳細資訊,請參閱創建主密鑰 (Transact-SQL)。
所以數據庫主密鑰用於加密憑證。
第二:
我想要
$$ AlwaysEncrypted $$從Elastic Database Query查詢 MyTable 時要解密的列。
這是不可能的。AlwaysEncrypted 旨在僅在客戶端上解密數據。即使在 SQL Server是客戶端的情況下,也無法將加密密鑰儲存在 SQL Server 中並在數據庫引擎中使用它。沒有根本原因無法實施。但是 AlwaysEncrypted 的主要案例是以 SQL Server(及其管理員)無法訪問這些數據的方式儲存數據。