在 Jenkins 管道中处理秘密
Posted
技术标签:
【中文标题】在 Jenkins 管道中处理秘密【英文标题】:Handing Secrets in Jenkins pipeline 【发布时间】:2020-08-05 10:35:47 【问题描述】:我是 Jenkins 世界的新手,我有一个用例,我使用 JenkinsFile 设置了一个 jenkins 管道。作为部署阶段的一部分,我们将在后端调用一些 ansible 脚本,以将映像部署到在云环境中运行的 Kubernetes 集群中。该脚本预计环境变量中的秘密很少,所以我想了解哪个是在 Jenkins 中处理秘密的最佳选项,我是否需要它们输入 jenkins 凭据并在 jenkins 环境中读取它们标记如下。或者在执行管道时使用输入插件从用户那里获取值是安全的,但是如果我从用户那里获取,那么我将无法完全自动化管道将等到用户输入密码。您能否以安全的方式帮助处理凭据。
pipeline
agent any
environment
SECRET_VALUE=credentials('SECRET_VALUE_FROM_JENKINS_CREDENTIALS')
【问题讨论】:
你可以参考这里-jenkins.io/doc/book/using/using-credentials 【参考方案1】:这取决于您的用例,实际上您上面提到的两种方法都可以。
将您的秘密作为 Jenkins 凭证保存应该没有任何问题,在我的情况下,我所有的秘密都在 Hashicorp 保险库中,并且我的 Jenkins 凭证以保险库位置为例...
- usernamePassword:
scope: GLOBAL
id: serviceUser
username: svc_admin
password: "$secret/xyz/service_user/password"
description: My secret service user
Jenkins 部署是通过 JCasC 进行的。
【讨论】:
非常感谢您的回答,hashicorp 保险库和 Jenkins 凭证中的秘密有多么不同。抱歉,只是想了解更多关于保险库的信息。【参考方案2】:作为 jenkins 管理员,我可以说在 jenkins 中存储凭据是安全的。
只需在 jenkins 中创建凭据并在管道中使用。在 jenkins 中安装掩码密码插件也很好,它将在 jenkins 作业的输出中屏蔽凭据。
【讨论】:
以上是关于在 Jenkins 管道中处理秘密的主要内容,如果未能解决你的问题,请参考以下文章
Jenkins 管道函数 fileExist 可以处理通配符吗?