Jenkins凭证/凭据管理详解

news2024/11/19 14:31:41

文章目录

  • 一、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权威指南》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/149001.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaScript---DOM---DOM重点核心---1.8

关于DOM操作&#xff0c;我们主要针对于元素的操作。主要有创建、增、删、改、查、属性操作、事件操作。 创建 document.writeinnerHTMLcreateElement 增 appendChildinsertBefore 删 removeChild 改 主要修改dom的元素属性&#xff0c;dom元素的内容、属性、表单的值等 …

websocket的实现

websocket的实现 本文的websocket实现基于单线程Reactor网络模型的代码实现 初步了解websocket&#xff08;必读&#xff09;:参考连接 websocekt的实现基于http&#xff0c;数据传输与处理过程也很类似&#xff1a;基于reactor的http服务器 websocket握手 websocket基于T…

Python-123练习-02数值运算

文章目录1. 整数四则运算2. 除法运算3. 计算矩形面积4. 计算矩形面积结果保留两位小数5. 计算存款利息6. 计算多个垫片面积的和7. 换披萨8. 表达式求值9. 三角函数计算10. 三角形周长及面积1. 整数四则运算 描述 编写程序&#xff0c;计算2个正整数的和、差、积、商并输出。题…

2023春节祝福系列第一弹(放飞孔明灯,祝福大家身体健康)

2023年春节祝福第一弹 放飞孔明灯&#xff0c;祝福大家身体健康&#xff01; 目录 一、前言 二、一片星光闪烁的旋转星空 &#xff08;1&#xff09;、效果展示&#xff1a; &#xff08;2&#xff09;、相关源代码 &#xff08;3&#xff09;、语法解释 &#xff08;3.…

[ 数据结构 ] 堆排序--------思路、图解、代码

0 基本介绍 堆定义:首先是完全二叉树,分为大顶堆和小顶堆大顶堆:顾名思义,如果将父子节点看成一个堆(三个节点的组合),那么顶的值需要大于其两个子节点的值,即顶大;小顶堆即顶小升序排序使用大顶堆,降序使用小顶堆回顾顺序存储二叉树中,父子节点的关系为:下标为n的节点,它的左…

Java开发 - Spring框架初体验

目录 前言 了解框架的概念 Spring框架 关于Spring 在Maven中使用Spring Spring怎么管理对象 spring怎么创建对象 通过Bean注解创建对象 通过组件扫描创建对象 关于ComponentScan("xxxxxx") Spring Bean的作用域 自动装配技术 什么是自动装配 补充 Io…

MATLAB循环码编译码实验

标题循环码编译码实验一、实验目的1、掌握循环码编码原理和译码原理2、练习使用Matlab编程实现循环码编码和译码二、实验原理伴随式译码捕错译码三、实验要求1、编程实现码长n15的各种循环码的编码、译码&#xff0c;给出相应的码生成多项式、&#xff08;典型&#xff09;监督…

Java设计模式中装饰者模式/装饰者模式具体内容是什么/静态代理与装饰者模式联系与区别是什么

继续整理记录这段时间来的收获&#xff0c;详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用&#xff01; 5.4 装饰者模式 5.4.1 概述 在不改变现有对象结构的情况下&#xff0c;动态给对象增加某些职责或功能的模式 5.4.2 结构 抽象构件(Component)&#xff1a;定义…

Javascript 中的堆、栈、引用和值

学透CSS-强烈推荐 Javascript 中的内存存储 栈-Stack&#xff1a; 这是当前 Javascript 线程的暂存空间。由于 Javascript 通常只有单线程&#xff0c;因此通常只有一个堆栈。堆栈的大小也是有限的。 堆-Heap &#xff0c;它是应用程序级别的动态内存存储。从堆中访问和检索…

java 手把手带你创建一个spring入门案例

查看本文 首先 您需要下载spring 如果没有安装 可以查看我的文章 java spring下载步骤 首先 我们打开idea开发工具 选择左上角 File > New > Project 如下图操作 勾选 然后点击下一步 然后我们选择项目目录 这里我直接用了个中文目录 最好不要跟我学哦 因为个人英文不…

微信语音转换成mp3文件保存的简单详细步骤

目录 读者手册 一、前言 二、操作步骤一 把语音转化为silk文件&#xff08;silk后缀的文件&#xff09; 1.长按语音收藏&#xff08;手机操作&#xff09; 2.找到主页收藏 3.找到收藏的语音 4.转存为笔记 5.点击笔记里面的语音&#xff08;下面全部电脑操作&#xff0…

Kubernetes(k8s) 笔记总结(一)

文章目录1. 云平台2. 私有网络 VPC(重点&#xff01;&#xff01;&#xff01;)3. Kubernetes 介绍4. k8s 架构5. kubectl 和 kubeadm6. 三台云服务器的 安装部署7. Kubernetes 环境搭建7.1 安装docker环境7.2 安装k8s的 预备环境8. kubernetes集群 安装的三大件(kubelet、kube…

三句话,让Ai帮你画18万张图

本文介绍Stable Diffusion的快速上手&#xff0c;本地部署&#xff0c;以及更多有趣的玩法展示。 在 DALL-E 2 和 Imagen 之后&#xff0c;AI绘图领域又一个热乎的深度学习模型出炉——Stable Diffusion 。8月份发布的 Stable Diffusion 更加高效且轻量&#xff0c;可以在消费…

P4:Transforms的使用

transform.py就像是一个工具箱&#xff0c;里面有很多工具&#xff08;如&#xff1a;totensor、resize等不同的工具&#xff09;。 使用规则&#xff1a; 拿特定格式的图片&#xff0c;通过使用工具&#xff0c;得到想要的结果。 1、transforms.ToTensor()的使用 1、作用&a…

实战1:基于tensorflow卷积网络实现面部关键点检测详细教程(代码+数据)

项目概述: 此任务的目标是预测面部图像上的关键点位置。这可以用作多个应用程序中的构建块,例如:检测面部关键点是一个非常具有挑战性的问题。人脸特征因人而异,即使是单个人,由于 3D 姿势、大小、位置、视角和光照条件等因素也存在很大差异。 直接上结果: 数据集描…

JSP SSM 个人博客系统系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 JSP SSM 个人博客系统系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代 码和数据库&#xff0c;系统主要采…

vue3-Teleport笔记

简单来写一下Teleport src/components/TeleportLearn.vue <script setup></script><template><div><Teleport to"body"><div>你好</div></Teleport></div> </template><style scoped></style&…

NVMe IO数据传输如何选择PRP or SGL?

在Host与Controller之间有数据交互时&#xff0c;Controller会多次访问Host内存。比如执行NVMe Read/Write:当Host下发NVMe Write命令时&#xff0c;Host会先放数据放在Host内存中&#xff0c;然后通知Controller过来取数据。Controller接到信息后&#xff0c;会通过PCIe Memor…

Python下载ts文件视频并合并

目录 一、ts文件的由来 二、下载ts文件 1.下载index.m3u8&#xff0c;并做相应处理 2.下载ts文件 三、合并ts文件 一、ts文件的由来 ts文件&#xff0c;ts即"Transport Stream"的缩写&#xff0c;特点就是要求从视频流的任一片段开始都是可以独立解码的&#x…

C 程序设计教程(06)—— C 语言的运算符与表达式

C 程序设计教程&#xff08;06&#xff09;—— C 语言的运算符与表达式 该专栏主要介绍 C 语言的基本语法&#xff0c;作为《程序设计语言》课程的课件与参考资料&#xff0c;用于《程序设计语言》课程的教学&#xff0c;供入门级用户阅读。 目录C 程序设计教程&#xff08;0…