【发布时间】:2017-02-10 11:05:20
【问题描述】:
我在 SQL Server 2016 中为主题始终加密做一些演示。有几个疑问。以下是遵循的步骤:
在数据库服务器(托管在 Microsoft Azure VM 中):
- 在表
MyTable中,创建了列加密密钥 (CEK) 和主加密密钥 (CMK) -
Select * from MyTable,显示加密数据。(来自 App 和 DB 服务器) - 已从数据库服务器导出证书
- 在App Server(我的本地机器)中导入了证书
- 在我的应用程序的连接字符串中添加了
Column Encryption Setting=Enabled。 - 工作正常,现在它按预期显示纯文本数据。
怀疑:
在数据库服务器中(在 MS Azure VM 中),如果 SysAdmin 登录(SQL 身份验证)使用附加参数 Column Encryption Setting=Enabled 连接到 SSMS,则显示纯文本数据(预期加密数据)。 我的理解是,除了应用程序用户之外,其他任何人都不应该看到纯文本数据)。谁能解释一下?
【问题讨论】:
-
你说的是有权使用证书的用户,在确实拥有适当证书的机器上使用
Column Encryption连接到数据库并且能够读取数据。没关系。该用户是通过代码还是 SSMS 连接都没有关系。它仍然是一个用户在做被允许的事情 -
Always Encrypted 是一种数据保护机制,而不是权限机制。即使黑客窃取数据库文件或安装 Wireshark 来捕获数据包,它也可以防止黑客读取数据。这不是阻止服务器管理员读取他确实有权限的数据的机制。
-
如果您想限制管理访问,不要将服务器管理权限授予所有人。使用具有最低要求权限的角色,并且只将密钥和证书的权限授予需要此类访问权限的用户和角色。
-
感谢@Panagiotis Kanavos 的澄清。你能解释/分享
Use roles with the minimum required priviledges and only give permissions to keys and certificates to the users and roles that do require such access.上的一些链接吗?
标签: azure sql-server-2016 always-encrypted