【问题标题】:How to put maven settings.xml with password in source control如何将带有密码的maven settings.xml放在源代码管理中
【发布时间】:2018-11-24 03:38:02
【问题描述】:

我正在为 jenkins 奴隶构建一个 docker 映像。该詹金斯奴隶将不得不向/从工件存储库推送和拉取工件。

这适用于 Java 和 maven 项目。所以我需要在我的 docker 容器中有一个 settings.xml,以便我可以在多个私有存储库中进行身份验证。

我的想法是在 Dockerfile 中复制一个 settings.xml,但因为它包含敏感信息(用户名、密码),所以我担心安全性。我可以在源代码管理中加密此内容吗?更重要的是,我可以避免人们仅仅下载这个文件并能够使用加密的凭据吗?理想情况下,我应该有一种机制来确保加密文件只能在 docker 容器的上下文中工作。

【问题讨论】:

  • 我遇到了同样的问题。对我来说很有帮助的是maven.apache.org/guides/mini/guide-encryption.html
  • 创建主密码并使用它来加密 settings.xml 中的密码。将加密文件上传到源代码管理。 settings-security.xml 应该存在于 docker 镜像中以便能够解密密码。 maven.apache.org/guides/mini/guide-encryption.html
  • @ben5556 对我来说正是这个问题。我可以将加密文件添加到源代码控制中,但由于我还在 dockerfile 中添加了 settings-security.xml 来解密,所以每个人都可以使用它并解密文件。还是我在这里遗漏了什么?

标签: maven docker jenkins


【解决方案1】:

据我了解,上传凭据应仅对 jenkins slave 可用。这里有几个选项:

  1. 仅为詹金斯奴隶创建特殊的 settings.xml。禁止除 admin 以外的所有用户访问 jenkins slave,因此密码是安全的。每个人都将使用另一个带有凭据的 settings.xml 仅用于下载。

  2. 使用环境变量参数化 settings.xml:

    <server>
       <id>repo</id>
       <username>${env.REPO_USER}</username>
       <password>${env.REPO_PASSWORD}</password>
     </server>
    

在 jenkins 从属服务器上,REPO_USER/PASSWORD 将使用凭据插件进行设置:https://support.cloudbees.com/hc/en-us/articles/203802500-Injecting-Secrets-into-Jenkins-Build-Jobs。 用户将此变量设置为仅下载凭据。

【讨论】:

  • 谢谢!我会看看。我真的不明白如何实现第一个选项。更多的上下文,我正在使用 Jenkins Shared Pipelines。我的 Jenkins Slave 和 Jenkins 共享管道的 dockerfile 都在源代码控制中。基本上一切都在源代码管理中。因此不允许 Jenkins 从属访问,但该文件将在源代码控制中。我错过了什么吗?第二个选项看起来很有趣。会看的!
  • 你是对的,如果带有 settings.xml 的 dockerfile 在源代码管理中,第一个选项将无济于事
  • 第二个选项解决了我的问题。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-15
  • 1970-01-01
  • 2010-09-14
  • 1970-01-01
  • 1970-01-01
  • 2010-10-09
  • 2013-06-22
相关资源
最近更新 更多