SQL azure连接字符串始终包含密码(因为Azure SQL Server不支持OS身份验证),这使得将它们保存在web.config
文件中是不安全的。您可以在网上找到的典型建议是将它们移至云配置设置,这意味着在ServiceDefinition/WebRole/ConfigurationSettings
文件的ServiceDefinition.csdef
部分中声明设置,以便您可以在门户网站中对其进行编辑:
此方法的问题在于,无论何时重新部署站点,您在门户中设置的设置都会覆盖ServiceConfiguration.*.cscfg
中的值。当然,您可以将连接字符串放到文件中,但这仍然没有意义,因为您仍然将秘密保存在源代码管理中。
Azure Key Vault可能是一个很好的解决方案,但我想在走这条路之前探索其他选择。你会推荐什么?
答案 0 :(得分:1)
为您的服务创建托管身份,然后使用“密钥库”将访问策略添加到密钥库。无需存储客户端密钥,所有配置均以安全方式存储
答案 1 :(得分:0)
正如Lanorkin所说,如果我们在Azure Web应用程序中定义连接字符串。重新部署时不会覆盖。但是,Azure云服务中的行为完全不同。重新部署时将覆盖它。我想您可以在Azure feedback forum为此问题提交新功能。目前,如果您不想将连接字符串存储在源代码管理中,则可以选择Key Vault。