首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Server始终加密-创建包含加密列的外部表

Server始终加密-创建包含加密列的外部表
EN

Database Administration用户
提问于 2019-03-28 10:02:45
回答 1查看 247关注 0票数 0

我试图在服务器S2上创建一个外部表S2,它从服务器S1引用表MyTable。表MyTable包含使用“始终加密”加密的列。我希望该列在从MyTable查询S2时未加密。这是可以完成的事情吗?我在文档中没有找到任何关于它的东西(如果有人知道在哪里找到它,我很乐意读一下文档).我尝试过这种天真的方法,但显然行不通。

代码语言:javascript
运行
复制
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)

有人知道怎么做吗?作为一个额外的问题,有人能向我解释一下密码创建主密钥加密的用途(这与第一个问题有什么关系吗?)

谢谢你的帮忙!

EN

回答 1

Database Administration用户

回答已采纳

发布于 2019-03-28 14:48:49

第一:

在创建数据库作用域凭据之前,数据库必须具有保护凭据的主密钥。有关更多信息,请参见创建主键(Transact-SQL)。

创建数据库作用域凭据

因此,数据库主密钥用于加密凭据。

第二:

我希望AlwaysEncrypted列在从弹性数据库查询查询MyTable时未加密。

这是不可能的AlwaysEncrypted只打算在客户端上对数据进行解密。即使在Server是客户端的情况下,也无法将加密密钥存储在Server中并在数据库引擎中使用。没有根本的理由不能实现这一点。但是,AlwaysEncrypted的主要用例是以Server (及其管理员)无法访问这些数据的方式存储数据。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/233356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档