ldap配置系列二:jenkins集成ldap

jenkins简介

jenkins是一个独立的、开放源码的自动化服务器,它可以用于自动化与构建、测试、交付或部署软件相关的各种任务。

jenkins官方文档: https://jenkins.io/doc/

jenkins安装

jenkins下载地址: https://jenkins.io/download/

# jdk1.8下载
[root@VM_0_15_centos local]# wget http://download.linuxpanda.tech/java/jdk-8u172-linux-x64.tar.gz
[root@VM_0_15_centos local]# tar xf jdk-8u172-linux-x64.tar.gz
[root@VM_0_15_centos local]# cd jdk1..0_172/ # jenkins安装
[root@VM_0_15_centos local]# yum install https://pkg.jenkins.io/redhat/jenkins-2.141-1.1.noarch.rpm # 配置修改
[root@VM_0_15_centos ~]# vim /etc/sysconfig/jenkins
JENKINS_JAVA_CMD="/usr/local/jdk1.8.0_172/bin/java"
# 防火墙放行
[root@VM_0_15_centos ~]# firewall-cmd --permanent --add-port=/tcp
[root@VM_0_15_centos ~]# firewall-cmd --reload
# 重启jenkins
[root@VM_0_15_centos ~]# systemctl restart jenkins
[root@VM_0_15_centos ~]# systemctl status jenkins
[root@VM_0_15_centos ~]# netstat -tunlp |grep # 访问对应的外网
# jenkins.linuxpanda.tech: 安装必要的插件。

注意: 我在我的centos7服务器上面直接yum install jenkins是有问题,访问不了,yum install 特定的rpm包就可以了。 暂时不知道哪里的情况。

安装完毕后的主页为 :

ldap准备

如果没有ldap服务器,可以参考 https://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_liunx_52_ldap.html , 这里我使用ldapadmin.exe 这个小软件去管理ldap。

添加jenkins相关的测试账户和组

  1. group这个ou下面创建一个jenkins的ou。
  2. 在jenkins这个ou里面创建3个组,名为jenkins-admins,jenkins-editors,jenkins-users。
  3. 在ou=people下面创建4个账户,名为admin,test01,test02,test03,配置好邮箱和密码。
  4. 在三个组上面添加对应的用户, jenkins-admins组添加admin,test01用户, jenkins-editors组添加test02用户,jenkins-users组添加test03用户。

最终的组织图如下:

jenkins集成ldap的配置

选择【jenkins】 -> 【系统管理】-> 【全局安全设置】

配置ldap为如下

注意: 我上面的密码admin测试使用的密码为oracle。

关于ldap查询使用

# 查询所有用户
[root@VM_0_15_centos ~]# ldapsearch -LLL -w oracle -x -H ldap://ldap.linuxpanda.tech:389 -D"cn=admin,dc=linuxpanda,dc=tech" -b "ou=people,dc=linuxpanda,dc=tech"
# 查询特定用户
[root@VM_0_15_centos ~]# ldapsearch -LLL -w oracle -x -H ldap://ldap.linuxpanda.tech:389 -D"cn=admin,dc=linuxpanda,dc=tech" -b "ou=people,dc=linuxpanda,dc=tech" "uid=test01"
dn: uid=test01,ou=people,dc=linuxpanda,dc=tech
objectClass: posixAccount
objectClass: top
objectClass: inetOrgPerson
gidNumber:
givenName: test01
sn: test01
displayName:: 5rWL6K+VMQ==
uid: test01
homeDirectory: /home/test01
loginShell: /bin/bash
mail: test01@linuxpanda.tech
cn:: 5rWL6K+VMQ==
uidNumber:
userPassword:: e1NIQX1ReE5rdGtVUHhIek52Mm9pQmQvYkc2NjNsQkk9 # 组查询
[root@VM_0_15_centos ~]# ldapsearch -LLL -w oracle -x -H ldap://ldap.linuxpanda.tech:389 -D"cn=admin,dc=linuxpanda,dc=tech" -b "ou=jenkins,ou=group,dc=linuxpanda,dc=tech" # 获取对应的组
[root@VM_0_15_centos ~]# ldapsearch -LLL -w oracle -x -H ldap://ldap.linuxpanda.tech:389 -D"cn=admin,dc=linuxpanda,dc=tech" -b "ou=jenkins,ou=group,dc=linuxpanda,dc=tech" "(& (cn=jenkins-admins) (| (objectclass=groupOfNames) (objectclass=groupOfUniqueNames) (objectclass=posixGroup)))"
dn: cn=jenkins-admins,ou=jenkins,ou=group,dc=linuxpanda,dc=tech
objectClass: posixGroup
objectClass: top
cn: jenkins-admins
memberUid: test01
memberUid: admin
gidNumber:

ldap配置完毕了, 还是在说说ldap配合jenkins里面的用户权限和权限分配的事情吧, 不然只是ldap集成到jenkins也没有啥用啊,哈哈。

jenkins和ldap如何解决用户权限和授权问题

这个采用全局项目安全矩阵+项目安全矩阵+ldap认证组合来实现复杂的权限管理。

jenkins里面安装完毕默认推荐的插件后,提供有5种类授权策略:

  1. 任何用户可以做任何事(没有任何限制)
  2. 安全矩阵
  3. 登录用户可以做任何事
  4. 遗留模式
  5. 项目矩阵授权策略

我们选择项目矩阵授权策略,具体操作步骤: 选择【jenkins】 -> 【系统管理】-> 【全局安全设置 】,选择项目矩阵授权策略。

然后在全局的安全设置页面给我们的三个组添加进去,并配置下各个组的权限。

配置如下图的权限设置

这是一个全局的配置,特定组只能按照最小的权限授权,额外的权限可以在具体的项目权限矩阵里面在添加。

如果用户在ldap里面添加到jenkins-admins这个组,就是拥有所有的权限了,这个组一般只能运维人员和部门老大加入。

如果用户在ldap里面添加到了jenkins-editors这个组,就拥有上图勾选的权限,这个组的成员可以完成jenkins配置项的修改。这个组一般不对任何人开放,可能给前段或者后端的开发老大开下。

如果用户在ldap里面添加到了jenkins-users这个组,就拥有了read权限,这个read是jenkins里面的很基础的权限,没有这个权限就登不进jenkins的,这个组一般是开发人员加入。

上面只是一个全局层面的一个权限设置, 对于一个开发人员来说, 他能发布的项目只能是他负责的项目的,这个时候还是需要在具体的jenkins项目配置里面开启项目安全这个选项,并添加特定的具体的开发到这个列表里面,并授予权限。

这样就可以详细给用户授权了。

ldap配置系列二:jenkins集成ldap的更多相关文章

  1. ldap配置系列三:grafana集成ldap

    ldap配置系列三:grafana集成ldap grafana的简介 grafana是一个类似kibana的东西,是对来自各种数据源的数据进行实时展示的平台,拥有这牛逼的外观.给一个官方的demo体验 ...

  2. ldap配置系列一:ldap的安装

    ldap的安装 ldap的简介 LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP.它是基于X.500标准的,但是简 ...

  3. ASP.Net Core2.1中的HttpClientFactory系列二:集成Polly处理瞬态故障

    前言:最近,同事在工作中遇到了使用HttpClient,有些请求超时的问题,辅导员让我下去调研一下,HttpClinet的使用方式已经改成了之前博客中提到的方式,问题的原因我已经找到了,就是因为使用了 ...

  4. MP实战系列(二)之集成swagger

    其实与spring+springmvc+mybatis集成swagger没什么区别,只是之前写的太不好了,所以这次决定详细写. 提到swagger不得不提rest,rest是一种架构风格,里面有对不同 ...

  5. MongoDB副本集配置系列二:配置MongoDB副本集

    接上一篇博客: http://www.cnblogs.com/xiaoit/p/4479066.html 1:首先创建3台虚拟机作为配置环境 IP1:192.168.91.128 IP2:192.16 ...

  6. 机器学习环境配置系列二之cuDNN

    1.下载cuDNN 前往: NVIDIA cuDNN home page. 进入下载 勾选Nvidia的协议复选框(流氓的选择,不勾选不能下载) 选择与安装的cuda版本一致的cudnn进行下载. 2 ...

  7. LDAP落地实战(四):Jenkins集成OpenLDAP认证

    前几篇分文章分别介绍了OpenLDAP的部署管理和维护以及svn.git的接入,今天我们再下一城接入jenkins. 前情提要:LDAP系列文章 LDAP落地实战(一):OpenLDAP部署及管理维护 ...

  8. Linux下ipv6配置系列

    Linux下ipv6配置系列一:如何配置Linux系统ipv6环境 Linux下ipv6配置系列二:如何为Nginx添加ipv6模块 Linux下ipv6配置系列三:如何为Nginx配置IPv6端口监 ...

  9. Jenkins持续集成企业实战系列之Jenkins插件下载及邮件配置-----05

    注:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.    最初接触Jenkins也是由于公司需求,根据公司需求Java代码项目升级的.(公司是 ...

随机推荐

  1. 用clumsy模拟丢包测试socket库的失败重传

    用python的socket库写了通信小程序,现在我需要通过软件模拟出在网络极差的情况下,socket底层解决丢包问题的能力怎么样,我一开始想的是分别在linux和windowns下分别测试,后来一想 ...

  2. history.back(-1) 和history.go(-1) 有什么区别?

    history.back(-1) 返回上一页,当前页面的数据都没有保存下来.就像当前也没有出现过一样. history.go(-1)    返回上一页,当前页的内容都保存下来了,包括session,等 ...

  3. AES加密算法详解

    AES 是一个对称密码分组算法,分组长度为128bit,密钥长度为128.192 和 256 bit. 整个加密过程如下图所示. 1.密钥生成算法 密钥扩展过程: 1)  将种子密钥按下图所示的格式排 ...

  4. myeclipse中的HTML页面在浏览器中显示为乱码

    myeclipse中的HTML页面在浏览器中显示为乱码 在通过myeclipse开发项目的过程中,如果用HTML页面书写前端,可能出现中文乱码现象,需要怎么解决呢?下面是我从网上搜的方法: 解决办法: ...

  5. 等高布局display:table

    display:table用法: 父元素:display:table; 子元素:display:table-cell; 注:使用display:table-cell元素部分出现空白缝隙的问题:设置 . ...

  6. 在Centos中安装mysql

    下载mysql 这里是通过安装Yum源rpm包的方式安装,所以第一步是先下载rpm包 1.打开Mysql官网 https://www.mysql.com/, 点击如图选中的按钮 点击如图框选的按钮 把 ...

  7. 4.27Linux(5)

    2019-4-27 15:39:03 学了Linux好几天,发现Linux用着还是很爽 你一定要知道你要干啥!!!! 列一下参考博客: mysql博客地址:https://www.cnblogs.co ...

  8. Python3小知识点

    1. 是转义字符,\可以输出.在一行的末尾单独的一个\表示这行没有结束,下一行接着写 2.可以用"'或"""把一大段话引起来(可以换行)然后赋值,输出. 3.要 ...

  9. idea maven cannot resolve symbol http报错问题解决

    学习SpringMVC的过程中,在idea中使用maven管理依赖.在class中使用 javax.servlet.http.HttpServletRequest的时候,报错:cannot resol ...

  10. Hadoop源码分析(3): Hadoop的运行痕迹

    在使用hadoop的时候,可能遇到各种各样的问题,然而由于hadoop的运行机制比较复杂,因而出现了问题的时候比较难于发现问题. 本文欲通过某种方式跟踪Hadoop的运行痕迹,方便出现问题的时候可以通 ...