一、用户权限管理
我们可以利用Role-based Authorization Strategy 插件来管理Jenkins用户权限
1.1、安装Role-based Authorization Strategy插件
1.2、开启权限全局安全配置
Manage Jenkins-------->Configure Global Security-------->授权策略切换为"Role-Based Strategy",保存
1.3、创建角色
Manage Jenkins--------->Manage and Assign Roles
Manage Role ,进行管理角色,添加角色,或者修改角色权限
角色介绍:
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 添加
为baseRole 添加全局可读权限(将baseRole行的Overall 栏下的Read栏勾选)
添加第一个项目角色,为角色匹配项目(正则匹配),表明该角色在那些项目拥有权限
为项目角色勾选权限
保存
1.4、创建用户
Manage Jenkins ------->Manage Uers
点击Create User , 创建角色
创建用户
1.5、给用户分配角色
Manage Jenkins ----->Manage and Assign Roles -------> Assign Roles,开始角色分配
将用户Tom 和 Jerry 加入到全局角色分配列表中
为Tom 和Jerry 分配全局角色,baseRole
将Tom 和Jerry 用户加入到 项目角色分配列表中
为Tom 和Jerry 分配全局角色,baseRole
为Tom 和Jerry 分配项目角色.Tom 和Role1 绑定, Jerry 和 Role2绑定.这样,
Tom用户只能查看到 apple 开头的项目
Jerry用户只能查看到orange开头的项目
1.6、创建项目测试权限
分别使用不同用户登录,
Tom 用户登录只能看到 huawei01项目
Jerry用户登录只能看到zhongxing01项目
二、凭证管理
凭据可以用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等,以便
Jenkins可以和这些第三方的应用进行交互。
Jenkins的素材来自于gitlab,那么Jenkins是如何获取到gitlab的数据呢?其实也是通过本地git复制远程gitlab 的方式.整个过程如下:
开发人员将代码推送到本地git 然后和远端的gitlab服务器复制,这样远端的gitlab服务器就获取到了开发人员本地的git数据
然后,Jenkins服务器的本地git 复制远端gitlab服务器的数据,通过git插件推送给Jenkins服务
2.1、安装Credentials Binding插件
要在Jenkins使用凭证管理功能,需要安装Credentials Binding插件
Manage Jenkins----->Manage Credentials 和 凭据配置(如果没有,重新安装插件并重启)
2.2、安装git插件和git工具
Jenkins安装Git插件
Jenkins服务器安装Git工具
yum -y install git
git --version #安装后查看git版本
2.3、Jenkins 的5种凭证类型
Manage Jenkins ----->Manage Credentials----->点击global的下拉菜单,添加凭据
或者(global)-------->在点击Add Credentials
可以添加的凭证有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
②、测试凭证是否可用
创建一个 FreeStyle 项目
New Item —>FreeStyle Project—>确定
添加凭证后就不会报错了
Build Now ,开始构建项目
查看/var/lib/jenkins/workspace/目录,发现已经从Gitlab成功拉取了代码到Jenkins中。(在Jenkins服务器上查看)
2.5、SSH 密钥类型
①、SSH免密登录示意图
在Jenkins服务器上,使用root用户生成密钥对
ssh-keygen -t rsa
ls /root/.ssh/
#id_rsa:私钥文件
#id_rsa.pub:公钥文件
②、把生成的公钥放在Gitlab中
以root账户登录gitlab—>点击头像—>Settings->SSH Keys
③、在生成密钥对的Jenkins服务器上,复制公钥内容
④、在Gitlab上,粘贴公钥内容
⑤、在Jenkins中添加凭证,配置私钥
Manage Jenkins —> Manage Credentails —>global —>Add Credentials
⑥、在Jenkins服务器上复制私钥
cat /root/.ssh/id_rsa
2.6、测试凭证是否可用
新建"test02"项目->源码管理->Git,这次要使用Gitlab的SSH连接,并且选择SSH凭证
同样尝试构建项目,如果代码可以正常拉取,代表凭证配置成功!
同样,在/var/lib/jenkins/workspace下也可以看到test02的项目