Jenkins用户权限管理、凭证管理

  • 一、用户权限管理
  • 1.1、安装Role-based Authorization Strategy插件
  • 1.2、开启权限全局安全配置
  • 1.3、创建角色
  • 1.4、创建用户
  • 1.5、给用户分配角色
  • 1.6、创建项目测试权限
  • 二、凭证管理
  • 2.1、安装Credentials Binding插件
  • 2.2、安装git插件和git工具
  • 2.3、Jenkins 的5种凭证类型
  • 2.4、创建用户密码类型
  • ①、创建凭证
  • ②、测试凭证是否可用
  • 2.5、SSH 密钥类型
  • ①、SSH免密登录示意图
  • ②、把生成的公钥放在Gitlab中
  • ③、在生成密钥对的Jenkins服务器上,复制公钥内容
  • ④、在Gitlab上,粘贴公钥内容
  • ⑤、在Jenkins中添加凭证,配置私钥
  • ⑥、在Jenkins服务器上复制私钥
  • 2.6、测试凭证是否可用


一、用户权限管理

我们可以利用Role-based Authorization Strategy 插件来管理Jenkins用户权限

1.1、安装Role-based Authorization Strategy插件

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_服务器

1.2、开启权限全局安全配置

Manage Jenkins-------->Configure Global Security-------->授权策略切换为"Role-Based Strategy",保存

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_jenkins_02

1.3、创建角色

Manage Jenkins--------->Manage and Assign Roles

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_jenkins_03


Manage Role ,进行管理角色,添加角色,或者修改角色权限

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_git_04


角色介绍:

Global roles(全局角色):管理员等高级用户可以创建基于全局的角色

Project roles(项目角色): 针对某个或者某些项目的角色 ,在老版本里,项目角色叫做project roles

Slave roles(奴隶角色):节点相关的权限

我们添加以下三个角色

**baseRole:**该角色为全局角色。这个角色需要绑定Overall下面的Read权限,是为了给所有用户绑定最基本的Jenkins问权限注意:如果不给后续用户绑定这个角色,会报错误:用户名 is missing the Overall/Read permission

**role1:**该角色为项目角色。使用正则表达式绑定"apple.*",意思是只能操作huawei开头的项目。

**role2:**该角色也为项目角色。绑定"orange.*",意思是只能操作zhongxing开头的项目。

在管理角色页面的全局角色配置(Global roles) 部分, 在Role to add 栏添加角色.

添加baseRole 角色,点击Add 添加

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_jenkins_05


为baseRole 添加全局可读权限(将baseRole行的Overall 栏下的Read栏勾选)

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_git_06


添加第一个项目角色,为角色匹配项目(正则匹配),表明该角色在那些项目拥有权限

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_服务器_07


为项目角色勾选权限

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_jenkins_08


保存

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_Jenkins_09

1.4、创建用户

Manage Jenkins ------->Manage Uers

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_服务器_10


点击Create User , 创建角色

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_git_11


创建用户

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_运维_12


jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_jenkins_13


jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_git_14

1.5、给用户分配角色

Manage Jenkins ----->Manage and Assign Roles -------> Assign Roles,开始角色分配

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_jenkins_15


jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_服务器_16


将用户Tom 和 Jerry 加入到全局角色分配列表中

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_jenkins_17


jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_运维_18


为Tom 和Jerry 分配全局角色,baseRole

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_运维_19


将Tom 和Jerry 用户加入到 项目角色分配列表中

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_Jenkins_20


jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_Jenkins_21


为Tom 和Jerry 分配全局角色,baseRole

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_Jenkins_22


jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_git_23


为Tom 和Jerry 分配项目角色.Tom 和Role1 绑定, Jerry 和 Role2绑定.这样,

Tom用户只能查看到 apple 开头的项目

Jerry用户只能查看到orange开头的项目

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_服务器_24

1.6、创建项目测试权限

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_Jenkins_25


分别使用不同用户登录,

Tom 用户登录只能看到 huawei01项目

Jerry用户登录只能看到zhongxing01项目

二、凭证管理

凭据可以用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等,以便
Jenkins可以和这些第三方的应用进行交互。

Jenkins的素材来自于gitlab,那么Jenkins是如何获取到gitlab的数据呢?其实也是通过本地git复制远程gitlab 的方式.整个过程如下:

开发人员将代码推送到本地git 然后和远端的gitlab服务器复制,这样远端的gitlab服务器就获取到了开发人员本地的git数据

然后,Jenkins服务器的本地git 复制远端gitlab服务器的数据,通过git插件推送给Jenkins服务

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_jenkins_26

2.1、安装Credentials Binding插件

要在Jenkins使用凭证管理功能,需要安装Credentials Binding插件

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_git_27

Manage Jenkins----->Manage Credentials 和 凭据配置(如果没有,重新安装插件并重启)

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_Jenkins_28

2.2、安装git插件和git工具

Jenkins安装Git插件

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_jenkins_29


Jenkins服务器安装Git工具

yum -y install git

git --version   #安装后查看git版本

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_jenkins_30


jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_jenkins_31

2.3、Jenkins 的5种凭证类型

Manage Jenkins ----->Manage Credentials----->点击global的下拉菜单,添加凭据

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_jenkins_32


或者(global)-------->在点击Add Credentials

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_jenkins_33


jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_git_34


jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_git_35


可以添加的凭证有5种

Username with password:用户名和密码
SSH Username with private key: 使用SSH用户和密钥
Secret file:需要保密的文本文件,使用时Jenkins会将文件复制到一个临时目录中,再将文件路径设置到一个变量中,等构建结束后,所复制的Secret file就会被删除。
Secret text:需要保存的一个加密的文本串,如钉钉机器人或Github的api token
Certificate:通过上传证书文件的方式
常用的凭证类型有:Username with password(用户密码)和SSH Username with private key(SSH密钥)

2.4、创建用户密码类型

①、创建凭证

Jenkins–>Manage Jenkins–>Manage Credentials -->global -->Add Credentials

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_jenkins_36


jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_服务器_37

②、测试凭证是否可用

创建一个 FreeStyle 项目

New Item —>FreeStyle Project—>确定

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_jenkins_38


jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_git_39


jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_运维_40


jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_运维_41


添加凭证后就不会报错了

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_Jenkins_42

Build Now ,开始构建项目

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_服务器_43


jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_服务器_44


查看/var/lib/jenkins/workspace/目录,发现已经从Gitlab成功拉取了代码到Jenkins中。(在Jenkins服务器上查看)

2.5、SSH 密钥类型

①、SSH免密登录示意图

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_服务器_45


在Jenkins服务器上,使用root用户生成密钥对

ssh-keygen -t rsa
ls /root/.ssh/
#id_rsa:私钥文件
#id_rsa.pub:公钥文件

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_Jenkins_46

②、把生成的公钥放在Gitlab中

以root账户登录gitlab—>点击头像—>Settings->SSH Keys

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_服务器_47


jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_jenkins_48

③、在生成密钥对的Jenkins服务器上,复制公钥内容

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_Jenkins_49

④、在Gitlab上,粘贴公钥内容

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_git_50

⑤、在Jenkins中添加凭证,配置私钥

Manage Jenkins —> Manage Credentails —>global —>Add Credentials

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_Jenkins_51


jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_服务器_52

⑥、在Jenkins服务器上复制私钥

cat /root/.ssh/id_rsa

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_服务器_53

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_jenkins_54

2.6、测试凭证是否可用

新建"test02"项目->源码管理->Git,这次要使用Gitlab的SSH连接,并且选择SSH凭证

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_服务器_55


同样尝试构建项目,如果代码可以正常拉取,代表凭证配置成功!

jenkins Manage and Assign Roles 项目权限 不起作用 jenkins用户权限管理_git_56


同样,在/var/lib/jenkins/workspace下也可以看到test02的项目