首页 文章

在持续部署中管理密码

提问于
浏览
12

我们很好地使用TeamCity部署了持续集成环境 . 当我们完成CI流程并转向持续部署时,我们遇到了管理 生产环境 密码的问题 . 对于配置中的其他更改,我们使用Web.Config转换 . 但是,我真的不想在构建配置文件中烘焙 生产环境 密码 .

在CI / CD之前,我们将采用Web.config,使用aspnet_regiis解密连接字符串,更改密码,然后重新加密 . 显然,这很容易出错,完全没有CI / CD的精神 .

我有几个其他的想法,基本上都是关于在部署脚本中使用某些东西重新编写然后加密文件的连接字符串部分,但似乎这必须是一个常见的问题,并且必须有一些接受解决方案但到目前为止,我找不到它 . 有没有“正确的方法”?

谢谢!

3 回答

  • 0

    自TeamCity 7.0以来可用的一种可能的解决方案是使用typed parameters . 您可以在TeamCity中定义类型为password的参数,并以某种方式将其传递给您的构建脚本(作为环境变量或构建脚本属性) .

    TeamCity将这些参数的值以乱码的形式存储在自己的配置文件和数据库中 . 如果密码出现在构建日志或构建参数页面上,则它将替换为*** .

  • 14

    使用配置转换 . 您甚至可以构建自己的可以处理加密/解密的转换 . 最简单的方法是加密release.web.config中的 生产环境 字符串,并使用转换来处理替换连接字符串 .

    http://msdn.microsoft.com/en-us/library/dd465318.aspx

    http://sedodream.com/2010/09/09/ExtendingXMLWebconfigConfigTransformation.aspx

    如果这对您不起作用,请使用postbuild事件来调用aspnet_regiis . 如果您选择扩展配置转换,则可以使用它进行任何操作 . 加密密钥可以在月球上,只要你可以到达它们 .

  • 2

    你不能定义连接字符串IN iis . 他们改变了吗?我想我只是在IIS中为一个站点设置它们,然后不将它们作为应用程序的一部分进行部署,或者至少优先考虑我的IIS设置 .

相关问题