Jenkins基础:使用Groovy脚本取消CSRF设定

这篇文章介绍一下如何使用Groovy脚本取消CSRF设定,并结合Jenkins 2.176.1进行验证。

CSRF介绍与设定脚本

CSRF设定的Groovy脚本及其验证说明可参看:CSRF概要与设定方法

验证环境

验证所使用的docker-compose文件如下所示:

liumiaocn:jenkins liumiao$ cat docker-compose.yml 
version: '2'

services:
  # jenkins service based on Jenkins LTS version
  jenkins:
    image: liumiaocn/jenkins:2.176.1
    ports:
      - "32002:8080"
      - "50000:50000"
    environment:
      - JENKINS_ADMIN_ID=root
      - JENKINS_ADMIN_PW=liumiaocn
      - JENKINS_MODE=master
    volumes:
      - ./data/:/data/jenkins
      - /var/run/docker.sock:/var/run/docker.sock
    restart: "no"
liumiaocn:jenkins liumiao$

使用dockerc-ompose启动Jenkins服务,使用如下命令即可

liumiaocn:jenkins liumiao$ docker-compose up -d
Creating network "jenkins_default" with the default driver
Creating jenkins_jenkins_1 ... done
liumiaocn:jenkins liumiao$ 

关闭Plugin更新窗口,点击开始使用Jenkins,进入到Jenkins的全局安全设定,当前状态如下所示:
在这里插入图片描述

取消CSRF设定的groovy脚本

import hudson.security.csrf.DefaultCrumbIssuer
import jenkins.model.Jenkins

def jenkins = Jenkins.instance;
jenkins.setCrumbIssuer(null); 
jenkins.save();

生效方式

生效方式主要有两种,

  • 方法1: 镜像生成阶段
    在镜像生成阶段将上述groovy的代码文件拷贝至/usr/share/jenkins/ref/init.groovy.d/目录下,然后运行Jenkins容器的时候此文件即会被运行

  • 方法2: 容器运行阶段
    镜像生成阶段的目录在容器生成的时候,/usr/share/jenkins/ref/init.groovy.d/下的文件作为Jenkins初始化阶段会被执行的脚本,会被拷贝至JENKINS_HOME下的init.groovy.d文件夹中并执行。

结果验证

这里使用方法2,在Jenkins已经启动的镜像中,通过拷贝groovy代码文件到JENKINS_HOME下的init.groovy.d文件夹,重启Jenkins服务来达到设定的目的

拷贝groovy代码文件

liumiaocn:jenkins liumiao$ docker-compose ps
      Name                     Command               State                         Ports                      
--------------------------------------------------------------------------------------------------------------
jenkins_jenkins_1   /bin/tini -- /usr/local/bi ...   Up      0.0.0.0:50000->50000/tcp, 0.0.0.0:32002->8080/tcp
liumiaocn:jenkins liumiao$ 
liumiaocn:jenkins liumiao$ cat init_csrf_disable.groovy
import hudson.security.csrf.DefaultCrumbIssuer
import jenkins.model.Jenkins

def jenkins = Jenkins.instance;
jenkins.setCrumbIssuer(null); 
jenkins.save();
liumiaocn:jenkins liumiao$ 
liumiaocn:jenkins liumiao$ docker cp init_csrf_disable.groovy jenkins_jenkins_1:/usr/share/jenkins/ref/init.groovy.d/
liumiaocn:jenkins liumiao$

重启Jenkins服务

liumiaocn:jenkins liumiao$ docker-compose restart
Restarting jenkins_jenkins_1 ... done
liumiaocn:jenkins liumiao$

结果确认

重启Jenkins后,可以通过Jenkins的管理界面看到CSRF相关的复选框已经被取消
在这里插入图片描述

发布了920 篇原创文章 · 获赞 1260 · 访问量 389万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览