jenkins用户手册-10-管理之安全管理
来源:互联网 发布:100以内的质数编程 编辑:程序博客网 时间:2024/05/16 15:13
安全管理
从企业内网的工作站到连接入开放网络的高性能服务器都可以使用jenkins。为了安全地支持这么广范围的安全和敏感配置的传播,jenkins提供了很多可供选择的配置选项,来授权,编辑,禁用各种安全特性。
对于jenkins的2.0版,很多安全选项是默认开启的,用来保证jenkins环境安全,除非管理员特意禁用特定的保护功能。
这一节将会介绍各种jenkins管理员可用的安全选项,解释提供的保护,和禁用这些选项的利弊权衡。
Web界面上可用的安全选项允许管理员开启,配置或者禁用关键的适用于jenkins所有环境的安全特性。
全局配置
JNLP TCP Port(JNLP TCP 端口)
Jenkins使用一个TCP 协议端口来和通过JNLP协议启动的agent进行通讯,例如基于windows的agents。Jenkins的2.0版,默认这个端口是禁用的。
对于想要使用基于JNLP 的agents的管理员而言,两个可选的端口是:
1. 随机的:JNLP端口选用随机方式以避免与jenkins属主(master)的冲突。JNLP随机端口的弊端是它们是在Jenkins 属主(master)的引导下选择的,这使得管理防火墙允许JNLP通过变得困难。
2. 固定的: JNLP端口是由jenkins管理员选择的,重启jenkins属主之后是保持不变的。这使得防火墙允许基于JNLP的agents连接属主的规则变得简单。
访问控制
访问控制是防范未授权使用jenkins环境的主要机制。在jenkins中配置访问控制有两方面主要的配置:
1. 一个安全区,它告诉Jenkins环境如何以及在何处使用来拉取用户(或身份)信息表格。也通常成为“身份验证”。
2. 授权配置,它告诉Jenkins环境,用户和/或组可以访问Jenkins的哪些方面,以及什么访问到程度。
在jenkins内,同时使用安全区和授权配置可以配置非常松散或非常严格的鉴定和授权方案。
另外,一些插件,例如基于角色的授权策略插件,可以扩展访问控制能力,来支持细粒度的鉴权和授权方案。
安全领域
默认情况下,jenkins支持包含一些不同的安全领域。
Servlet容器代理
对于运行jenkins属主servlet容器代理-如jetty-来的身份验证。如果使用这个选项,请查阅servlet容器身份验证文档。
Jenkins自带的用户数据库
使用jenkins自带的内置用户数据存储来验证而不是委托给外部系统。这个在jenkins2.0往后的安装版本中是默认开启的,这也适用于更小的环境中。
Ldap
将所有身份验证委托给配置的LDAP服务器,包括用户和组两种。这个选项在更大的安装组织结构中,已经配置了一个外置的身份提供者,例如LDAP.这个也支持动态目录安装。
+++这个特性是ldap插件提供的,可能在你的实例中还没有安装。
Unix用户/组数据库
Jenkins属主上的以基于unix的操作系统级身份验证代理。这个模式将也允许重用unix组来进行身份验证。例如jenkins可以配置诸如“everyone in the developmentpers group has administrator access”。为了支持这个特性,jenkins依赖pam,这可能需要配置jenkins环境之外的内容。
Unix允许用户和组拥有相同的名字。为了消除歧义,使用@符号前缀来强制名字表示为组。例如,@dev将代表dev组,而非dev用户。
插件可以提供额外的安全范围,这可能对于jenkins合并到现有识别系统很有用,例如
.活动目录(https://plugins.jenkins.io/active-directory)
.GitHub身份验证(https://plugins.jenkins.io/github-oauth)
.AtlassianCrowd 2(https://plugins.jenkins.io/crowd2)
身份验证
安全范围,或者身份验证,标志着谁可以访问jenkins环境。另一个难题是授权,标志着他们在jenkins环境中可以访问到什么。默认jenkins支持一些不同的身份验证选项:
。任何人可做任何事情(Anyone can do anything)
每个人都可以获取jenkins的所有控制权,包括没有登录的匿名用户。Jenkins属主上不要使用这个设置。
。继承模式
与jenkins的行为完全相同。换句话说,如果用户有“管理员”(admin)角色,他们讲被授予控制整个系统的所有权限,其他的(包括匿名用户)将只有只读权限。除了本地测试环境的jenkins属主不要使用这个设置。
。登录用户拥有所有权限
这种模式下,每个登录用户获取jenkins的所有控制权。取决于一个高级选项,匿名用户获取jenkins的只读权限,或者没有任何权限。这种模式有助于在采取行动之前强制用户登录,这样就有了对用户行为的审计跟踪。
。基于矩阵的安全配置
这种授权模式允许粒度控制哪个用户或组可以有哪些在jenkins环境的事件的行为(查看下面的截屏)
。基于项目的矩阵授权策略
这种授权模式是对矩阵安全模式的扩展,它允许额外的访问控制列表(ACLs),ACLs是在项目配置界面中为每个项目独立定义的。这允许授予特定的用户或组仅访问特定的项目,而不是jenkins环境中的所有项目。使用基于项目矩阵授权模式的ACLs是附加的,在配置全局安全界面中定义的访问授权定义将与特定于项目的acl相结合
基于矩阵的安全和基于项目的矩阵安全策略是矩阵授权策略插件(MatrixAuthorization Strategy Plugin)(https://plugins.jenkins.io/matrix-auth)提供的。jenkins可能不会自己安装。
对于大部分的jenkins环境,基于矩阵的安全提供了最安全也最灵活的保证,因此这被认为是“成品”环境的起点。
图 1.基于矩阵的安全(Matrix-based security)
上面展示的表格能够得到相当广泛,因为每一个表格表示jenkins核心或插件提供的一项权限。鼠标悬浮到权限的上面讲会展示该权限的更多信息。
表格的每一行表示一个用户或者组(也被成为角色)。这包括特殊的名叫“匿名”和“已认证”的条目。“匿名”的条目表示所有授权给没有被授权的用户访问jenkins环境。然而,“已认证”的可以用于授权给所有认证的用户访问jenkins环境。
在矩阵中授予的权限是叠加的。例如,如果用户kohsuke是在“开发”组角色和“管理员”组角色中,那么实际kohsuke被授予的权限将是授予给kohsuke的权限,“开发组”角色的权限,“管理员”组角色的权限,“匿名”的权限,“已认证”的权限五种权限组的合集。
markup 格式
jenkins允许用户输入一系列不同的配置域和文本域。这可能导致用户无意地或蓄意地插入不安全的html或js代码片段。
默认的markup formatter配置是一组流式文本,这可以避免不安全的字符,例如 ‘<’和“&”各自对应的字符实体。
使用安全的html标记格式化器允许用户和管理员注入有用的和携带信息的html代码片段到项目描述和其他地方。
跨域请求伪造攻击(CSRF )
跨域请求伪造是一种攻击方式,它导致一个未经授权验证的第三方执行请求,使一个应用不能被其他授权的用户正常访问。在jenkins的上下文环境中,CSRF 攻击可以允许一个恶意的执行者,删除项目,修改构建计划,或者更改jenkins系统配置。为了保护对抗这类缺陷,jenkins从2.0版本开始默认开启CSRF配置。
目录中的所有.conf文件中的内容将会被jenkins读取,并且这些内容中已被确认为是安全的命令会合并创建一个新的default.conf文件。创建的default.conf在当前目录下。
每次Jenkins boots启动的时候,default.conf文件将会被覆盖。
- jenkins用户手册-10-管理之安全管理
- Jenkins用户手册-管理插件
- jenkins用户手册-9-管理jenkins
- 安全管理之用户管理
- oracle安全管理之权限管理
- oracle安全管理之角色管理
- 【Jenkins系列之五】Jenins安全管理和权限控制
- Jenkins入门教程之--Jenkins管理
- 系统集成项目管理之信息系统安全管理
- Jenkins之源码管理
- Jenkins之用户管理
- jenkins用户手册-8-使用jenkins
- Jenkins用户手册-安装
- Jenkins用户手册-配置
- jenins用户手册-11-管理之工具
- jenkins源码管理之git
- 3:管理_安全管理
- jenkins用户手册-7-开始使用jenkins
- Reactor模式
- 嵌入式系统开发入门二:C语言的几个注意事项
- iOS安装CocoaPods详细过程--2017最新
- 文章标题
- 天天学Linux命令13--more命令
- jenkins用户手册-10-管理之安全管理
- JVM 语言的兴衰史
- eclipse的常用配置
- selenium webdriver 学习总结-JQuery Selectors(十)
- HTTP协议
- JQuery easyUI datagrid 排序,使用sorter自定义排序
- pymongo 操作集锦
- 多项式求和 HDU-2011
- Hibernate学习笔记—hibernate.cfg.xml剖析