gpt4 book ai didi

java - Java 代码如何在 Jenkins 构建期间读取 Jenkins 全局凭证?

转载 作者:行者123 更新时间:2023-12-02 11:53:46 29 4
gpt4 key购买 nike

我有一个基于 Jenkins 构建的 Java 项目。此代码需要 Secret 文件(.pem 格式)才能运行。我无法将文件保存在 Java 项目本身中(安全原因)。

文件格式为key_v2-XXXXX.pem,内容为

-----BEGIN PRIVATE KEY-----
XXX
XXXX
-----END PRIVATE KEY-----

当前,Java 代码正在访问本地中存在的 Secret 文件。所以本地构建没问题。但是当这段代码在Jenkins上执行时,构建失败,因为找不到本地文件或者Jenkins无法访问该文件。

我已将 secret 文件添加为 Jenkins 中的全局凭据(不受限制)。 (引用-https://jenkins.io/doc/book/using/using-credentials/)

我需要找到一种方法,让Java代码在运行 Jenkins 构建时访问此 Secret 文件(存储在 Jenkins 中)。

或者有其他方法可以处理这种情况吗?

最佳答案

有很多方法可以做到这一点。

其中最简单的是使用 Jenkins Credentials Plugin(可以定义 key 或文件等)https://wiki.jenkins-ci.org/display/JENKINS/Credentials+Plugin

使用相当常见的模式:

1)使用CI/CD工具加密功能(即Jenkins,使用Jenkins Credentials Plugin)

2) 将您的 secret 存储在 SCM 中(显然已加密)。然后,问题就变成了在构建时安全地传递 secret (或在启动时可用),以便能够解密已部署的 secret (密码、凭据、 secret 、证书)。这就是 secret 管理工具(例如保险库)的用武之地。 secret 管理工具将允许您安全地检索您的 secret ,以便在需要时用于解密 secret 。

3) 另一种方法是将 SCM 外部的所有 secret 、证书等实际存储在 secret 管理工具本身中,并在部署/启动时检索它们。

我会说使用方法2。让你的代码每次都以相同的方式访问文件(相同的文件路径等)。当涉及到构建时,您尝试解密的实际文件位于工作目录中的某个位置。因此,只要代码知道在哪里查找 secret 文件等,让您的 Java 代码访问它就不成问题。然后使用凭证插件 Secret 来解密文件,作为构建的初始步骤。

关于java - Java 代码如何在 Jenkins 构建期间读取 Jenkins 全局凭证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52194643/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com