在默认配置下,Jenkins是没有安全检查的。任何人都可以以匿名用户身份进入Jenkins,设置Jenkins和Job,执行build操作。但是,Jenkins在大多数应用中,尤其是暴露在互联网的应用中,安全控制是非常重要的。安全控制主要解决两个问题:哪些用户可以进入Jenkins;进入Jenkins的用户可以做些什么事。

Jenkins提供了用户认证和权限控制两种维度的安全策略:

1) Security Realm(安全域):决定用户名和密码,且指定用户属于的组。

2) Authorization Strategy(授权策略):分配用户执行某些操作的权限。

通过Manage Jenkins->Configure Global Security->Enable security,就可以进入Jenkins安全控制界面,如下图所示:

1 Security Realm

1.1 Delegate to servlet container

如果你的Jenkins运行在像Tomcat和GlassFish等服务器上,这些服务器本身就有安装控制,选择这种安全策略,就可以非常简单地让服务器接管Jenkins的安全控制问题。

1.2 Jenkins's own user database

Jenkins本身有个数据库来管理用户,不过这个数据库的容量比较小,当有大量用户时,这种策略就不合适。在这种策略下,如果允许任何人通过注册的形式Jenkins的话,可以勾上"Allow user to sign up"。这样非用户在进入Jenkins界面后,可以通过点击右上角的”sign up“先注册,然后再登陆使用Jenkins。如果不允许他人随便注册和使用该Jenkins,就要取消"Allow user to sign up"复选框。此时如果想添加新的用户,只能由已注册用户通过Manage Jenkins-> Manage Users进入User Database界面,点击Create User来注册新的用户。注册新用户界面如下图所示:

1.3 LDAP

很多组织用LDAP目录来管理用户,Jenkins也是支持这种安全策略的,不过需要进行一些参数的配置,配置方法可以参考LDAP Plugin Wiki。如果没有特殊要求,大部分的高级设置都可以空着。

1.4 Unix user/group database

如果Jenkins安装在Unix机器上,可以将Unix机器上的用户和组应用到Jenkins。登陆Jenkins,只需要输入Unix的用户名和密码就可以。

2 Authorization Strategy

2.1 Anyone can do anything

这种是最简单,同时也是最不安全的授权策略,任何人都可以对Jenkins进行任何操作。

2.2 Legacy mode

这种策略比较极端:admin用户拥有系统的所有权限,其他所有用户(包括anonymous)只有只读权限。

2.3 Logged-in users can do anything

这种策略相对于”Anyone can do anything“要好一点,只有登陆Jenkins的用户,才有进行所有操作的权限。

2.4 Matrix-based security

Jenkins安装以后,会有一个anonymous用户,通过该匿名用户进入系统后,创建一个administrator,分配它系统所有的权限,同时限制anonymous用户的权限。如下图所示:

然后以administrator身份登录Jenkins,通过他根据需要给其他用户分配权限,从而实现权限的集中控制。

2.5 Project-based Matrix Authorization Strategy

该策略是将前面Matrix-base安全策略应用到单个project中。Matrix-base中的权限是针对整个系统的,而Project-based是进一步设置用户在每个具体project上的权限。在这种策略下,具体project的configure界面中,会出现”Enable project-based security“复选框,选中后就可以设置用户能够对该project操作的权限。

3 Locked Myself Out

如果权限设置错误,导致自己都无法登陆Jenkins,可以进行如下操作:

1)停止Jenkins;

2)用编辑器打开$JENKINS_HOME中的config.xml;

3)将<useSecurity>true</useSecurity>元素中的true改为false;

4)将<authorizationStrategy>和<securityRealm>元素的内容删掉;

5)启动Jenkins。

这些步骤操作完后,Jenkins又回到最初没有安全检查的状态,任何人都可以进入Jenkins执行任何操作。

如果这种方法还是不成功,可以尝试重命名或者删除config.xml文件.

Jenkins的安全控制的更多相关文章

  1. Jenkins分布式构建与并行构建

    Jenkins分布式构建与并行构建 jenkins的架构 Jenkins采用的是"master+agent(slave)"架构.Jenkins master负责提供界面.处理HTT ...

  2. Jenkins分布式与并行

    目录 一.简介 二.agent 通过JNLP协议增加agent 通过Swarm插件增加agent agent部分详解 三.agent放入Docker 使用Docker 配置Docker私有仓库 四.并 ...

  3. Jenkins 安装的HTML Publisher Plugin 插件无法展示ant生成的JunitReport报告

    最近在做基于jenkins ant  junit 的测试持续集成,单独ant junit生成的junitreport报告打开正常,使用Jenkins的HTML Publisher Plugin 插件无 ...

  4. Python-Jenkins API使用 —— 在后端代码中操控Jenkins

    最近在工作中需要用到在后台代码中触发Jenkins任务的构建,于是想到Jenkins是否有一些已经封装好的API类库提供,用于处理跟Jenkins相关的操作.下面就简单介绍下我的发现. Linux C ...

  5. 在centos7上安装Jenkins

    在centos7上安装Jenkins 安装 添加yum repos,然后安装 sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins ...

  6. 项目持续集成环境(jenkins + SVN + maven + tomcat)

    整体流程 每次SVN上代码有变动,触发自动构建动作,并部署到服务器的tomcat上,具体流程: 1.SVN上提交代码修改 2.maven执行Goals 3.将web工程打成war包 4.关闭服务器的t ...

  7. Jenkins的一个bug-同时build一个项目两次导致失败

    我们有一个job A, A只是配置了一些参数,它会去触发模板job B. 我一开始点击构建A, 马上发现参数配置不对,于是撤消了构建,但是我没有发现B已经被触发,我重新配置参数,然后再次构建A,这个时 ...

  8. 使用Jenkins配置Git+Maven的自动化构建

    Jenkins是一个开源的持续集成工具,应用Jenkins搭建持续集成环境,可以进行自动构建.自动编译和部署,非常方便. 在服务器比较少的情况下,Jenkins的优势并不明显,但是随着项目发展,服务器 ...

  9. Jenkins配置MSBuild实现自动部署(MSBuild+SVN/Subversion+FTP+BAT)

    所要用到的主要插件: [MSBuild Plugin] 具体操作: 1.配置MSBuild的版本 [系统管理]->[Global Tool Configuration]->[MSBuild ...

随机推荐

  1. logstash grok 解析Nginx

    log_format main '$remote_addr [$time_local] "$request" ' '$request_body $status $body_byte ...

  2. 2015第9周三html5学习0

    ​  之前规划了2015关注的技术方向是html5和node.js,虽然前面也搜集过html5相关的评论介绍性能容,但对如何学习和有哪些可利用要经常的看的资源有明显的界定,刚上网搜索了半个多小时,对结 ...

  3. OpenCV MFC 模块间通信

    1. 新建MFC项目 点击完成. 2. 添加按钮 在"工具箱"中找到"Button"控件,添加至界面:  2. 配置opencv, 添加colordetecto ...

  4. libev事件库学习笔记

    一.libev库的安装 因为个人的学习环境是在ubuntu 12.04上进行的,所以本节仅介绍该OS下的安装步骤. 使用系统工具自动化安装: sudo apt-get install libev-de ...

  5. 武道释义 &#183; 零散

    若是你防御你的左边.你的右边必定是弱点: 若是你防御你的前面,你的后面必定是弱点. 若是你处处小心防御,则必定处处都是弱点." 有些武术尽管先声夺人.但却如喝渗水之酒,令人越瞧越觉无味: 但 ...

  6. stagefright框架(四)-Video Buffer传输流程

    這篇文章將介紹Stagefright中是如何和OMX video decoder传送buffer. (1) OMXCodec會在一開始的時候透過read函式來傳送未解碼的data給decoder,並且 ...

  7. 关于.netFramework概述

    这几天学了不少东西,想来还是应该总结一下,一来自己回顾一下,二来也怕自己忘记,在文章中,有很多东西就是借鉴别人的blog,笔者在这里对他们的无私奉献表示感谢.笔者的语言组织能力有限,如果在文章中出现什 ...

  8. 自定义view(自定义view的时候,三个构造函数各自的作用)

    package com.timeshare.tmband.Utils; import android.content.Context; import android.content.res.Typed ...

  9. 随学随记之java的数据类型

    Java中的变量只有两种数据类型:基本数据类型(8种).引用数据类型 定义变量时内存中的状态变化:定义数据类型,开辟空间,存放数据. 8种基本数据类型的变量各占多大的内存空间,变量的取值范围 byte ...

  10. React-Native 获取node.js提供的接口

    一个简单的React-Native 获取node.js提供的接口的实现 一.node.js var http = require("http"); var url = requir ...