文章目录

  • 一、Jenkins中的凭证
    • `凭证类型`
    • `凭证范围`
      • 系统
      • 全局
      • 用户
    • `凭证域`
    • `凭证提供者`
      • 系统凭证提供者 (Jenkins 凭证提供者,`常用`)
      • 用户凭证提供者
      • 文件夹凭证提供者
      • BlueOcean 凭证插件
    • `凭证存储`
  • 二、管理凭证
    • 选择凭证提供者
    • 选择凭证类型
    • 通过提供者指定凭证类型
  • 三、创建和管理凭证
    • 添加一个新域或者凭证
      • 创建一个名叫beijing_nodes的域
      • 添加凭据
    • 使用新域和凭证
  • 四、高级凭证:基于角色的访问权限
  • 五、在流水线中使用凭证
  • 六、控制脚本安全性
    • `脚本检查`
    • `脚本批准`
    • `Groovy沙箱`
  • 七、Jenkins 凭证与 Vault 配合使用
  • 参考

一、Jenkins中的凭证

凭证插件( Credentials plugin) (包含在 Jenkins 安装中)提供了对凭证的创建和管理机制,同时也为其他插件提供了用于存储和访问凭证的 API

凭证类型



最常用的是用户名和密码,通过它们去下载git仓库的源码

凭证默认保存在 JENKINSHOME/secrets 目录下

凭证范围

凭证具有与它们相关联的范围。这是 一种表示它们如何才能被暴露的方式。 Jenkins 使用的主要范围有如下 3种。

系统

顾名思义,这个范围与根上下文,也就是 Jenkins 系统相关联。此范围中的凭证只被暴露给系统和后台任务,并且一般被用于连接到构建节点/代理节点等事情。

全局

全局范围是默认选项,通常用来确保 Jenkins 中的任务可以使用凭证。

用户

顾名思义,这个范围是每个用户。这意味 只有 Jenkins 中的线程作为该用户进行身份验证时,凭证才可用。

凭证域

凭证域提供了 一种在共同域名下组合凭证集合的方怯。

当定义凭证域时,你需要提供 一个域名和 一个“规范”,比如一 个主机名或 URL 模式。

Jenkins 总是有至少 一个凭证域一一那就是全局域。全局凭证城没有任何规范,因此它适用于 Jenkins 中的任何东西去使用

凭证提供者

凭证提供者是可以存储和获取凭证的地方。 这可以是内部凭证存储,也可以是外部凭证库。

系统凭证提供者 (Jenkins 凭证提供者,常用

这会在根上下文中暴露凭证(Jenkins 本身) 。两个凭证范围可用:系统和全局。你可以在 Jenkins →凭证→系统中 看到这些。

用户凭证提供者

这为用户暴露了每个用户的凭证存储。只有用户范围是可用的,并且 一个用户不能看到另 一个用户的用户凭证。
你可以在 Jenkins →username →凭证→用户或者Jenkins →人们→ usern me →凭证→用户中看到这些凭证。

文件夹凭证提供者

这是由文件夹插件(Folder plugin )提供的。它暴 露了每个文件夹的凭证存储并支持文件夹及其任何子文件夹的全局范围。

你可以在 Jenkins →<folder name> →凭证→文件夹中看到这些凭证。

BlueOcean 凭证插件

这个范围的凭证用于 Blue Ocean 接口和通过它创建/访问的项目。

所有这些提供者都可以与凭证域 一起使用。

凭证存储

凭证存储允许凭证提供者向 Jenkins 暴露凭证。存储与特定的上下文关联,并且与全局域绑定或者可以使用自定义域。它们可以支持 一组凭证域。

内部存储库是实际上存储凭证的地方。外部存储库通常是凭证的扁平化引用或者使用元数据和像查询这样更高级功能的服务。

二、管理凭证

在界面上可以允许 Jenkins 用户使用的选项如下:

  • 选择那些允许 Jenkins 使用的凭证提供者来解析凭证。
  • 选择可以被解析和配置的凭证类型。
  • 为一个特定的提供者指定可以被包含或者排除的凭证类型。

选择凭证提供者

在配置凭证页面的顶端有 一个下拉列表框,可以告诉 Jenkins 可以使用哪些凭证提供者。
默认选项是使用所有可用( All available )提供者。

不管是选择排除已选择(Exclude selected ,排除提供者)还是只选择( Only selected, 包含提供者)选项,都会显示 一个带复选框的提供者列表。
根据选项,可以勾选对应提供者旁边的复选框,以从 一个可用的提供者集合中排除它们或者将它们包 含在可用的提供者集合中

选择凭证类型

默认选项是使用所有可用(All available )类型

通过提供者指定凭证类型

配置凭证页面的最后 部分是关于限制的部分。这部分允许你指定 Jenkins 从特定提供者中允许或排除的凭证类型。这是 一种微调 Jenkins 可以从 个提供者那里使用什么的方式。

注意,做这些事情是可选的而不是必需的。

这部分的添加下拉按钮中有两个选项(包含和排除) 。选择其中任意 一个将创建 一个允许你选择一 个提供者和类型的新页面元素 。
如果你选择了包含,这个类型的凭证将会被那个提供者包含,而排除选项则相反

三、创建和管理凭证

查看系统凭证



在每个凭证页面上,顶部表列出了在此上下文和任何父上下文中可用的凭证。这个表有如下6 列。


下一个表(中间的)列出了当前上下文中可用的凭证存储。这里有如下列。

添加一个新域或者凭证

创建一个名叫beijing_nodes的域


规范( Specification )字段允许我们区分这个域。允许通过模式指定筛选类型。
在创建规范后, 你选择 一个在 Jenkins 中使用的凭证并且输入 一个与模式匹配的相关值时,来自该域的凭证将作为选项进行呈现。

请注意,如果不为新域提供规范,那么该域将有效地等同于全局域

选择一种最简单的规范:主机名。然后可以添加模式来匹配节点的命名约定


域创建成功,接下来创建凭据

添加凭据

添加一个用户ssh登录的用户名/密码凭据

使用新域和凭证

在添加代理节点中使用
系统管理→节点管理

新建节点


使用ssh启动方式

填入主机名,由于我们在创建域时输入的模式是*-beijing.com,所以这里得匹配这个模式才能选择上面创建ssh登录凭证

如果主机名格式不匹配,则不能选择上面创建的ssh登录凭证

四、高级凭证:基于角色的访问权限

Jenkins Role-based Authorization Strategy基于角色的访问权限控制

五、在流水线中使用凭证

Groovy通过withCredentials读取Jenkins凭证

六、控制脚本安全性

安全性由脚本安全插件( Script Security plugin )提供的。

Jenkins 通过两种机制来确保脚本安全:脚本批准和 Groovy沙箱。

被丢弃的权限:

脚本检查

Jenkins 管理员 创建一个脚本或在配置中包含一个脚本并进行保存时,脚本会被自动批准并加入己批准的列表中 。批准列表中的脚本可以由任何人运行。

如果 一个非管理员试图运行一个脚本,而这个脚本不在批准列表中,那么 它将被禁止运行直到 /除非管理员批准。

示例:

node{stage('test') {currentBuild.rawBuild.getPreviousSuccessfulBuild()}
}

这个脚本被标记了,因为它试图使用内部的rawBuild 对象来获取信息

从输出结果可以看出该脚本没有被批准

脚本批准

如果非管理员试图运行需要批准的脚本, Jenkins 将禁止运行它。它还会添加 一个需要被批准的消息到队列中供管理员检查

管理员可以通过系统管理→In-process Script Approval来管理


有三个动作可以选择:

Approve      #批准该方法可以执行
Approve assuming permission check   #允许在一个实际用户正在执行(而不是系统调用)并且假设这个用户具有适当的 Jenkins 权限来执行该操作时执行该方法。如果批准 ,该方法将被添加到内部白名单中。
Deny        #拒绝该方法执行

Groovy沙箱

虽然脚本批准机制提供了一个良好的签名机制来验证脚本,但是批准每 个来自非管理员的新脚本都会变得费力且不可管理 。
为了简化这种负担, Jenkins 还支持在 Groovy沙箱中运行脚本的能力。这是通过勾选流水线脚本文本窗口底部的使用 Groovy 沙箱( Use Groovy Sandbox )复选框来实现的

这里的基本思想是, Jenkins 维护一个白名单方法集。这意味着这些方怯被认为在任何脚本中都是安全的。
如果勾选使用 Groovy 沙箱的复选框,并且脚本只使用白名单中的安全方法,则允许脚本在未经批准的情况下运行。这节省了需要管理员批准的额外开销。

如果脚本中的任何方法不在白名单中, 脚本不允许运行,并标记错误,参考上述脚本批准的方法

七、Jenkins 凭证与 Vault 配合使用

待补充

参考

《Jenkins2权威指南》

Jenkins凭证/凭据管理详解相关推荐

  1. Shiro权限管理详解(授权和注解开发)【面试点】

    Shiro权限管理详解 1. 权限管理 1.1什么是权限管理 1.2用户身份认证 1.2.1 概念 1.2.2 用户名密码身份认证流程 1.2.3 关键对象 1.3 授权 1.3.1 概念 1.3.2 ...

  2. Linux操作系统的进程管理详解

    Linux操作系统的进程管理详解 pkill & pgrep pkill & pgrep 是两个很方便的命令.省去了要先ps auwx | grep xxxx然后再根据pid kill ...

  3. 基于Kubernetes构建Docker集群管理详解

    from: 基于Kubernetes构建Docker集群管理详解 Kubernetes是Google开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度.均衡容灾.服务注册.动 ...

  4. php事件和行为,Yii框架组件和事件行为管理详解

    Yii框架组件和事件行为管理详解 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  Yii框架组件和事件行为管理详解.txt ] (友情提示:右键点上行txt文档名- ...

  5. Linux账号和权限管理详解(超详细示例操作)!

    Linux账号和权限管理详解 一.用户账号和组账号概述 1.1 Linux基于用户身份对资源访问进行控制 1.2 用户账号 1.3 组账号 二.用户账号文件 2.1 用户账号文件 /etc/passw ...

  6. linux输入一个用户看是否在工作,linux下的用户管理详解

    linux下的用户管理详解 useradd 命令详解 添加用户 想要对linux下面的帐号了解的话首先必须要了解的4个配置文件[root@localhost /]# cat /etc/passwd 首 ...

  7. Spring事务管理详解_基本原理_事务管理方式

    Spring事务管理详解_基本原理_事务管理方式 1. 事务的基本原理 Spring事务的本质其实就是数据库对事务的支持,使用JDBC的事务管理机制,就是利用java.sql.Connection对象 ...

  8. linux服务器操作系统日志都有哪些,Linux操作系统服务器日志管理详解

    Linux操作系统服务器日志管理详解 Linux操作系统服务器日志管理详解 日志对于安全来说,非常重要,他记录了系统每天发生的各种各样的事情,你可以通过他来检查错误发生的原因,或者受到攻击时攻击者留下 ...

  9. Linux用户管理详解大结局(下)

    Linux用户管理详解(下) 我们已经可以通过创建不同的用户来防止其他人使用自己的账号,之后每个账户对应一个单独的用户密码,构成了一个基本的用户管理思路.为了方便管理还可以使用组来设置相同属性的用户. ...

最新文章

  1. 51单片机串口通信(字符串接收和发送)
  2. 【数据竞赛】kaggle竞赛宝典-多分类相关指标优化​
  3. 最短无序连续子数组—leetcode581
  4. J2Pay –完整示例
  5. node定时任务php 卡,在NodeJs中如何实现定时任务(详细教程)
  6. 【回归预测】基于matlab布谷鸟算法优化BP神经网络回归预测(多输入单输出)【含Matlab源码 1555期】
  7. Shell命令打包Android apk
  8. Audition人声美化
  9. 服务器主机本地系统服务受限,Win10系统出现服务主机本地系统网络受限怎么办 如何解决...
  10. 单应矩阵计算旋转角和平移量
  11. 文件转换和操作的一些在线网页
  12. 图形化开发(九)01-Three.js之案例——王者荣耀demo制作
  13. outlook怎么配置126邮箱服务器,outlook 如何配置126邮箱
  14. php if多条件,php – 多个IF语句条件
  15. Linux系统下安装Adobe Flash Player插件的方法
  16. mysql 访问寄存器_汇编寄存器(内存访问)基础知识之三---mov指令
  17. w ndows平板插sim卡,HUAWEI MateBookE怎么插入sim卡上网和接收短信?
  18. linux daemon启动脚本,Linux 启动脚本
  19. 基金智能定投你问我答
  20. 越南出台利好政策促进光伏发展

热门文章

  1. 学了一年Java的我,想转嵌入式了
  2. 32位处理器AM6528BACDXEA、AM6548BACDXEAF基于Arm Cortex-A53内核【工业4.0嵌入式产品应用】
  3. Android怎样使用系统属性
  4. 15个常用excel函数公式_Excel常用函数公式应用技巧解读
  5. 《港联证券》半导体复苏预期“抢跑”产业现实 细分市场缓慢回温
  6. 学计算机的男生生好不好找女朋友,男生注意!找这10大专业的女生做女朋友,会很惨!...
  7. 鸿蒙OS真的是PPT吗?
  8. 一篇文章带你了解-selenium工作原理详解
  9. 基于JAVA药房药品采购集中管理系统计算机毕业设计源码+系统+数据库+lw文档+部署
  10. macbook pro换固态硬盘ssd与移植mac os x系统