我有一个使用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>
有没有办法将它配置为不存储密码或更好的部署方式,同时保持密码的安全?
答案 0 :(得分:1)
商定;最好不要将您的凭据或pubxml文件存储在源代码管理中!
您正在尝试保护其他人的凭据,那么您是否考虑过持续集成(CI)流程?在这种情况下,您只需要保护对CI服务器的访问。 在CI服务器上,您可以定义构建步骤,以使用PowerShell从外部服务器,Azure blob存储下载pubxml,或将文件存储在CI服务器上,并将其复制到位。
我就是这样做的,而且它一直运作得非常好。我不能推荐这个。我的构建过程包括 TeamCity Build - &gt; Octopus Deploy - &gt;天青 强>
如果直接在Visual Studio中创建构建步骤,则构建步骤将存储在csproj文件中,并且pubxml将复制到执行构建的计算机;您的凭据会立即受到损害。