首页 > 其他分享 >Jenkins 安全 tips

Jenkins 安全 tips

时间:2022-11-10 10:04:51浏览次数:40  
标签:插件 单击 访问 Manage 用户 安全 Jenkins tips

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

保持更新

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

要检查 Jenkins 中的更新可以进行以下步骤:

  • 从菜单中单击 Manage Jenkins
  • Manage Jenkins 页面将在顶部提示是否有新版本可用。
  • 单击 Or Upgrade Automatically 按钮立即升级。
  • 如果不想自动升级,也可以只下载最新版本,并且任何自定时间进行升级即可。
  • 如果对升级后不满意,只需要单击 Downgrade 即可

要更新 Jenkins 插件请参考以下步骤:

  • 从菜单中单击 Manage Jenkins
  • 点击 Manage Plugins
  • 确保在 Updates 选项上,勾选要安装的更新并单击 Download now and install after restart
  • 重启 Jenkins 以完成更新  

谨慎更改 Jenkins 默认安全设置

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

避免在控制器上构建

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

要停止控制器运行构建可以执行以下步骤:

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

访问控制

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

  • 使用单个管理员帐户运行 Jenkins
  • 每个人都可以访问所有内容
  • 每个人都拥有更改内容的权限
  • 为了避免上述情况引起的安全风险,以下是管理用户访问权限的一些建议。  

给每个 Jenkins 用户一个账号

为了帮助跟踪用户在做什么,请为使用 Jenkins 实例的任何人创建个人用户帐户。通过这种方式,可以查看所有活动以及谁做了什么。要创建额外用户,可以执行以下步骤:

  • 从菜单中单击 Manage Jenkins
  • 向下并选择 Manage Users
  • 单击左侧的 Create User
  • 填写所有字段并点击 Create User

建议使用矩阵授权策略插件在更精细的级别上管理用户对 Jenkins 的访问。通过使用此插件可以:

  • 限制用户的访问权限,以便他们只能查看和管理他们所属项目的构建
  • 授予项目经理只读访问权限,以便他们查看构建的进度

以下是安装插件的参考步骤:

  • 单击左侧菜单中的 Manage Jenkins
  • 点击 Manage Plugins
  • 单击 Available 选项并开始输入 Matrix Authorization
  • 勾选插件左侧的框然后单击 Install without restart

使用插件设置权限:

  • 单击菜单中的管理 Jenkins。
  • 单击配置全局安全性。
  • 单击以下任一单选按钮: Matrix-based security——允许用户管理全局用户和组权限。 Project-based Matrix Authorization Strategy——允许用户在项目级别管理用户和组权限。 完成选择后,使用按钮添加用户或组,并使用表中的复选框选择他们的访问级别。完成后单击保存。  

其他用户访问插件

如果用户正在使用其他系统进行访问管理,也许可以使用这些系统对其 Jenkins 用户进行身份验证。例如微软的 Active Directory 和 OpenID 都有插件,可以使用户免于在多个位置管理访问。   此外,还建议关注文件夹插件基于文件夹的授权策略插件(Folder-based Authorization Strategy plugin)。文件夹插件允许在可嵌套文件夹中根据需要对任务进行分组,此插件可让用户对共享安全需求的作业进行分组,从而帮助对访问行为密切关注。而基于文件夹的授权策略插件通过让用户使用角色设置文件夹访问权限,从而来扩展和提高文件夹的安全性。  

安全存储凭据

凭据绑定插件是加密和安全存储连接 Jenkins 与其他服务的凭据的最佳选择。Jenkins 官方在用户第一次安装 Jenkins 时也建议安装此插件。该插件允许用户存储和重复使用所有类型的身份验证方法,例如:

  • 用户名和密码
  • SSH 用户名和私钥
  • 机密文件
  • 机密文本
  • 证书

标签:插件,单击,访问,Manage,用户,安全,Jenkins,tips
From: https://blog.51cto.com/u_15682575/5839659

相关文章

  • 超详细的 Jenkins 安全tips
    Jenkins作为一个开放的、可定制的平台,即使在默认状态下也提供了不错的安全性。但是鉴于Jenkins连接了许多行业工具,因此也存在一定安全隐患。本篇文章将会介绍一些方法......
  • jenkins配置项目CICD
    1、插件安装MavenIntegrationpluginGitpluginGiteePluginAnsiColorGenericWebhookTriggerPluginEmailExtensionPluginLocalization:Chinese(Simplified......
  • java安全之CC1浅学(1)
    前言由于CC链还是比较复杂的,我们可以先看命令执行的部分payload之后再加上反序列化部分组成一个完整的payload调试一项目导入依赖,这里使用3.1版本<!--https://mvnrepo......
  • 计算机在信息安全中的应用
    分组计算机在信息安全中有什么应用?程序设计在信息安全中有什么应用?1通过知网等搜索学术论文,提交你搜到的相关论文。2通过搜索引擎搜索资料,提交相关链接。3通过与学......
  • Jenkins: Generic Webhook Trigger
     GitHub:PayloadURL:https://jenkins-new.jam.only.sap/generic-webhook-trigger/invoke?token=resurrect&jobQuietPeriod=1      Pipeline:pipe......
  • 多副本技术在数据安全中的应用
     为了保护数据可用性,一方面需要云服务提供商采取数据安全保障措施,防止由于系统漏洞、人为破坏等可控因素导致的数据丢失或服务器宕机;另一方面需要云服务提供商采取一定的......
  • Docker学习笔记五:Docker安装Jenkins
    一、安装准备1、安装软件JDKMavenGit(不需要单独安装,直接通过Jenkins安装Git插件即可)2、拉取docker镜像命令:dockerpulljenkins/jenkins二、开始安装1、安......
  • 应用软件安全开发的基本流程
     应用软件存在大量的漏洞是当前信息安全领域面临的极大困境,云应用软件也同样如此。如何有效减少应用软件内的漏洞,提高应用软件安全是目前应用软件开发中亟待解决的问题,尤......
  • 请收下这 10 个安全相关的开源项目 原创 削微寒 手动 11/04 08:48 阅读数 1.3K
    开源为我们的开发带来了极大便利,但这些便利也伴随着一些安全隐患。每当项目引入一个库、框架、服务时,随之而来的安全风险也不可忽视。所以,当开源吞噬世界的时候,代码安全就......
  • Java线程安全
    线程安全的本质其实第一张图的例子是有问题的,主内存中的变量是共享的,所有线程都可以访问读写,而线程工作内存又是线程私有的,线程间不可互相访问。那在多线程场景下,图上的线程......