1

我有一个使用EF代码第一次迁移的asp.net MVC应用程序。存储在Web Deploy pubxml文件中的数据库密码

我使用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

最简单的就是不要在源代码控制中存储pubxml文件。否则,在连接字符串和其他秘密中输入错误的值(占位符),并在部署后使用Azure面板设置正确的值(您也可以使用PowerShell自动执行此部分)。 –

+0

默认情况下,密码被加密并且pubxml不包含在源代码管理中。请参阅https://msdn.microsoft.com/zh-cn/library/dd465337(v=vs.110).aspx中的“配置连接选项卡” – tmullaney

回答

1

同意;这是一个不错的做法,不要将您的凭证或pubxml文件存储在源代码管理中!

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

这就是我如何做到的,它一直工作得非常好。我不能推荐这个。我的构建过程包括:TeamCity Build - > Octopus Deploy - > Azure

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

相关问题