我想在Jenkins中创建一个发布任务,以自动发布我的数据库更改以及我的应用程序。
如果我理解正确,通常的做法是创建一个发布配置文件,其中包括数据库名称以及用于部署的帐户的帐户(登录名和密码)。
这意味着部署帐户用户名和密码将以明文形式存储在每台开发人员计算机以及版本控制服务器和持续集成服务器上。
即使我为部署创建了特定的登录名和密码,但对我来说这似乎很不安全。
有解决方法吗?我只能考虑在持续集成服务器上的msbuild命令行中替换密码。
答案 0 :(得分:5)
Windows身份验证是连接到SQL Server实例的首选安全方法,如果可以使用它,则建议将其用于连接。
如果使用SQL身份验证,则发布配置文件中的默认值是不保存密码。对于构建服务器和其他共享配置文件方案,您可能需要接受较低级别的安全性(通过编辑发布配置文件以添加密码,或将其设置为构建配置中的参数)或以其他方式解决此问题(自定义脚本)从某种秘密商店读取它,例如加密值。)
Windows身份验证:如果可能,请使用Windows身份验证,根据需要向需要权限的用户授予权限。对于持续集成方案,您需要为构建服务器执行的帐户提供适当的权限 - 完整详细信息位于recent whitepaper on the SSDT blog.
SQL身份验证:如果您查看发布配置文件(打开方式... Xml编辑器),您将看到密码信息实际上并未存储在那里。
如果必须使用SQL身份验证,我认为将密码作为构建配置的一部分传递给发布操作可能是在开发简易性和安全性之间进行权衡的“最佳”方式。至少通过这种方式,您可以限制谁可以在TFS中查看和编辑构建配置,而常规开发人员也不会看到它。