1

我已经实现了 Always Encryption 来加密 Azure DB 中 Patient 表的 SSN 字段。(使用 Azure Key Vault 作为我的密钥存储提供程序)

我使用 SSMS 2016(13.0.16100.1) 作为客户端工具。
最初,我尝试为那个特定的 Patient 表执行简单的 select 语句。它带有签名的弹出窗口*(见下文)*。这样我就可以使用我的帐户登录以解密我的 SSN 列。

在此处输入图像描述

在这里,我经历了两种情况:

情况1

无法从当前凭据注销

假设我自己第一次输入了一个有效的凭据(谁可以访问解密密钥@ssn)

在这种情况下,这些凭据在内部保存了一些。我无法从我的凭据中注销。

最初我认为凭据是基于会话保存的。因此它仅适用于该特定会话。但它不是......

相同的凭据适用于不同的会话,即使我尝试关闭我的 SSMS 并在仍然使用旧凭据的另一个窗口中重新打开。

案例二

无法重新输入凭据

假设我第一次使用无效凭据签名(谁无权解密密钥@ssn)

在这种情况下,我无法解密SSN 列。所以再次在内部保存了一些凭据。

因此,如果我想使用我的有效凭据重新输入。我做不到。


我认为为了解决这两种情况,将有一个解决方案=>从当前凭据注销

PS:我知道我们还有另一个选项Login using Active Directory Password Authentication。但不幸的是,这仅用于配置的 Active Directory 管理员。但在我的组织中有超过 100 个成员。所以没有办法让至少 10 个成员使用 Active Directory 登录

更新1


在此处输入图像描述 提前致谢,

4

1 回答 1

1

首先,一个澄清的评论:上面的弹出对话框提示您输入 Azure Key Vault 的凭据(您可能在其中存储 Always Encrypted 的列主密钥,它保护患者表中的数据),而不是数据库凭据。数据库身份验证(例如,通过“连接到服务器”对话框中的 Active Directory 密码身份验证)独立于 Azure 资源管理器(Azure Key Vault)身份验证。尽管您可以将相同的标识用于数据库身份验证和 Azure RM,但并非必须如此。

你描述的问题将在即将发布的 SSMS 17.2 中得到解决,方法是允许你在每个身份验证点更改 Azure RM 用户身份。此外,在 SSMS 17.2 中,凭据/令牌将绑定到进程并且不会持久化,因此在重新启动后,SSMS 将不会记住它们。添加“注销”控件已在我们的路线图中,但我们还没有具体的时间表。

您描述的问题的一种解决方法可能是启动始终加密向导(在任何表上的右客户端并选择加密列)并单击更改用户(在列主密钥配置页面上),然后单击取消并取消向导。这应该使缓存中的当前凭据无效,然后查询您的表,弹出窗口应该打开并且您应该能够输入新的凭据。

谢谢,

雅库布

于 2017-07-25T17:30:06.953 回答