在詹金斯管道中处理秘密

时间:2020-08-05 10:35:47

标签: jenkins jenkins-pipeline jenkins-groovy

我是Jenkins世界的新手,我有一个用例,其中已使用JenkinsFile设置了jenkins管道。在部署阶段,我们将在后端调用一些ansible脚本,以将映像部署到在云环境中运行的Kubernetes集群中。该脚本希望环境变量中包含很少的秘密,因此我想了解哪个是在詹金斯中处理秘密的最佳选项,我是否需要它们输入詹金斯凭据并在詹金斯环境中阅读它们标签,如下所示。或在执行管道时从用户使用输入插件获取值是安全的,但是如果我从用户那里得到,那么我将无法完全自动化管道,将等到用户输入密码。您能以安全的方式帮助您处理凭据吗?

pipeline{
  agent any {
    environment {
        SECRET_VALUE=credentials('SECRET_VALUE_FROM_JENKINS_CREDENTIALS')
    }
  }
}

2 个答案:

答案 0 :(得分:1)

这取决于您的用例,确实,您上面提到的两种方法都可以使用。

将您的秘密作为詹金斯凭据保存起来应该没有任何问题,以我为例,我所有的秘密都在Hashicorp保险库中,而我的詹金斯凭据指向该库所在的位置为例...

      - usernamePassword:
          scope: GLOBAL
          id: serviceUser
          username: svc_admin
          password: "${secret/xyz/service_user/password}"
          description: My secret service user

Jenkins部署是通过JCasC进行的。

答案 1 :(得分:0)

作为jenkins管理员,我可以说将凭证存储在jenkins中是安全的。

只需在詹金斯中创建凭据并在管道中使用即可。同样,在jenkins中安装掩码密码插件也很好,它将屏蔽jenkins作业输出中的凭据。