数据库密码存储在Web Deploy pubxml文件中

时间:2015-10-13 19:48:12

标签: asp.net-mvc azure azure-sql-database ef-migrations webdeploy

我有一个使用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>

有没有办法将它配置为不存储密码或更好的部署方式,同时保持密码的安全?

1 个答案:

答案 0 :(得分:1)

商定;最好不要将您的凭据或pubxml文件存储在源代码管理中!

您正在尝试保护其他人的凭据,那么您是否考虑过持续集成(CI)流程?在这种情况下,您只需要保护对CI服务器的访问。 在CI服务器上,您可以定义构建步骤,以使用PowerShell从外部服务器,Azure blob存储下载pubxml,或将文件存储在CI服务器上,并将其复制到位。

我就是这样做的,而且它一直运作得非常好。我不能推荐这个。我的构建过程包括 TeamCity Build - &gt; Octopus Deploy - &gt;天青

如果直接在Visual Studio中创建构建步骤,则构建步骤将存储在csproj文件中,并且pubxml将复制到执行构建的计算机;您的凭据会立即受到损害。