如何在 Jenkins 控制台输出中隐藏密码?
How to hide passwords in Jenkins console output?
Mask Passwords 插件只允许将预设密码传递到构建过程中,因此它对作业的安全性没有任何作用。
我需要一个每次作业 运行 时都需要输入的密码参数(作为参数),我需要在控制台输出中屏蔽它。
根据我正在阅读的内容,管理 Jenkins -> 配置系统并选择屏蔽密码参数应该有效,但由于某种原因不是这样。有什么建议吗?
使用 Jenkins 1.609.1 和 Mask Passwords Plugin 2.7.3 进行测试。您需要在 "Configure System" 以及您要使用它的工作中激活它。在作业配置中有一个点"Mask passwords",它必须被激活,然后将使用全局配置来屏蔽密码。
如果您有 Linux 构建器,您可以隐藏 shell 命令的输出
在命令文本框中执行 shell 下,只需在第一行添加行:
#!/bin/bash +x
some other commands...
这将仅在控制台输出中隐藏带有密码的命令的输出
可以用Mask Passwords Plugin 这个很好用
https://wiki.jenkins-ci.org/display/JENKINS/Mask+Passwords+Plugin
我在这里使用 "Inject passwords to the build as environment variables" 表格 "Build Environment"。它真的很好用。它将隐藏控制台的密码。
更重要的是,它还通过 "password parameter"
隐藏用户输入的密码
真的很酷!! :)
请在下面找到我的发现和解决方案[不使用 Mask Passwords 插件]:
关于我的詹金斯工作的简要说明:
我写了一个作业,它根据 运行 时间给定的参数从 Nexus 下载工件,然后建立数据库 SQL 连接并使用 maven flyway 插件部署 SQL 脚本。我的工作需要 - 环境、数据库架构、工件版本号、Flyway 命令、数据库用户及其密码作为输入参数。
关于问题的简要背景:
在将密码作为 MAVEN GOAL(参数)传递时,它以纯文本形式出现在 Jenkins 控制台中。
虽然我在 运行 时使用 "Password Parameter" 传递密码,但随后它也以纯文本形式出现在控制台中。
我尝试使用 "secret text" 来加密密码,但后来我的工作开始失败,因为加密的密码正在传递给无法连接到数据库的 Maven Goals。
解法:
我使用了构建环境中的"Inject passwords to the build as environment variables"并将其值定义为我的"password parameter"(我的密码参数名称是 db_password),我在 运行 时将其作为参数传递(例如:我将我的注入密码值定义为:${db_password})。
这是按预期工作的。我在 运行 工作时传递的密码是 [*******]
[console log:
Executing Maven: -B -f /work/jenkins_data/workspace/S2/database-deployment-via-flyway-EDOS/pom.xml clean compile -Ddb=UAT_cms_core -DdatabaseSchema=cms-core -Dmode=info -DdeploymentVersion=1.2.9 -Ddb_user=DB_USER -Ddb_password=[*******]
]
您可以使用凭据。添加秘密文本凭据并提供您将使用的 ID,如下所示:
withCredentials([string(credentialsId: 'DOCKER_USER', variable: 'DOCKER_USER'), string(credentialsId: 'DOCKER_PASSWORD', variable: 'DOCKER_PASSWORD')]) {
sh "docker login -u $DOCKER_USER -p $DOCKER_PASSWORD"
sh "docker push '$DOCKER_USER/appName:test'"
}
DOCKER_USER
和 DOCKER_PASSWORD
在 jenkins 凭据存储中,将在日志
中被 ***
替换
Mask Passwords 插件只允许将预设密码传递到构建过程中,因此它对作业的安全性没有任何作用。
我需要一个每次作业 运行 时都需要输入的密码参数(作为参数),我需要在控制台输出中屏蔽它。
根据我正在阅读的内容,管理 Jenkins -> 配置系统并选择屏蔽密码参数应该有效,但由于某种原因不是这样。有什么建议吗?
使用 Jenkins 1.609.1 和 Mask Passwords Plugin 2.7.3 进行测试。您需要在 "Configure System" 以及您要使用它的工作中激活它。在作业配置中有一个点"Mask passwords",它必须被激活,然后将使用全局配置来屏蔽密码。
如果您有 Linux 构建器,您可以隐藏 shell 命令的输出 在命令文本框中执行 shell 下,只需在第一行添加行:
#!/bin/bash +x
some other commands...
这将仅在控制台输出中隐藏带有密码的命令的输出
可以用Mask Passwords Plugin 这个很好用 https://wiki.jenkins-ci.org/display/JENKINS/Mask+Passwords+Plugin
我在这里使用 "Inject passwords to the build as environment variables" 表格 "Build Environment"。它真的很好用。它将隐藏控制台的密码。 更重要的是,它还通过 "password parameter"
隐藏用户输入的密码真的很酷!! :)
请在下面找到我的发现和解决方案[不使用 Mask Passwords 插件]:
关于我的詹金斯工作的简要说明: 我写了一个作业,它根据 运行 时间给定的参数从 Nexus 下载工件,然后建立数据库 SQL 连接并使用 maven flyway 插件部署 SQL 脚本。我的工作需要 - 环境、数据库架构、工件版本号、Flyway 命令、数据库用户及其密码作为输入参数。
关于问题的简要背景: 在将密码作为 MAVEN GOAL(参数)传递时,它以纯文本形式出现在 Jenkins 控制台中。 虽然我在 运行 时使用 "Password Parameter" 传递密码,但随后它也以纯文本形式出现在控制台中。
我尝试使用 "secret text" 来加密密码,但后来我的工作开始失败,因为加密的密码正在传递给无法连接到数据库的 Maven Goals。
解法:
我使用了构建环境中的"Inject passwords to the build as environment variables"并将其值定义为我的"password parameter"(我的密码参数名称是 db_password),我在 运行 时将其作为参数传递(例如:我将我的注入密码值定义为:${db_password})。
这是按预期工作的。我在 运行 工作时传递的密码是 [*******]
[console log: Executing Maven: -B -f /work/jenkins_data/workspace/S2/database-deployment-via-flyway-EDOS/pom.xml clean compile -Ddb=UAT_cms_core -DdatabaseSchema=cms-core -Dmode=info -DdeploymentVersion=1.2.9 -Ddb_user=DB_USER -Ddb_password=[*******] ]
您可以使用凭据。添加秘密文本凭据并提供您将使用的 ID,如下所示:
withCredentials([string(credentialsId: 'DOCKER_USER', variable: 'DOCKER_USER'), string(credentialsId: 'DOCKER_PASSWORD', variable: 'DOCKER_PASSWORD')]) {
sh "docker login -u $DOCKER_USER -p $DOCKER_PASSWORD"
sh "docker push '$DOCKER_USER/appName:test'"
}
DOCKER_USER
和 DOCKER_PASSWORD
在 jenkins 凭据存储中,将在日志
***
替换