我认为它可以通过一种凭证存储服务来部分解决。我的意思是一种不需要密码的服务,但只允许机器和经过 SSPI 身份验证的白名单用户访问。该服务可以是托管在 SSLed 服务器下的简单 WebAPI,其简单原则如下: 0) 受保护的部分具有一种带有 IP 白名单的 ACL,或基于机器名称的 ACL,或每个命名资源的基于证书的白名单,或混合。1) 对存储数据的所有更改只能通过 RDP 访问或 SSH 访问托管服务的服务器。2) 受保护的信息只能通过 SSL 访问,并且此 API 是只读的。3) 客户必须预先确认自己的权限并通过调用 api 获取临时令牌,例如
https://s.product.com/
3) 客户端必须提供证书,并且机器身份必须与每次调用的资源的逻辑白名单数据匹配。4) 数据请求如下所示: Url: https://s.product.com/resource-name
Header: X-Ticket: 在第 3 步获得的值,直到过期,证书:与第 3 步使用的证书相同.
因此,它可以在连接字符串中存储此类安全资源的别名,而不是用户名和密码,并且在代码中,此别名将替换为在 Sql 连接工厂中从步骤 4 获得的真实用户名-密码。别名可以指定为特殊格式的用户名,例如 obscured@s.product.com/product1/dev/resource-name
Dev 和 prod 实例可以有不同的凭证别名,例如 product1.dev/resource1 和 product1/staging/resource1 等等。
因此,只有通过调试 prod 服务器,嗅探其流量,或通过在编译时嵌入日志 - 电子邮件代码,才有可能知道实际安全资源的生产凭证。