Jenkins自动化部署-权限管控篇 (六)

随着产品线不断扩大, 工程也越来越多, 几乎每个项目在一个环境上会有两个以上的工程, 后期上百个工程, 而且一个账号可以构建、删除、修改所有的工程。 这种情况下会经常发生误删、误改、误构建的事件,进行权限管控能够大量杜绝这样的事件发生
本例子是当前最新的版本 V2.91, 版本越高功能越完善, 建议使用最新版本部署, 低版本视图功能不完善, 在首页可以看到所有项目的工程, 项目一多就很慢

  • 本例子根据公司人员职责范围进行的权限划分: 测试、开发、运维
    • 测试只能构建非生产环境指定项目的工程
    • 开发只能构建与配置非生产环境指定项目的工程
    • 运维拥有所有权限

权限管控插件: Role-based Authorization Strategy

  • 安装权限管控,进入系统管理页面,点击管理插件, 过滤Role-based Authorization Strategy, 勾选后,直接安装

    image.png

  • 回到系统管理页面, 点击全局安全配置

    image.png

  • 如下图, 授权策略选择Role-Based Strategy, 点击保存

    image.png

  • 回到系统管理页面, 列表中多了一个Manage and Assign Roles, 点击进入该功能页面

    image.png

  • 配置全局角色

全局角色粒度太大,一定要分配置一个Read 权限, 否则无法登陆
job_create: 可以创建工程并且可以对视图进行操作
job_role: 可以对视图进行操作
权限类型:
Overall: 全局
Credentials: 凭证
View: 视图
Job: 任务

image.png
  • 配置Project roles, 一共配置三个角色开发者、测试、运维, 点击Add进行添加

Role to add: 角色名称
Pattern: 正则表达式, 权限控制范围

image.png
  • 三个角色配置完成后:
jenkins-demo-devel-role: jenkins-demo-.*(dev|sit|uat)
jenkins-demo-test-role: jenkins-demo-.*(dev|sit|uat)
jenkins-demo-oper-role: jenkins-demo-.*

JOB(工程)主要权限
Build: 构建
Cancel: 取消构建
Configure: 配置
Delete: 删除
Read: 浏览
Workspace: 工作空间

image.png
  • 点击保存,回到系统管理页面, 点击管理用户

    image.png

  • 点击新建用户, 分别添加三个用户开发者、测试、运维
    jenkins-demo-develjenkins-demo-testjenkins-demo-oper

    image.png

  • 回到系统管理页面, Manage and Assign Roles > Assign Roles

  • 给三个用户分配全局角色

image.png
  • 给三个用户分配工程角色
image.png
  • 点击保存完成配置

  • 测试账号登陆, 只有构建与查看权限,并且看不到生产环境的工程


    image.png
  • 开发账号登陆, 除了生产环境的工程看不到, 其它环境的工程都可以查看,删除,修改和构建


    image.png
  • 运维账号拥有所有环境的权限


    image.png
  • 如果项目庞大, 我们可以通过视图限制, 点击My Views - >新建视图

My Views 里面创建的视图只有当前账户可以看得到, 而首页里新建的视图所有账户都可以看到, 一但项目多起来将毫无意义, 非常的混乱

image.png

我的视图: 只能显示当前账号有权限的工程
简单视图: 可以选择当前账号显示的工程

image.png
  • 选择简单视图, 创建一个开发环境的视图


    image.png
  • 创建完成后只能看到刚才选择的工程, 还有个好处就是可以收藏当前视图的URL地址, 下次可以直接进来, 非常方便


    image.png
  • 如果勾选错了, 导致admin也无法登陆, 可以尝试下面的方法
    • 修改全局角色admin角色, 恢复到原始状态
      • 修改${jenkins_home}/config.xml, 如果用yum 安装直接 vim /var/lib/jenkins/config.xml
      • 找到<roleMap type="globalRoles"> 节点, 把<role name="admin" pattern=".*"> 这个节点全部替换成初始的admin角色权限
image.png
  • 这是admin角色初始的权限
  <role name="admin" pattern=".*">
        <permissions>
          <permission>hudson.model.View.Delete</permission>
          <permission>hudson.model.Computer.Connect</permission>
          <permission>hudson.model.Run.Delete</permission>
          <permission>com.cloudbees.plugins.credentials.CredentialsProvider.ManageDomains</permission>
          <permission>hudson.model.Computer.Create</permission>
          <permission>hudson.model.View.Configure</permission>
          <permission>hudson.model.Computer.Build</permission>
          <permission>hudson.model.Item.Configure</permission>
          <permission>hudson.model.Hudson.Administer</permission>
          <permission>hudson.model.Item.Cancel</permission>
          <permission>hudson.model.Item.Read</permission>
          <permission>com.cloudbees.plugins.credentials.CredentialsProvider.View</permission>
          <permission>hudson.model.Computer.Delete</permission>
          <permission>hudson.model.Item.Build</permission>
          <permission>hudson.scm.SCM.Tag</permission>
          <permission>hudson.model.Item.Move</permission>
          <permission>hudson.model.Item.Discover</permission>
          <permission>hudson.model.Hudson.Read</permission>
          <permission>com.cloudbees.plugins.credentials.CredentialsProvider.Update</permission>
          <permission>hudson.model.Item.Create</permission>
          <permission>hudson.model.Item.Workspace</permission>
          <permission>com.cloudbees.plugins.credentials.CredentialsProvider.Delete</permission>
          <permission>hudson.model.Computer.Provision</permission>
          <permission>hudson.model.Run.Replay</permission>
          <permission>hudson.model.View.Read</permission>
          <permission>hudson.model.View.Create</permission>
          <permission>hudson.model.Item.Delete</permission>
          <permission>hudson.model.Computer.Configure</permission>
          <permission>com.cloudbees.plugins.credentials.CredentialsProvider.Create</permission>
          <permission>hudson.model.Computer.Disconnect</permission>
          <permission>hudson.model.Run.Update</permission>
        </permissions>
        <assignedSIDs>
          <sid>admin</sid>
        </assignedSIDs>
      </role>

推荐阅读更多精彩内容