Tsql 向开发人员隐藏证书名称

Tsql 向开发人员隐藏证书名称,tsql,Tsql,我设法创建了一个证书。 这就是我,作为sa,如何使用它 create certificate CertLogin -- authorization app_usr from file = 'C:\Project\Login.cer' with private key ( file = 'C:\Project\Login.pvk', decryption by password

我设法创建了一个证书。 这就是我,作为sa,如何使用它


    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是运行应用程序的用户ID

如果我取消注释它,app_usr将能够看到sys.certificates表, 并使用MSSQL自己手动执行EncryptByCert和DecryptByCert

我实际上正在包装EncryptByCert和DecryptByCert 用加密的存储过程,希望我能阻止开发者 以纯文本形式查看密码列值

如果我对其进行注释,应用程序将无法使用加密密码列

我的目标是,开发人员不能通过隐藏证书名来破解用户表中密码列的值。你能帮我弄清楚我该怎么做吗


非常感谢。

好的,我的解决方法可以在这个博客中找到

这样,我就可以将EncryptByCert和DecryptByCert放在包装器中,并避免使用“app_usr”在sys.certificates表中查看证书名称。因此,开发人员无法手动将加密的密码列解密为纯文本


希望我的经验也能对其他人有用。感谢您在这方面花费时间。

这里有一些想法/问题-1您是否将用户密码存储在数据库中,并以一种即使加密也可以检索的形式存储?如果你是,不要把它们作为腌制的单向散列来储存。2你需要信任某人——如果你不能信任你的开发者,那么你就有一个大问题。3数据库安全我猜tsql标签中的SQL server通常最好在数据库本身使用用户组进行处理。我正在进行迁移,在表列中有明文密码。我这里的方法已经让它们通过EncryptByCert加密了。但是现在,有了app_usr,开发者可以看到证书,从而可以运行DecryptByCert。1什么是腌制单向散列?是的,我有个大问题,老板。3 MS-SQL 2008 R2。用户组,你是说角色?那怎么办?