将Masked Jenkins环境变量传递给Docker容器

时间:2016-08-02 15:20:59

标签: bash jenkins docker environment-variables

我在Jenkins构建中设置了一个密码参数,其中包含一些我想保密的信息。 Jenkins构建将创建一个Docker容器,需要访问此参数。目前,我的命令如下:

docker run -e PASSWORD=${PASSWORD} my_image my_command

这正如我所期望的那样 - 我在构建中设置的PASSWORD参数作为环境变量传递给Docker容器,然后可以使用它。这是我的控制台输出的一部分:

+ docker run -e PASSWORD=abc123efg my_image my_command

问题是原始密码显示在上面的输出中。是否有任何解决方法或替代解决方案可用于将屏蔽参数传递给我的容器而不将其暴露在输出中?

2 个答案:

答案 0 :(得分:0)

有许多插件可以屏蔽控制台输出中的特定参数,例如https://wiki.jenkins-ci.org/display/JENKINS/Mask+Passwords+Plugin

答案 1 :(得分:0)

将敏感信息作为明文imho传递即使被屏蔽也不是一个好选择。如果您控制构建管道,那么使用共享秘密方法可能是一个更强大的选项。它的实施和记录相对简单。从快速谷歌搜索我会选择http://bigthinkingapplied.com/key-based-encryption-using-openssl/,这很好地解释了它。简而言之......

  • 创建一个随机文件(“共享密钥”)并使其在您的构建系统和docker容器中可用
  • 使用共享密钥加密密码
  • 将加密密码传递给docker容器
  • 在docker容器中,使用共享密钥解密密码