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將被複制到執行構建的計算機;您的憑據立即受到損害。