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

Sql server 从证书创建登录名的目的是什么?,sql-server,authentication,ssl-certificate,client-certificates,Sql Server,Authentication,Ssl Certificate,Client Certificates,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 <certifica

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
使用MASTER;
创建证书
主题='主数据库中的证书',
有效期=2025年5月12日;
去
从证书创建登录;
去
然而,各州(重点是我国):

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

创建不能用于连接到服务器的登录名有什么意义


背景 我们需要对中间层应用程序进行一些安全性更改。特别是它如何连接到数据库。权力机构已经颁布法令:“我们不能使用Windows身份验证”。
我知道这通常是首选方法,但是任何能够访问中间层服务器的人都可以像应用程序一样访问数据库

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

  • 加密密码
  • 将其存储在配置文件/注册表中
  • 然后在应用程序需要连接到数据库时解密密码
虽然上述情况是可能的,但我还是希望:

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

上述文档摘录似乎与此相矛盾。

它用于对SQL Server数据库对象进行代码签名。下面将详细介绍从证书y创建登录名x,以及SQL Server 2008和2008 R2的示例和场景:


这是在SQLServer 2014中签名存储过程的一个很好的例子:

< P>,如果Windows Auth不能使用,可以使用中间登录服务器加密中间层服务器中的配置:


你的断言“任何人只要有权访问中间层服务器,都将拥有与应用程序相同的数据库访问权限。”是有缺陷的。@你的评论很有可能是非常有用和有用的。。。除了完全没有解释为什么你相信你的断言。原因相同,不是所有访问我的电脑的人都拥有与我的帐户相同的权利和权限。也许可以添加一点关于链接的摘要,以避免短小的妖怪。我理解所有这些。我不明白的是如何实际使用证书登录来对模块进行签名。正如您所指出的,页面清楚地声明它是可以完成的,但是示例代码没有演示它。请注意,在示例代码中,login_SysProcCert实际上只用于安全边界,如果删除引用它的每一行,一切都会正常工作。我想我现在明白了。证书用户不用于模块签名。这就是证书的目的。证书用户是一种安全工具。您可以将特权投资于这个否则无法使用的主体,然后将其转移到使用该证书签名的对象。说“从证书创建的登录用于代码签名”是错误的。他们不是。他们不可能是。@quest4truth我发现这些评论比答案更具教育性和信息性。我不确定特雷弗布鲁克斯(关于让微软知道)是否在挖苦人。我现在很困惑,所以您确定证书用户不能用于mod签名吗?那它们是用来干什么的?你说这是一个“安全工具”,做什么?是的,我肯定。证书用于mod签名,用户和登录等安全主体用于访问。没有证书,您不能签署任何东西,证书也不能像安全主体那样工作。您要做的是创建一个证书用户。然后证书用户被授权访问那些由证书签名的对象。该授权对他没有任何好处,因为他无法操作,但他作为一个所有权链发挥作用,因此,如果您授予其他人对该链末端的权限,他可以访问该链的所有内容。只是一个安全工具