超详细的 Jenkins 安全tips

详细,jenkins,安全,tips · 浏览次数 : 149

小编点评

**Jenkins 安全保障指南** **更新 Jenkins** * 建议定期更新 Jenkins,包括插件,以修复漏洞。 * 确保使用最新版本,因为它已包含修复的漏洞。 * 启用 Jenkins 的安全建议页面,了解平台上的漏洞。 **配置 Jenkins** * 创建个人用户帐户,并使用矩阵授权策略进行访问控制。 * 限制用户的访问权限,以便他们只能查看和管理他们所属项目的构建。 * 使用角色授权策略控制用户对 Jenkins 的访问权限。 **安全配置** * 配置全局安全性,允许用户管理全局用户和组权限。 * 使用 Matrix-based security 或 Project-based Matrix Authorization Strategy 等策略进行项目级别权限管理。 * 使用安全存储凭据插件存储和安全存储凭据。 **代理** * 在控制器上运行 Jenkins,可以使用代理来限制对可能造成伤害的文件的访问。 * 通过设置代理,用户可以有效阻止控制器运行构建从而限制对可能造成伤害的文件的访问。 **安全建议** * 使用一个独立的管理员帐户运行 Jenkins。 * 使用矩阵授权策略来限制用户的访问权限。 * 使用角色授权策略来控制用户对 Jenkins 的访问权限。 * 使用安全存储凭据插件存储和安全存储凭据。 * 对 Jenkins 进行漏洞扫描。 * 定期备份 Jenkins 运行环境。 **参考资料** * Jenkins 官方文档:security * Matrix Authorization 插件:Matrix-based security * Project-based Matrix Authorization Strategy 插件:Project-based Matrix Authorization Strategy * 安全存储凭据插件:Security storage credentials * 代理:Agent * 文件夹授权策略:Folder-based Authorization Strategy

正文

Jenkins 作为一个开放的、可定制的平台,即使在默认状态下也提供了不错的安全性。但是鉴于 Jenkins 连接了许多行业工具,因此也存在一定安全隐患。本篇文章将会介绍一些方法和工具,来确保 Jenkins 实例的安全和可靠,同时也给使用 Jenkins 的用户提供安全保障。
保持更新

软件漏洞随时可能暴露,因此软件供应商需要不断更新他们的应用程序来修复问题或者添加新功能,同时也消除安全漏洞。Jenkins 有一个自带的安全建议页面,可以让用户了解平台上的漏洞。总之,保持更新(包括插件)是一个避免安全风险的不错选择。

要检查 Jenkins 中的更新可以进行以下步骤:
  1. 从菜单中单击 Manage Jenkins 
  2. Manage Jenkins 页面将在顶部提示是否有新版本可用。单击 Or Upgrade Automatically 按钮立即升级。如果不想自动升级,也可以只下载最新版本,并且任何自定时间进行升级即可。如果对升级后不满意,只需要单击 Downgrade 即可
要更新 Jenkins 插件请参考以下步骤:
  1. 从菜单中单击Manage Jenkins 
  2. 点击 Manage Plugins
  3. 确保在 Updates 选项上,勾选要安装的更新并单击 Download now and install after restart
  4. 重启 Jenkins 以完成更新

 

谨慎更改 Jenkins 默认安全设置


Jenkins 在安装时启用其大部分安全功能来尽可能保障使用安全。鉴于每个用户使用 Jenkins 的习惯和方式不同,因此需要根据使用实例来进行配置。Jenkins 提供了有关用户可以查看的重要功能的详细文档,请参阅 Jenkins 官方文档(见参考链接)获取安全建议。需要注意的是,任何安全配置需要在仔细考虑后更改,如果有条件的话可以与网络安全专业技术人员交流后再进行配置。

 

避免在控制器上构建


Jenkins 提供了一个内置节点,方便用户可以尽快运行测试看看它是否适合。但是在单个实例上运行的构建可以访问用户操作系统的文件系统。出于这个原因,Jenkins 建议用户在“代理”上运行作业(在可扩展的设置也是类似的操作,使用动态构建代理在 Jenkins 中自动扩展)。代理是替代控制器用来运行虚拟的 Jenkins 实例,在使用代理时,用户可以有效阻止控制器运行构建从而限制对可能造成伤害的文件的访问。

要停止控制器运行构建可以执行以下步骤:
  1. 从菜单中单击 Manage Jenkins 
  2. 单击 Manage Nodes and Clouds
  3. 单击 Built-In Node 右侧的图标。
  4. 用户有两个选项来防止在控制器上构建:
  • 如果不想在控制器上构建,请将 Number of executors 更改为0 。
  • 如果想在需要时在控制器上构建,请从 Usage 下拉列表中选择 Only build jobs with label expressions matching this node
访问控制

除了避免外在的安全威胁,也需要从内部保护 Jenkins 的使用环境。如果出现以下情况,安全威胁将大大增加:

  • 使用单个管理员帐户运行 Jenkins

  • 每个人都可以访问所有内容

  • 每个人都拥有更改内容的权限

为了避免上述情况引起的安全风险,以下是管理用户访问权限的一些建议。
1. 给每个 Jenkins 用户一个账号
为了帮助跟踪用户在做什么,请为使用 Jenkins 实例的任何人创建个人用户帐户。通过这种方式,可以查看所有活动以及谁做了什么。要创建额外用户,可以执行以下步骤:
  1. 从菜单中单击 Manage Jenkins 
  2. 向下并选择 Manage Users
  3. 单击左侧的 Create User
  4. 填写所有字段并点击 Create User
建议使用矩阵授权策略插件在更精细的级别上管理用户对 Jenkins 的访问。通过使用此插件可以:
  • 限制用户的访问权限,以便他们只能查看和管理他们所属项目的构建
  • 授予项目经理只读访问权限,以便他们查看构建的进度
以下是安装插件的参考步骤:
  1. 单击左侧菜单中的 Manage Jenkins
  2. 点击 Manage Plugins
  3. 单击 Available 选项并开始输入 Matrix Authorization
  4. 勾选插件左侧的框然后单击 Install without restart
使用插件设置权限:
  1. 单击菜单中的管理 Jenkins。
  2. 单击配置全局安全性。
  3. 单击以下任一单选按钮:
    Matrix-based security——允许用户管理全局用户和组权限。
    Project-based Matrix Authorization Strategy——允许用户在项目级别管理用户和组权限。
  4. 完成选择后,使用按钮添加用户或组,并使用表中的复选框选择他们的访问级别。完成后单击保存。
2. 其他用户访问插件
如果用户正在使用其他系统进行访问管理,也许可以使用这些系统对其 Jenkins 用户进行身份验证。例如微软的 Active Directory 和 OpenID 都有插件,可以使用户免于在多个位置管理访问。
此外,还建议关注文件夹插件和基于文件夹的授权策略插件(Folder-based Authorization Strategy plugin)。文件夹插件允许在可嵌套文件夹中根据需要对任务进行分组,此插件可让用户对共享安全需求的作业进行分组,从而帮助对访问行为密切关注。而基于文件夹的授权策略插件通过让用户使用角色设置文件夹访问权限,从而来扩展和提高文件夹的安全性。
安全存储凭据
凭据绑定插件是加密和安全存储连接 Jenkins 与其他服务的凭据的最佳选择。Jenkins 官方在用户第一次安装 Jenkins 时也建议安装此插件。该插件允许用户存储和重复使用所有类型的身份验证方法,例如:
  • 用户名和密码

  • SSH 用户名和私钥

  • 机密文件

  • 机密文本

  • 证书

 

参考链接

https://www.jenkins.io/doc/book/security/ 

与超详细的 Jenkins 安全tips相似的内容:

超详细的 Jenkins 安全tips

Jenkins 作为一个开放的、可定制的平台,即使在默认状态下也提供了不错的安全性。但是鉴于 Jenkins 连接了许多行业工具,因此也存在一定安全隐患。本篇文章将会介绍一些方法和工具,来确保 Jenkins 实例的安全和可靠,同时也给使用 Jenkins 的用户提供安全保障。 保持更新 软件漏洞随

[转帖]超详细的解决ModuleNotFoundError: No module named '_curses'错误的方法!!!

超详细的解决ModuleNotFoundError: No module named '_curses’的错误 问题描述:在写py脚本时,需要用到curses库(提供了控制字符屏幕的独立于终端的方法)。 导入的时候完全正常 Run的时候却报了这样的错误(它说找不到这个包) 本能的解决方法: 首先想到

[转帖]超全超详细的HTTP状态码大全

本部分余下的内容会详细地介绍 HTTP 1.1中的状态码。这些状态码被分为五大类:100-199 用于指定客户端应相应的某些动作。200-299 用于表示请求成功。300-399 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息。400-499 用于指出客户端的错误。500-599 用于

[转帖]超详细的I/O多路复用概念、常用I/O模型、系统调用等介绍

概述 当我们要编写一个echo服务器程序的时候,需要对用户从标准输入键入的交互命令做出响应。在这种情况下,服务器必须响应两个相互独立的I/O事件:1)网络客户端发起网络连接请求,2)用户在键盘上键入命令行。我们先等待哪个事件呢?没有哪个选择是理想的。如果在acceptor中等待一个连接请求,我们就不

[转帖]⭐万字长篇超详细的图解Tomcat中间件方方面面储备知识⭐

https://developer.aliyun.com/article/885079?spm=a2c6h.24874632.expert-profile.321.7c46cfe9h5DxWK 2022-04-13 132举报 简介: LNMT 1.JAVA简介 常见的大型平台有LNMP、LNMP、

[转帖]玩转zabbix之超详细的二进制安装

https://zhuanlan.zhihu.com/p/212281069 #初始配置 #centos7添加阿里云镜像 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo #安

Wireshark使用笔记

Wireshark使用笔记,转载&学习《超详细的Wireshark使用教程》,并结合自己操作写以下笔记。 wireshark是什么? wireshark是非常流行的网络封包分析软件,简称小鲨鱼,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。 wireshark是开源软件,可以放心使用。

[转帖]一文看懂eBPF、eBPF的使用(超详细)

https://zhuanlan.zhihu.com/p/480811707 eBPF(extended Berkeley Packet Filter) 可谓 Linux 社区的新宠,很多大公司都开始投身于 eBPF 技术,如 Goole、Facebook、Twitter 等。 eBPF 究竟有什么

JUC中的AQS底层详细超详解

摘要:当你使用java实现一个线程同步的对象时,一定会包含一个问题:你该如何保证多个线程访问该对象时,正确地进行阻塞等待,正确地被唤醒? 本文分享自华为云社区《JUC中的AQS底层详细超详解,剖析AQS设计中所需要考虑的各种问题!》,作者: breakDawn 。 java中AQS究竟是做什么的?

MySQL基础知识(二)-超详细 Linux安装MySQL5.7完整版教程及遇到的坑

1.简介 我们经常会在Linux上安装MySQL数据库,但是安装的时候总是会这里错,那里错,不顺利,今天整理了一下安装流程,连续安装来了两遍,没有遇到什么大错误,基本上十分钟左右可以搞定,教程如下。写着一篇文章主要是答应别人要帮忙给他在Linux上安装一下mysql(MySQL是5.7,Linux是