Jenkins 身份验证及授权简介
Jenkins是一个基于MIT License协议的开源软件项目,是基于Java开发的一种持续集成(CI)工具,用于监控持续重复的工作,它可以集成各种插件完成持续编译、部署、测试,并将Job运行结果通过邮件发送给相关人员或者展示相关数据报告。
为保证Jenkins 环境的安全性,从Jenkins 2.0开始,Jenkins默认情况下启用诸多的安全选项,来保证诸如身份验证和角色授权等安全性。启用Jenkins安全性可以增强Jenkins的访
问控制,确保在访问Jenkins时对用户进行身份验证并授权其操作,保护Jenkins免受外部威胁。
启用安全性
选中“启用安全性”复选框后,是Jenkins 2.0以上的默认设置,用户可以使用用户名和密码登录,以执行匿名用户不能执行的操作。 用户在Jenkins中可以做什么操作取决于用户的授权策略及其配置。 默认情况下,匿名用户没有任何权限,而登录用户具有完全控制权限。 对于任何非本地Jenkins环境,应始终启用此复选框。
Jenkins管理员可以在Web UI中启用,配置或禁用“启用安全性”。
安全领域(Security Realm), 也称为身份认证,表示Jenkins如何以及从何处提取用户(或身份)信息
授权配置(Authorizaition), 定义Jenkins哪些用户和用户组可以访问Jenkins的哪些方面以及访问的程度
此外,插件(基于角色的授权策略插件)可以扩展Jenkins的访问控制功能,以支持更加细力度的认证和授权方案。
身份认证
默认情况下,Jenkins支持如下的身份认证方法:
- 委托给Servlet容器
委派身份验证,依赖于运行Jenkins服务的Servlet容器(例如Jetty)。 如果使用此选项,查阅Servlet容器的身份验证文档
- Jenkins用户数据库
使用Jenkins内置的用户数据存储进行身份验证,而不是委派给外部系统。 在Jenkins 2.0或更高版本的安装中,默认情况下启用此功能,适用于较小的环境
- LDAP
将身份验证委托给已配置的LDAP服务器,包括用户和组。 对已经配置了外部身份提供程序(例如LDAP)的组织,此选项比较常见, 如下图所示:
- Unix用户/组数据库
将身份验证委托给Jenkins主服务器上的Unix OS级用户数据库。 此模式还允许重新使用Unix组进行授权。 例如,可以将Jenkins配置为“开发人员组中的每个人都具有管理员访问权限”。注意,Unix允许用户和组具有相同的名称。 为了消除歧义,使用@前缀强制将名称解释为一个组。 例如,@ dev表示开发人员组,而不是dev用户
身份授权
指示用户在Jenkins中访问什么样的内容。 默认情况下,Jenkins支持如下不同的授权选项:
任何用户可做任何事(Anyone can do anything)
任何用户都可以完全控制Jenkins,包括尚未登录的匿名用户。除了本地测试Jenkins时,请勿使用该设置
旧版模式(Legancy Mode)
行为与Jenkins 1.164 版本完全相同。 如用户具有“admin”角色,则授予用户对系统的完全控制权,否则(包括匿名用户)将仅具有读取访问权限。 除了本地测试Jenkins时,请勿使用该设置
登录用户可以做任何事情 (Logged in users can do anything)
每个登录用户都可以完全控制Jenkins。 取决于高级选项的设置,匿名用户可获得对Jenkins的读取访问权限,或没有任何访问权限。 此模式可用于强制用户在执行操作之前登录,以便对用户的操作进行审核
基于矩阵的安全性(Matrix-based security)
该授权方案允许在Jenkins中对哪些用户和组能够执行哪些操作进行细粒度控制.
上表中的每一行代表一个用户或组(也称为“角色”), 包括名为“匿名”(anonymous)和“已认证”(authenticated)的条目。 “匿名”条目表示授予访问Jenkins中的所有未经身份验证的用户的权限。 而“已认证”可用于向访问该环境的所有已认证用户授予权限。
矩阵中授予的权限是可以累加的, 例如,如果用户“ kohsuke”属于“开发人员”和“管理员”组,则授予“ kohsuke”的权限将是授予“ kohsuke”,“开发人员”,“管理员”的所有权限的并集 ,
基于项目的矩阵授权策略(Project-based Matrix Authorization Strategy)
此授权方案是基于矩阵的安全性的扩展,允许在“项目配置”中分别为每个项目定义其访问控制列表(ACL)。 允许仅授予特定用户或组访问指定项目的权限,而不授予Jenkins中所有项目的访问权限。
基于矩阵的安全性和基于项目的矩阵授权策略由矩阵授权策略插件提供,需要安装在Jenkins上
基于角色的授权策略
Jenkins使用Role Strategy插件来添加基于角色的授权机制来管理更加细粒度的用户的权限。 支持的功能如下:
- 创建全局角色,例如管理员,作业创建者,匿名角色等,从而可以设置各种权限,如Overall,Slave, 作业,Run,查看和SCM权限
- 创建基于项目(Project)角色,仅允许基于项目设置作业和运行权限
- 创建基于Agent角色,允许设置与节点相关的权限
- 将角色分配给用户和用户组
安装并启用插件
可以使用“插件管理器”屏幕从连接到Internet的任何Jenkins安装中安装“Role-based Authorization Strategy
”插件。 通过使用标准的“管理Jenkins”>“管理全局安全性”屏幕来激活基于角色的策略:
安装后,可以使用Manage Jenkins的“管理和分配角色”来配置插件:
配置角色
使用“管理角色”来定义角色。 可以定义全局角色和基于项目/Agent的角色
全局角色:
适用于Jenkins中的任何项目,会覆盖“项目角色” (Project Role) 中定义的权限。 也就是说,当授予角色“全局角色”中的 ( Job-Read)“作业读取”权限时,无论在“项目角色”中指定何种权限,都允许该角色读取所有作业。
基于项目和Agent的角色
可以为匹配的项目设置正则表达式模式, 旨在匹配相应的正则表达式
例如,如果将模式字段设置为Roger-.*,则该角色将匹配名称以Roger-开头的所有作业;
模式区分大小写。 要执行不区分大小写的匹配,使用(?i)表示法:大写,Roger-.*与小写,roger-.*与不区分大小写的(?i)roger-.*
可以使用诸如^ foo / bar.* 之类的表达式来匹配文件夹
分配角色
使用“分配角色”为用户和用户组分配角色
- 用户组代表安全领域 (Security Realm )提供的相应的用户和用户组(例如LDAP插件提供用户和组)
- 注意,两个内置组:authenticated的组,(即已登录的用户)和匿名anonymous(任何用户,包括尚未登录的用户)
如需了解更加详细信息,请参见 https://ke.qq.com/course/468003?tuin=9239b190
Jenkins 身份验证及授权简介相关推荐
- AAA(身份验证,授权和记账)简介
AAA服务器 AAA是认证,授权和计费(认证,授权,计费)的三个英文字的缩写.其主要目的是管理哪些用户可以访问网络服务器,哪些服务可供具有访问权限的用户使用,以及如何考虑使用网络资源的用户.具体来说: ...
- iis授权mysql验证_ASP.NET Web API身份验证和授权
本文是作者所理解和翻译的内容. 这篇文章包括两部分:身份验证和授权. 身份验证用来确定一个用户的身份.例如,Alice用她的用户名和密码登陆系统,服务器用她的用户名和密码来确定她的身份. 授权是判断一 ...
- ASP.NET Web API身份验证和授权
英语原文地址:http://www.asp.net/web-api/overview/security/authentication-and-authorization-in-aspnet-web-a ...
- .NET6之MiniAPI(九):基于角色的身份验证和授权
身份验证是这样一个过程:由用户提供凭据,然后将其与存储在操作系统.数据库.应用或资源中的凭据进行比较. 在授权过程中,如果凭据匹配,则用户身份验证成功,可执行已向其授权的操作. 授权指判断允许用户执行 ...
- 开源软件加密授权方案_身份验证和授权作为开源解决方案服务
开源软件加密授权方案 通过实施身份验证和授权(a&a)机制为所有用户数据设计集中式服务. 我将分享我的经验并最终确定解决方案的结论. 该设计包括客户端(Web应用程序)和服务器(A&A ...
- 身份验证和授权作为开源解决方案服务
通过实施身份验证和授权(a&a)机制为所有用户数据设计集中式服务. 我将分享我的经验并最终确定解决方案的结论. 该设计包括客户端(Web应用程序)和服务器(A&A中心). 术语: 1. ...
- 使用JWT的ASP.NET CORE令牌身份验证和授权(无Cookie)——第2部分
目录 介绍 用户角色 如何创建自定义授权特性? AuthorizeAttribute AuthorizeFilter 如何在控制器和操作方法级别设置权限? 检查用户权限的扩展方法 如何在操作方法(内联 ...
- 使用JWT的ASP.NET CORE令牌身份验证和授权(无Cookie)——第1部分
目录 介绍 JWT(JSON Web令牌) ASP.NET Core中的JWToken配置 用户模型类 创建令牌 第1步 第2步 第4步 令牌存储 中间件 自定义中间件app.Use() 中间件app ...
- security工作笔记004---.NET Web安全性-身份验证和授权(一)之Principal
JAVA技术交流QQ群:170933152 1.概述 为了确保应用程序的安全,安全性有几个重要方面需要考虑.一是应用程序的用户,访问应用程序的是一个真正的用户,还是伪装成用户的某个人?如何确定这个用户 ...
- 使用kubectl访问Kubernetes集群时的身份验证和授权
全栈工程师开发手册 (作者:栾鹏) 架构系列文章 kubectl是日常访问和管理Kubernetes集群最为常用的工具. 当我们使用kubeadm成功引导启动(init)一个Kubernetes集群的 ...
最新文章
- Java学习笔记12
- rust面向对象_面向初学者的Rust操作员综合教程
- 全自动洗衣机单片机c语言程序,全自动洗衣机单片机程序
- HDU5985 Lucky Conins 概率题
- Linux查看和控制进程
- 杜洋单片机C语言编程组成,8051单片机C语言编程模板
- ElasticSearch启动报错at least one of [discovery.seed_hosts, discovery.seed_provid---ElasticSearch工作笔记032
- sql between的用法的意思_SQL 语法手册来啦,你想要的这里都有!
- linux控制windows关机
- 西威变频器使用说明书_西威变频器说明书
- php敏感代码屏蔽,PHP敏感词汇屏蔽或替换
- 推挽输出和开漏输出详解
- 虚拟机配置--网络、MySQL数据库、JDK环境变量
- c语言 sin1怎么写,c语言sin30怎么写
- 微信小程序 保存base64图片和普通图片
- 将小写人民币转换成大写
- 印象笔记 for Mac(Evernote mac)
- Golang之NSQ
- java.lang.OutOfMemoryError: GC overhead limit exceeded解决办法
- Intel® Xeon® Processor Scalable Family Technical Overview(转译)