【发布时间】:2015-10-13 19:48:12
【问题描述】:
我有一个使用 EF 代码优先迁移的 asp.net MVC 应用程序。
我使用 Web Deploy 将此项目发布到 Azure。
这一切都很好,但我不喜欢的一件事是 Web Deploy 创建的 pubxml 文件存储了它从 Azure Web App 配置下载的连接字符串。
这些连接字符串包含 sql azure 密码,并且由于我在源代码管理中有 pubxml 文件,这种情况并不理想:
<ObjectGroup Name="DefaultConnection" Order="3" Enabled="True">
<Destination Path="Data Source=tcp:###.database.windows.net,1433;Initial Catalog=###_db;User ID=###;Password=###" Name="Data Source=tcp:###.database.windows.net,1433;Initial Catalog=###_db;User Id=###;Password=###" />
<Object Type="DbCodeFirst">
<Source Path="DBMigration" DbContext="###.Server.Models.DAL.ApplicationDbContext, ###.Server.Models" MigrationConfiguration="###.Server.Migrations.Configuration, ###.Server" Origin="Configuration" />
</Object>
</ObjectGroup>
有没有办法将其配置为不存储密码或更好的方式来进行部署,同时保持密码安全?
【问题讨论】:
-
最简单的方法是不在源代码管理中存储 pubxml 文件。否则,在连接字符串和其他机密中放置错误的值(占位符),并在部署后使用 Azure 面板设置正确的值(您也可以使用 powershell 自动执行此部分)。
-
默认情况下,密码是加密的,pubxml 不包含在源代码管理中。请参阅msdn.microsoft.com/en-us/library/dd465337(v=vs.110).aspx中的“配置连接选项卡”
标签: asp.net-mvc azure azure-sql-database entity-framework-migrations webdeploy