我设法创建了一个证书。 这就是我作为一个使用它的方式。
create certificate CertLogin
-- authorization app_usr
from file = 'C:\Project\Login.cer'
with private key
(
file = 'C:\Project\Login.pvk',
decryption by password = 'PVK_File_Password'
)
您注意到我注释掉了“授权app_usr”。 app_usr是运行应用程序的用户标识。
如果我取消注释,app_usr将能够看到sys.certificates表, 并做EncryptByCert()& DecryptByCert()自己手动使用MSSQL。
我实际上正在包装EncryptByCert()& DecryptByCert() 用加密的存储过程,希望能阻止开发人员 以纯文本格式查看密码列值。
如果我发表评论,该应用程序将无法使用加密密码列。
我的目标是,开发人员不能通过隐藏证书名称来破解用户表中密码列的值。你能帮我找一下如何才能找到你吗?
非常感谢。
答案 0 :(得分:0)
好的,我的解决方法可以在这个博客EXECUTE AS someone else – impersonation in stored procedures找到。
有了这个,我可以把EncryptByCert()&在包装器中使用DecryptByCert(),并避免'app_usr'能够在sys.certificates表中看到证书名称。因此,使开发人员无法手动将加密密码列解密为纯文本。
希望我的经历对其他人也有用。谢谢你花时间在这上面。