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
然而,文档声称(重点是我的):引用:
从证书或非对称密钥创建的登录仅用于代码签名。它们不能用于连接到 SQL Server。只有当证书或非对称密钥已经存在于 master 中时,才能从证书或非对称密钥创建登录。
那么创建一个不能用于连接到服务器的登录有什么意义呢?背景
我们需要对中间层应用程序进行一些安全更改,特别是它连接到数据库的方式。权力的人已经下达了命令:“我们不能使用Windows身份验证”。
我知道这通常是首选方法,但任何访问中间层服务器的人都将与应用程序具有相同的访问权限。
如果我们使用SQL身份验证,我们需要:
- 加密密码。
- 将其存储在配置文件/注册表中。
- 然后在应用程序需要连接到数据库时解密密码。
虽然上述方法是可行的,但我希望能够:
- 使用基于证书的登录。
- 在构建过程中将证书与应用程序关联。
- 并使用它来连接到 SQL Server。
上述文档提取似乎与此相矛盾。