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的更多相关文章

  1. K8s 超详细总结

    一个目标:容器操作:两地三中心:四层服务发现:五种Pod共享资源:六个CNI常用插件:七层负载均衡:八种隔离维度:九个网络模型原则:十类IP地址:百级产品线:千级物理机:万级容器:相如无亿,K8s有亿 ...

  2. 【转】(超详细)jsp与servlet之间页面跳转及参数传递实例

    初步学习JavaEE,对其中jsp与Servlet之间的传值没弄清楚,查看网上资料,发现一篇超详细的文章,收获大大,特此记录下来.具体链接:http://blog.csdn.net/ssy_shand ...

  3. 超强、超详细Redis数据库入门教程

    这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么2.redis的作者何许人也3.谁在使用red ...

  4. Github上传代码菜鸟超详细教程【转】

    最近需要将课设代码上传到Github上,之前只是用来fork别人的代码. 这篇文章写得是windows下的使用方法. 第一步:创建Github新账户 第二步:新建仓库 第三部:填写名称,简介(可选), ...

  5. WebRTC VideoEngine超详细教程(三)——集成X264编码和ffmpeg解码

    转自:http://blog.csdn.net/nonmarking/article/details/47958395 本系列目前共三篇文章,后续还会更新 WebRTC VideoEngine超详细教 ...

  6. [转]超详细图解:自己架设NuGet服务器

    本文转自:http://diaosbook.com/Post/2012/12/15/setup-private-nuget-server 超详细图解:自己架设NuGet服务器 汪宇杰          ...

  7. GitHub超详细图文攻略

    GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git 分类: 转载2014-03-25 21:10 10641人阅读 评论(2) 收藏 举报 GitHubbr ...

  8. 超详细的Xcode代码格式化教程,可自定义样式。

    超详细的Xcode代码格式化教程,可自定义样式. 为什么要格式化代码 当团队内有多人开发的时候,每个人写的代码格式都有自己的喜好,也可能会忙着写代码而忽略了格式的问题.在之前,我们可能会写完代码后,再 ...

  9. Struts2+Spring4+Hibernate4整合超详细教程

    Struts2.Spring4.Hibernate4整合 超详细教程 Struts2.Spring4.Hibernate4整合实例-下载 项目目的: 整合使用最新版本的三大框架(即Struts2.Sp ...

  10. 超全超详细的HTTP状态码大全(推荐抓包工具HTTP Analyzer V6.5.3)

    超全超详细的HTTP状态码大全 本部分余下的内容会详细地介绍 HTTP 1.1中的状态码.这些状态码被分为五大类: 100-199 用于指定客户端应相应的某些动作. 200-299 用于表示请求成功. ...

随机推荐

  1. vscode 切换分支时报错:The following untracked working tree files would be overwritten .....

    执行命令:git clean -d -fx   表示删除 一些 没有 git add 的 文件: git clean 参数 -n 显示将要删除的文件和目录: -x -----删除忽略文件已经对git来 ...

  2. JVM核心知识体系(转)

    1.问题 1.如何理解类文件结构布局? 2.如何应用类加载器的工作原理进行将应用辗转腾挪? 3.热部署与热替换有何区别,如何隔离类冲突? 4.JVM如何管理内存,有何内存淘汰机制? 5.JVM执行引擎 ...

  3. 物体三维模型的构建:3DSOM软件实现侧影轮廓方法

      本文介绍基于3DSOM软件,实现侧影轮廓方法的空间三维模型重建. 目录 1 背景知识 1.1 三维信息获取方法 1.2 侧影轮廓方法原理及其流程 2 三维模型制作 2.1 马铃薯三维模型制作 2. ...

  4. Netty源码学习4——服务端是处理新连接的&netty的reactor模式

    系列文章目录和关于我 零丶引入 在前面的源码学习中,梳理了服务端的启动,以及NioEventLoop事件循环的工作流程,并了解了Netty处理网络io重要的Channel ,ChannelHandle ...

  5. 用友U8+与百胜E3的数据对接:实现企业数字化业务的集成与协作

    用友U8+作为中国企业最佳经营管理平台之一,在企业经营管理中广泛应用.然而,由于每个企业的内部管理方式和流程各不相同,标准软件功能难以完全适应所有企业的管理需求.同时,随着互联网和移动应用的发展,对于 ...

  6. 多维度分析数据的软件,BI软件不就是吗

    BI软件(Business Intelligence Software)是一种用于多维度分析数据的工具,可以帮助企业从海量数据中提取有价值的洞察力,并为决策者和业务用户提供可视化.交互式的报表和仪表盘 ...

  7. Python 潮流周刊第 30 期(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  8. [UOJ#748] [UNR#6 1B] 机器人表演

    在这个科技发达的年代,真人表演已经落伍了.参加完 UOI 后,hehe 蚤去到了下山市大剧院,观看下山市最火爆的机器人表演. 机器人有时比人类更能抓住事情的本质.所谓表演,其实也就是开场有若干个机器人 ...

  9. C++学习笔记三:变量与数据类型(浮点型)

    1. 数据类型与所占内存大小 类型 大小 精度 注意 float 4 7   double 8 15 默认 long double 16 >double   精度就是有效数字. 2. 声明和初始 ...

  10. 用C#也能做机器学习?

    前言 说到机器学习,大家可能都不陌生,但是用C#来做机器学习,可能很多人还第一次听说.其实在C#中基于ML.NET也是可以做机器学习的,这种方式比较适合.NET程序员在项目中集成机器学习模型,不太适合 ...