从证书创建登录的目的是什么?

Dis*_*ned 13 sql-server authentication client-certificates ssl-certificate

SQL Server提供了从证书创建登录的选项.例如

USE MASTER;
CREATE CERTIFICATE <certificateName>
    WITH SUBJECT = '<loginName> certificate in master database',
    EXPIRY_DATE = '12/05/2025';
GO
CREATE LOGIN <loginName> FROM CERTIFICATE <certificateName>;
GO
Run Code Online (Sandbox Code Playgroud)

但是,文档说明(强调我的):

从证书或非对称密钥创建的登录仅用于代码签名.它们不能用于连接SQL Server.只有在master中已存在证书或非对称密钥时,才能从证书或非对称密钥创建登录.

创建无法用于连接服务器的登录有什么意义?


背景

我们需要对中间层应用程序进行一些安全性更改.特别是它如何连接到它的数据库.规定的权力规定:"我们不能使用Windows身份验证".
我知道这通常是首选方法,但是有权访问中间层服务器的任何人都可以获得与应用程序相同的数据库访问权限.

如果我们使用SQL身份验证,我们需要:

  • 加密密码.
  • 将其存储在配置文件/注册表中.
  • 然后在应用程序需要连接到数据库时解密密码.

虽然以上是可能的,但我有点希望:

  • 我可以使用基于证书的登录.
  • 在构建过程中将证书与应用程序相关联.
  • 并使用它来连接到SQL Server.

来自文件的上述摘录似乎与此相矛盾.

Tre*_*oks 5

它用于对SQL Server数据库对象进行代码签名.此处详细说明了CREATE LOGIN x FROM CERTIFICATE y以及SQL Server 2008和2008 R2的示例和方案:http://technet.microsoft.com/en-us/library/ms345102(v = sql.105).aspx

以下是在SQL Server 2014中签署存储过程的一个很好的示例:http: //technet.microsoft.com/en-us/library/bb283630.aspx

  • 也许添加一些关于链接的摘要,以避免短长度的大地精. (5认同)
  • 是,我确定.证书用于mod签名,用户和登录等安全主体用于访问.没有证书就无法签名,证书也不能像安全主体一样运行.您所做的是创建证书用户.然后,证书用户被授权使用由证书签名的那些对象.该授权对他没有任何好处,因为他无法操作,但他作为一个所有权链,所以如果你授予别人许可到链的末端,他就可以访问所有这些.只有一个安全工具 (5认同)
  • 我理解这一切.我不明白的是如何实际使用证书登录来签署模块.该页面清楚地表明它可以完成,正如您所指出的那样,但示例代码没有演示它.请注意,login_SysProcCert实际上并不用于示例代码中的任何安全边界,如果删除引用它的每一行,则一切正常. (2认同)