【问题标题】:How to hide password from jenkins shell output如何从 jenkins shell 输出中隐藏密码
【发布时间】:2014-06-29 16:35:10
【问题描述】:

我有两个脚本,首先是文件系统,其次是 jenkins 工作。 第二个脚本调用第一个并将参数传递给它。 参数包含密码参数。 如何将密码隐藏到日志中? 我尝试使用 exec 命令隐藏输出,但问题没有解决。

【问题讨论】:

  • 你可以使用echo "passwd string" | base64base64 --decode代替纯文本
  • 我可以使用 base64,但这不是一个好主意。没有jenkins,脚本将无法使用,因为用户传递的没有编码的密码总是不正确的,用户必须知道不必要的信息。

标签: linux bash shell jenkins


【解决方案1】:

请在下面找到我的解决方案 [不使用 Mask Passwords 插件]:

关于我的詹金斯工作的简要说明: 我写了一个作业,它根据运行时给出的参数从 Nexus 下载工件,然后建立数据库 SQL 连接并使用 maven flyway 插件部署 SQL 脚本。我的工作需要 - 环境、数据库架构、工件版本号、Flyway 命令、数据库用户及其密码作为输入参数。

关于问题的简要背景: 在将 PASSWORD 作为 MAVEN GOAL(参数)传递时,它以纯文本形式出现在 Jenkins 控制台中。 虽然我在运行时使用“密码参数”来传递密码,但它也在控制台中以纯文本形式出现。

我尝试使用“秘密文本”来加密密码,但后来我的工作开始失败,因为加密的密码正在传递给无法连接到数据库的 Maven 目标。

解决方案:

我在 Build Environment 中使用了“Inject passwords to the build as environment variables”,并将其值定义为我的“密码参数”(我的密码参数名称是 db_password)我在运行时将其作为参数传递(例如:我将注入密码值定义为: ${db_password} )。

这是按预期工作的。我在运行我的工作时传递的密码是 [*******]

[控制台日志: 执行 Maven:-B -f /work/jenkins_data/workspace/S2/database-deployment-via-flyway-EDOS/pom.xml 干净编译 -Ddb=UAT_cms_core -DdatabaseSchema=cms-core -Dmode=info -DdeploymentVersion=1.2。 9 -Ddb_user=DB_USER -Ddb_password=[*******] ]

【讨论】:

    【解决方案2】:

    Mask Passwords plugin 就是这样做的。

    【讨论】:

    • 谢谢。您的解决方案很有帮助。
    • Mask Passwords 插件只允许将预设密码传递给构建过程,因此它对作业的安全性没有任何帮助。我需要一个每次运行作业时都需要输入的密码参数(作为参数),并且我需要在控制台输出中将其屏蔽。从我正在阅读的内容来看,去管理 Jenkins -> 配置系统并选择屏蔽密码参数应该可以工作,但它不是出于某种原因.. 有什么建议吗?
    • @IanTait 评论不适合此问题 - 请针对此问题发布另一个问题。
    • 你需要知道,即使使用这个插件,如果你是 jenkins 管理员,你可以取消屏蔽它并在日志中查看密码。
    • @BMW 您无法对实际的服务器管理员隐藏密码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    • 1970-01-01
    相关资源
    最近更新 更多