Jenkins에서 기본적으로 "CSRF 보호"를 비활성화하는 방법

Jenkins에서 기본적으로 "CSRF 보호"를 비활성화하는 방법

기본적으로 활성화되어 있는 Jenkins에서 CSRF 보호를 비활성화해야 합니다. 문제는 컨테이너화 후에 jenkins가 포함된 새 컨테이너를 시작할 때 "유효한 이동 경로 없음" 오류가 발생한다는 것입니다.

현재 이 cmd를 사용하여 젠킨스 애플리케이션을 열고 있습니다.

/usr/bin/java  -server -Djava.net.preferIPv4Stack=true -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration=false  -jar /usr/share/jenkins/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=9090 --ajp13Port=-1

답변1

CSRF를 비활성화하려면 Groovy를 사용하여 "Jenkins 관리"/"스크립트 콘솔"을 엽니다.

import jenkins.model.Jenkins
def instance = Jenkins.instance
instance.setCrumbIssuer(null)

원천:https://stackoverflow.com/a/57869141

답변2

난 그냥 추가

-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true 

따라서 완전한 명령은 다음과 같습니다.

docker run  --restart=always --name jenkins --add-host="xxxx:xx" --add-host="updates.jenkins-ci.org:7.223.199.227" --add-host="updates.jenkins.org:7.223.199.227"  -u root  -d -p 8080:8080 -p 50000:50000  -v /root/jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock   -e JAVA_OPTS="-Duser.timezone=Asia/Shanghai -Dhudson.model.DownloadService.noSignatureCheck=true -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true"  docker.io/jenkins/jenkins:lts

여기에 이미지 설명을 입력하세요.

답변3

"교차 사이트 요청 위조 방지" 매개변수를 선택 취소한 후 @hoefling에 추가되었습니다. 구하다.

"Jenkins 관리"로 이동하여 "디스크에서 구성 다시 로드"를 클릭합니다.

답변4

사용 사례에 대해 100% 확신할 수는 없지만 항상 Docker를 사용하여 새 Docker 이미지를 만들고 Dockerfile해당 이미지를 실행할 수 있는 옵션이 있습니다. 에서는 Dockerfile환경 변수를 사용하여 시스템 속성을 설정할 수 있습니다 JAVA_OPTS.

FROM jenkins/jenkins:latest
ENV JAVA_OPTS -Djava.net.preferIPv4Stack=true -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration=false

관련 정보