zoukankan      html  css  js  c++  java
  • Jenkins权限设计错误解决办法

    https://www.cnblogs.com/yangxia-test/p/4368778.html
    
    https://blog.csdn.net/xlyrh/article/details/51384837       Jenkins的授权和访问控制
    
    报错:
    
    提示hudson.security.AccessDeniedException
    
    解决:
    
    修改Jenkins_home/config.xml文件
    
    
    <useSecurity>true</useSecurity>
      <authorizationStrategy class="hudson.security.AuthorizationStrategy$Unsecured"/>
      <securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
        <disableSignup>true</disableSignup>
        <enableCaptcha>false</enableCaptcha>
      </securityRealm>
    
    
    重新启动Jenkins (必须)
    
    
    
    
    Jenkins学习七:Jenkins的授权和访问控制
    
    默认的Jenkins不包含任何的安全检查,任何人可以修改Jenkins设置,job和启动build等。显然地在大规模的公司需要多个部门一起协调工作的时候,没有任何安全检查会带来很多的问题。 在系统管理-Configure Global Security页面可以“访问控制”进行相应的设置。如下图:
    
    
    Jenkins的权限配置文件存放在JENKINS_HOME目录。进入JENKINS_HOME目录,找到config.xml文件。打开config.xml,里面有一堆的东西,找找。。。找到了<useSecurity>和<authorizationStrategy>节点。<useSecurity>节点代表是否使用用户权限,<authorizationStrategy>节点代表用户权限是怎么划分的。
    
    1) Security Realm,用来决定用户名和密码,且指定用户属于哪个组;
    2) Authorization Strategy,用来决定用户对那些资源有访问权限;
    
    
    一、详细讲解4种授权策略
    1、任何用户可以做任何事(没有任何限制)
    
    1)页面设置如下图:
    
    
    
    2)config.xml脚本如下:
    
    
    <useSecurity>true</useSecurity>
      <authorizationStrategy class="hudson.security.AuthorizationStrategy$Unsecured"/>
      <securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
        <disableSignup>true</disableSignup>
        <enableCaptcha>false</enableCaptcha>
      </securityRealm>
    
    
    
    2、登录用户可以做任何事
    
    1)页面设置如下图:
    
    
    2)config.xml脚本如下:
    
    
     <useSecurity>true</useSecurity>
      <authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy"/>
      <securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
        <disableSignup>false</disableSignup>
        <enableCaptcha>false</enableCaptcha>
      </securityRealm>
    
    
    
    3、安全矩阵
    
    1)页面设置如下图:
    
    2)config.xml脚本如下:
    
    
     <useSecurity>true</useSecurity>
      <authorizationStrategy class="hudson.security.GlobalMatrixAuthorizationStrategy">
        <permission>hudson.model.Hudson.Administer:jenkins</permission>
        <permission>hudson.model.Hudson.Read:anonymous</permission>
        <permission>hudson.model.Hudson.Read:dev</permission>
        <permission>hudson.model.Item.Build:dev</permission>
        <permission>hudson.model.Item.Read:anonymous</permission>
        <permission>hudson.model.Item.Read:dev</permission>
      </authorizationStrategy>
      <securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
        <disableSignup>false</disableSignup>
        <enableCaptcha>false</enableCaptcha>
      </securityRealm>
    
    
    设置好权限之后,点击注册,注册相应的账号,如上图的dev,jenkins。
    
    
    
    
    4、项目矩阵授权策略
    
    说明:安全矩阵和项目矩阵授权策略的配置是一模一样的,唯一的区别是项目矩阵授权策略支持在Job的配置页面再次配置授权策略。
    
    这种策略在工作中用得较多,比如针对不同的项目选择不同的用户具有不同权限。
    
    1)页面设置如下图:
    
    
    各种权限如下(在配置页面将鼠标放到该权限上即可查看帮助):
    
    其中有一些比较特别的权限:
    
    最大的权限是Overall的Administer,拥有该权限可以干任何事情。
    
    最基本的权限是Overall的Read,用户必须赋予阅读的权限,不然什么都看不到。
    
    Job的Discover权限是一个奇葩的权限,帮助说Discover比Read的级别更低。如果匿名用户(没有访问job的权限)直接访问一个Job的Url将重定向到登陆页面。(经测试,这个权限应该是被废弃了。)
    
    Credentials的ManageDomains这个权限没有看懂干嘛的,有懂的大家一起交流哈!
    
    ps:如果有个用户被赋予了Overall的Read,并没有被赋予Job的Read权限,那么该用户就无法访问job。原因:没有权限。
    
    
    
    2)config.xml脚本如下:
    
    
    <useSecurity>true</useSecurity>
      <authorizationStrategy class="hudson.security.ProjectMatrixAuthorizationStrategy">
        <permission>hudson.model.Hudson.Administer:admin</permission>
        <permission>hudson.model.Hudson.Read:anonymous</permission>
        <permission>hudson.model.Item.Build:dev</permission>
        <permission>hudson.model.Item.Read:anonymous</permission>
        <permission>hudson.model.Item.Read:dev</permission>
      </authorizationStrategy>
      <securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
        <disableSignup>false</disableSignup>
        <enableCaptcha>false</enableCaptcha>
      </securityRealm>
    
    
    
    3)每个用户后都有1-2个图标,第一个是反选功能(删除当前已选择的权限,选择其他所有权限),第二个是删除功能(删除该用户)
    
    
    4)在Job中配置项目安全,如下图:
    
    
    二、遇到的问题
    由于授权出错,导致无法登录,具体可参考http://www.cnblogs.com/yangxia-test/p/4363566.html操作。
    
    ?
    最后给大家说说在配置文件里面怎么辨别使用是哪种权限控制模式
    
    <authorizationStrategy>节点上有个class属性,这个属性控制着使用那种授权模式。
    
    ?
    
    hudson.security.FullControlOnceLoggedInAuthorizationStrategy    登录用户可以做任何事
    hudson.security.ProjectMatrixAuthorizationStrategy    项目矩阵授权策略
    hudson.security.GlobalMatrixAuthorizationStrategy    安全矩阵
    hudson.security.LegacyAuthorizationStrategy    遗留模式
  • 相关阅读:
    js 获取两个日期相差的天数--自定义方法
    C# Dictionary类型转json方法之一
    C# Obsolete(已弃用方法属性)
    css 样式计算器
    edge 浏览器自动识别电话号码解问题解决方法
    js 中止程序继续进行(break continue return throw)
    js根据等号(=)前名称获取参数值
    JS 时间格式为/Date(1332919782070)/ 转化为正常的格式
    input 内容发生改变时触发事件
    自我介绍for软件工程课程
  • 原文地址:https://www.cnblogs.com/effortsing/p/10013415.html
Copyright © 2011-2022 走看看