我已经实现了Always Encryption来加密Azure数据库中Patient表的SSN字段。(使用Azure Key Vault作为我的密钥库提供商)
我正在使用SSMS 2016(13.0.16100.1)作为客户端工具 最初,我尝试为该特定Patient表执行简单的select语句。 它带有Sign *弹出窗口(见下文)*。这样我就可以使用我的帐户登录以解密我的SSN列。
在这里,我遇到了两种情况:
无法从当前凭据退出
假设我第一次输入了有效的凭证(谁有权解密密钥@ssn)
在这种情况下,这些凭据在内部保存。一世 无法从我的凭据退出。
最初我认为凭据已保存在会话中 所以它只适用于那个特定的会议。但它不是......
相同的凭据将适用于不同的会话,即使我已经 尝试关闭我的SSMS并重新打开另一个仍在使用的窗口 旧证书。
无法重新输入凭据
假设我第一次签署In-valid凭证(谁无权解密密钥@ssn)
在这种情况下,我无法解密 SSN列 .So 再一次在内部保存的凭证。
所以,如果我想用我的有效证书重新输入。我无法做到。
我认为为了解决这两个问题,将会有一个解决方案=> 从当前证书中退出
PS:我知道我们还有另一个选项使用Active Directory密码身份验证登录。但遗憾的是,这仅用于仅配置Active Directory Admin 。但在我的组织中有超过100个成员。因此,无法让至少10个成员使用Active Directory登录< / p>
答案 0 :(得分:1)
首先,一个澄清评论:上面的弹出对话框提示您输入Azure Key Vault的凭据(您可能存储了Always Encrypted的列主密钥,用于保护Patient表中的数据),而不是数据库凭证。数据库身份验证(例如,通过“连接到服务器”对话框中的“Active Directory密码身份验证”)独立于Azure Resource Manager(Azure密钥保管库)身份验证。虽然您可以使用相同的身份进行数据库身份验证和Azure RM,但情况并非如此。
您所描述的问题将在SSMS 17.2中解决,即将发布,允许您在每个身份验证点更改Azure RM用户身份。此外,在SSMS 17.2中,凭证/令牌将绑定到进程并且不会被持久化,因此在重新启动后,SSMS将不会记住它们。我们的路线图中添加了“注销”控件,但我们还没有具体的时间表。
您所描述问题的一种解决方法可能是启动Always Encrypted向导(任何表上的右客户端并选择Encrypt Columns),然后单击Change User(在Column Master Key配置页面上),然后单击Cancel并取消向导。这应该使缓存中的当前信用无效,并在此之后查询您的表,弹出窗口应该打开,您应该能够输入新的信用卡。
谢谢,
的Jakub