我在Visual Studio 2015中编写了许多SQL单元测试。目前,他们使用app.config文件中的静态连接字符串连接到数据库(SQL Azure数据库)。
如果可能,我想使用Azure Key Vault保护此信息。
我在加密web.config文件方面看过this one和this one等文章,但它们似乎更适合天蓝色的网络应用。
是否有人能提供更适合SQL单元测试场景的实施建议,或确认上述方法适用于我的情况?
或者是否有其他解决方案,例如覆盖TestService使用的ExecutionContext?
感谢。
答案 0 :(得分:0)
我认为在Key Vault中存储单元测试的SQL连接字符串是不可取的。对于您的单元测试,要从Key vault检索这些连接字符串,it needs a token from Azure AD与Key vault交谈。因此,您需要在Azure AD中注册一个具有从Key Vault检索机密的权限的应用程序。
但是,对于要将Azure AD作为注册应用程序进行身份验证的应用程序,它需要客户端ID 和客户端密钥。这个客户端机密显然无法存储在Key保险库中,因此您需要在Key Key之外存储一个需要保密的秘密。
如果您的单元测试始终在同一台计算机上运行,则可以安装客户端证书并使用该证书对Azure AD进行身份验证,而不是客户端密钥。但这会使你的单元测试不太便携。
最好将连接字符串存储在从源代码管理中排除的私有配置文件中,并将reference从app.config
或web.config
文件中删除,或者在环境变量中读取它们