jenkins - 如何保护构建服务器上的凭据?

标签 jenkins build continuous-integration bamboo

我有一个设置,开发人员将代码推送到存储库,然后触发我们的 CI 服务器上的构建。目前部署也是由 CI 服务器完成。为了部署到生产环境,jenkins 需要以 root 身份登录生产服务器。

这意味着我必须将凭据(例如用户名/密码或 key )放入 CI 系统中。这导致了这样一个问题:每个有权访问存储库的开发人员都能够通过将代码注入(inject)构建过程来读取这些 secret 凭据。

如何确保对存储库的访问不会授予对 CI 服务器上凭据的潜在访问权限?

最佳答案

您可以使用 Jenkins“Credentials”对象(“Credentials”插件的),仅用于此目的。从 Jenkins 侧面菜单导航到“Credentials”并创建一个新的 Credentials 项目。这些项目保存在 Jenkins 内部,而不是 SCM 存储库中。

然后,您可以使用 Jenkins 管道或自由式作业中的这些凭据。 设置 Jenkins 权限,以便开发人员无法访问凭据。 Jenkins 通过将这些凭证替换为星号 (***) 来防止将这些凭证泄露到控制台输出。

如果您使用 jenkinsfile,您实际上将完全控制权交给了开发人员 - 这是一种糟糕的安全实践!为了分离开发人员和 DevOps 角色,我将创建一个单独的 Jenkins 作业,仅将工件部署到生产中。不要将部署管道存储在 jenkinsfile 中(或将其存储在具有不同权限的新“DevOps”存储库中)。配置构建作业以在成功时触发部署作业。使用范围/权限保护对凭据和部署作业的访问

关于jenkins - 如何保护构建服务器上的凭据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46234367/

相关文章:

qt - Qt 是否会在构建时使其自己的库的数字签名失效?

build - Gradle 构建 : does someone tried alternative build script with alternative setting. Gradle ?

docker - apt-get install apt-transport-https 在 Docker 中失败

Jenkins 编译器警告插件不显示 C 或 C++ 源代码

java - 如何在java中的jenkins构建中找到死代码?

ruby-on-rails - 使用 Capistrano 自动构建 Rails

sql-server - 部署 MSSQL 更改脚本

jenkins - 声明式 Jenkins 管道中的检查点

Angular ng build --target=production 给出错误

google-chrome - 在不跨步骤共享的云构建步骤中安装 google-chrome(使用卷)