【问题标题】:Database passwords being stored in Web Deploy pubxml file存储在 Web Deploy pubxml 文件中的数据库密码
【发布时间】: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


【解决方案1】:

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

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

我就是这样做的,而且效果非常好。我不能推荐这个。我的构建过程包括TeamCity Build -> Octopus Deploy -> Azure

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

【讨论】:

    猜你喜欢
    • 2016-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-20
    • 2011-08-20
    • 2023-03-04
    • 1970-01-01
    • 2012-06-20
    相关资源
    最近更新 更多