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