gpt4 book ai didi

sql-server - SQL 始终加密与 SQL 动态数据屏蔽

转载 作者:行者123 更新时间:2023-12-03 08:59:30 25 4
gpt4 key购买 nike

我尚未决定使用两种方法来隐藏 SQL Server DB 中单列中的数据。

1。 SQL 始终加密

2。 SQL动态数据屏蔽

阅读完这两种内容的文章后,我的理解是,始终加密可能比动态数据屏蔽更安全,因为存储的数据是加密的,而不是对其进行屏蔽密码顶部。

但是,如果用户只是想对数据库管理员隐藏密码字段,那么在这种情况下对日常使用会有什么影响?

Data to be hidden: Password

Functions using Password column: Reset password, change password, insert new password row when creating new user

如有任何建议,我们将不胜感激。


P.S.我最初的计划是对密码字段使用 SHA1+Salt 哈希并存储哈希值而不是密码。但是,如果需求只是简单地隐藏DB中的字段,我发现上面的其他2种方法可能就足够了。

最佳答案

如果您想对数据库管理员隐藏密码,那么动态数据屏蔽是不可能的。这只是在表示层屏蔽它。

AlwaysEncrypted 将加密的责任转移给客户端应用程序,这意味着加密和解密是在应用程序外部处理的,一般来说,数据库管理员无法读取数据。

所以,这取决于您对隐藏的定义。隐藏。如果您希望对管理员隐藏它...始终加密是您需要关注的地方。

编辑

Always Encrypted 仅在 2016 年才对初学者可用,但列级加密自 2005 年以来就已可用。但要回答您的问题,不,DBA 不必拥有王国的 key 。 AE 旨在处理驱动程序级别的加密和解密。以下信息来自official 70-764 exam reference by Victor Isakov :

AE 架构的工作原理如图 1-5 所示:

  1. 客户端应用程序发出参数化查询。它使用新的列加密设置=已启用;连接字符串中的选项
  2. 增强的 ADO.NET 驱动程序使用 [sp_describe_parameter_encryption] 系统存储过程询问数据库引擎,以确定哪些参数针对加密列。对于需要加密的每个参数,驱动程序都会检索加密算法以及将在加密阶段使用的其他信息
  3. 驱动程序使用列主 key (CMK) 对参数值进行加密,然后再将密文发送到数据库引擎。
  4. 数据库引擎检索结果集,将适当的加密元数据附加到任何加密列,然后将其发送回客户端应用程序。数据在数据库中静态时以及从数据库引擎传输到客户端应用程序时都会进行加密。
  5. 客户端应用程序的驱动程序解密任何加密的内容

关于sql-server - SQL 始终加密与 SQL 动态数据屏蔽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52036132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com