Jenkins凭证/凭据管理详解

这篇具有很好参考价值的文章主要介绍了Jenkins凭证/凭据管理详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、Jenkins中的凭证

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

凭证类型

jenkins凭据,jenkins,jenkins,运维,基于角色访问权限,Groovy沙箱
jenkins凭据,jenkins,jenkins,运维,基于角色访问权限,Groovy沙箱
最常用的是用户名和密码,通过它们去下载git仓库的源码

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

凭证范围

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

系统

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

全局

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

用户

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

凭证域

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

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

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

凭证提供者

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

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

这会在根上下文中暴露凭证(Jenkins 本身) 。两个凭证范围可用:系统和全局。你可以在 Jenkins →凭证→系统中 看到这些。
jenkins凭据,jenkins,jenkins,运维,基于角色访问权限,Groovy沙箱

用户凭证提供者

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

文件夹凭证提供者

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

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

BlueOcean 凭证插件

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

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

凭证存储

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

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

二、管理凭证

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

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

选择凭证提供者

在配置凭证页面的顶端有 一个下拉列表框,可以告诉 Jenkins 可以使用哪些凭证提供者。
默认选项是使用所有可用( All available )提供者。
jenkins凭据,jenkins,jenkins,运维,基于角色访问权限,Groovy沙箱
不管是选择排除已选择(Exclude selected ,排除提供者)还是只选择( Only selected, 包含提供者)选项,都会显示 一个带复选框的提供者列表。
根据选项,可以勾选对应提供者旁边的复选框,以从 一个可用的提供者集合中排除它们或者将它们包 含在可用的提供者集合中
jenkins凭据,jenkins,jenkins,运维,基于角色访问权限,Groovy沙箱

选择凭证类型

默认选项是使用所有可用(All available )类型
jenkins凭据,jenkins,jenkins,运维,基于角色访问权限,Groovy沙箱

通过提供者指定凭证类型

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

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

这部分的添加下拉按钮中有两个选项(包含和排除) 。选择其中任意 一个将创建 一个允许你选择一 个提供者和类型的新页面元素 。
如果你选择了包含,这个类型的凭证将会被那个提供者包含,而排除选项则相反
jenkins凭据,jenkins,jenkins,运维,基于角色访问权限,Groovy沙箱

三、创建和管理凭证

查看系统凭证
jenkins凭据,jenkins,jenkins,运维,基于角色访问权限,Groovy沙箱
jenkins凭据,jenkins,jenkins,运维,基于角色访问权限,Groovy沙箱
jenkins凭据,jenkins,jenkins,运维,基于角色访问权限,Groovy沙箱
在每个凭证页面上,顶部表列出了在此上下文和任何父上下文中可用的凭证。这个表有如下6 列。

jenkins凭据,jenkins,jenkins,运维,基于角色访问权限,Groovy沙箱
下一个表(中间的)列出了当前上下文中可用的凭证存储。这里有如下列。
jenkins凭据,jenkins,jenkins,运维,基于角色访问权限,Groovy沙箱
jenkins凭据,jenkins,jenkins,运维,基于角色访问权限,Groovy沙箱

添加一个新域或者凭证

创建一个名叫beijing_nodes的域

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

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

选择一种最简单的规范:主机名。然后可以添加模式来匹配节点的命名约定
jenkins凭据,jenkins,jenkins,运维,基于角色访问权限,Groovy沙箱
jenkins凭据,jenkins,jenkins,运维,基于角色访问权限,Groovy沙箱
域创建成功,接下来创建凭据
jenkins凭据,jenkins,jenkins,运维,基于角色访问权限,Groovy沙箱

添加凭据

添加一个用户ssh登录的用户名/密码凭据
jenkins凭据,jenkins,jenkins,运维,基于角色访问权限,Groovy沙箱
jenkins凭据,jenkins,jenkins,运维,基于角色访问权限,Groovy沙箱

使用新域和凭证

在添加代理节点中使用
系统管理→节点管理
jenkins凭据,jenkins,jenkins,运维,基于角色访问权限,Groovy沙箱
新建节点
jenkins凭据,jenkins,jenkins,运维,基于角色访问权限,Groovy沙箱
jenkins凭据,jenkins,jenkins,运维,基于角色访问权限,Groovy沙箱
使用ssh启动方式
jenkins凭据,jenkins,jenkins,运维,基于角色访问权限,Groovy沙箱
填入主机名,由于我们在创建域时输入的模式是*-beijing.com,所以这里得匹配这个模式才能选择上面创建ssh登录凭证
jenkins凭据,jenkins,jenkins,运维,基于角色访问权限,Groovy沙箱
如果主机名格式不匹配,则不能选择上面创建的ssh登录凭证
jenkins凭据,jenkins,jenkins,运维,基于角色访问权限,Groovy沙箱

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

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

五、在流水线中使用凭证

Groovy通过withCredentials读取Jenkins凭证

六、控制脚本安全性

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

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

被丢弃的权限:
jenkins凭据,jenkins,jenkins,运维,基于角色访问权限,Groovy沙箱

脚本检查

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

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

示例:

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

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

从输出结果可以看出该脚本没有被批准
jenkins凭据,jenkins,jenkins,运维,基于角色访问权限,Groovy沙箱

脚本批准

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

管理员可以通过系统管理→In-process Script Approval来管理
jenkins凭据,jenkins,jenkins,运维,基于角色访问权限,Groovy沙箱
jenkins凭据,jenkins,jenkins,运维,基于角色访问权限,Groovy沙箱
有三个动作可以选择:

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

Groovy沙箱

虽然脚本批准机制提供了一个良好的签名机制来验证脚本,但是批准每 个来自非管理员的新脚本都会变得费力且不可管理 。
为了简化这种负担, Jenkins 还支持在 Groovy沙箱中运行脚本的能力。这是通过勾选流水线脚本文本窗口底部的使用 Groovy 沙箱( Use Groovy Sandbox )复选框来实现的
jenkins凭据,jenkins,jenkins,运维,基于角色访问权限,Groovy沙箱
这里的基本思想是, Jenkins 维护一个白名单方法集。这意味着这些方怯被认为在任何脚本中都是安全的。
如果勾选使用 Groovy 沙箱的复选框,并且脚本只使用白名单中的安全方法,则允许脚本在未经批准的情况下运行。这节省了需要管理员批准的额外开销。

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

七、Jenkins 凭证与 Vault 配合使用

待补充

参考

《Jenkins2权威指南》文章来源地址https://www.toymoban.com/news/detail-780147.html

到了这里,关于Jenkins凭证/凭据管理详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Jenkins 凭据密码忘记获取凭据密码

    Jenkins 中添加的凭据密码是加密的,忘记后无法直接肉眼可视化查看原始密码。 可以通过脚本的方式获取,方法有如下两种: 运行后就可以输出所有凭据的信息了。 1、通过浏览器 F12 获取加密后的密码 2、同方式一,在脚本命令行中输入脚本解密 (END)

    2024年02月16日
    浏览(34)
  • jenkins配置gitlab凭据

    下载Credentials Binding插件(默认是已经安装了) 在凭据配置里添加凭据类型 点击保存 Username with password: 用户名和密码 SSH Username with private 在凭据管理里面添加gitlab账号和密码 点击全局 点击添加凭据(版本不同接口位置可能发生改变) 输入gitlab的账号和密码点击确定 测试凭

    2024年02月08日
    浏览(41)
  • Jenkins | 获取凭证密码

    目录 方法一:查看所有账号及密码 方法二:查看指定账号密码 Jenkins == 系统管理 == 脚本命令行 直接运行后看下面的输出即可: 按 F12 后获取这段加密后的密码: 然后继续去执行脚本:  完成

    2024年02月16日
    浏览(40)
  • Jenkins创建SSH登录凭据

    使用Jenkins时,要获取 SSH 登录凭据 id,需要创建一个凭据,在此库存储凭据并使用其中的 ID,以便在脚本中进行 SSH 登录。 按照以下步骤创建这些凭据: 1、打开 Jenkins 您的 Jenkins 控制台,然后导航到系统管理 管理凭据 。 2、在 \\\"系统\\\" 子菜单下,单击 \\\"全局凭据\\\" 

    2024年02月09日
    浏览(35)
  • Jenkins | 获取已存在凭证密码

    Jenkins == 系统管理 == 脚本命令行 直接运行后看下面的输出即可: 按 F12 后获取这段加密后的密码: 然后继续去执行脚本:

    2024年02月02日
    浏览(43)
  • Jenkins添加凭据(连接git仓库)

    1、输入地址和添加代码访问权限者后提示: 无法连接仓库:Command “git ls-remote -h – http://39.104.186.147/fieldmonitoring-v2/fieldmonitoring-web-v2.0.git HEAD” returned status code 128: stdout: stderr: remote: HTTP Basic: Access denied fatal: Authentication failed for ‘http://39.104.186.147/fieldmonitoring-v2/fieldmonitoring-w

    2024年02月06日
    浏览(50)
  • Jenkins :添加node权限获取凭据、执行命令

    拥有Jenkins agent权限的账号可以对node节点进行操作,通过添加不同的node可以让流水线项目在不同的节点上运行,安装Jenkins的主机默认作为master节点。 1.Jenkins 添加node获取明文凭据 通过添加node节点,本地监听ssh认证,选则凭据(明文)进行ssh认证,拿到密码。 1.新建节点-ma

    2024年02月07日
    浏览(36)
  • 【Jenkins】节点 node、凭据 credentials、任务 job

    Jenkins在安装并初始化完成后,会有一个主节点(Master Node),默认情况下主节点可以同时运行的任务数是2,可以在节点配置中修改(系统管理/节点和云管理)。 Jenkins中的节点(Node)是指用于执行构建任务的计算机或计算机集群。节点可以是物理计算机,也可以是虚拟机。

    2024年02月03日
    浏览(40)
  • 【运维篇】基于docker,jenkins结合gitlab做自动部署

    我的环境是windows系统,使用Docker Desktop制作了gitlab容器和jenkins容器,也可以在虚拟机上使用docker。 gitlab有镜像我们直接使用即可,jenkins镜像有一些环境没有,我们在它的基础上添加一些环境。 需要准备的文件比较多,我百度网盘共享一下。 链接:https://pan.baidu.com/s/1K7FD-ngQ

    2024年01月16日
    浏览(55)
  • Jenkins 如何查看已经记录登录服务器的凭证密码

    一、背景描述         在日常的开发过程中,有时候会出现忘记开发、测试服务器的登录密码的情况。此时恰巧 Jenkins 上记录了登录该主机的用户名和密码,我们可以通过 Jenkins 中记录的凭证来重新获取需要的主机登录信息。 二、解决方案一(查看所有账号密码) 步骤:

    2024年02月03日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包