IT/ISSUE

소스코드 진단하기 #2 젠킨스

종금 2019. 11. 22. 20:25
반응형

저번 #1(https://chanztudio.tistory.com/33?category=819862)에서는 이클립스에서 사용할 수 있는 플러그인 스팟버그를 이용하여 시큐어 코딩 여부를 확인했다면 이번엔 젠킨스라는 어플리케이션을 이용하여 진단해볼것이다.

 

 

 

위 친근한 집사아저씨가 젠킨스로서 프로그램 개발시 형상관리부터 직접 진단해주고 아웃풋 설정따라 정말 잘 만들어주는 다재다능한 아저씨이다.

 

일단 설치법부터 시작해보자 젠킨스는 직접 서버 PC의 커맨드 라인창에 접근해서 진단하므로 환경설정부터 해야한다.

아래 펼치기 누르면 해당 필요 파일들이 나온다.

(만약 환경변수가 뭔지 모른다면 값부분만 경로 잘 넣어주자 이조차도 모르면 일단 환경변수 공부하자.)

 

 

 

 

이후 커맨드라인창에 변수가 잘 설정되었는지 확인해보자.

 

 

경로는 잘 들어갔다.

그러면 이제 젠킨스 설치를 위해 해당 웹 서버 경로(테스트 환경의 경우 openeg서버이며 C:\SecureCoding\workspace\openeg\pom.xml)이다. 

이니펍이든 웹이든 아파치든 직접 들어가서 pom.xml을 생성 혹은 수정한다.

더보기
pom.xml
0.00MB

이중 중요한건 플러그인 추가이다.

  <!-- FindBugs Static Analysis -->

      <plugin>

        <groupId>org.codehaus.mojo</groupId>

        <artifactId>findbugs-maven-plugin</artifactId>

        <version>3.0.1</version>

        <configuration>

          <effort>Max</effort>

          <threshold>Low</threshold>

          <failOnError>true</failOnError>

          <plugins>

            <!-- FindSecurityBugs Static Analysis -->

            <plugin>

              <groupId>com.h3xstream.findsecbugs</groupId>

              <artifactId>findsecbugs-plugin</artifactId>

              <version>1.4.4</version>

            </plugin>

          </plugins>

        </configuration>

      </plugin>

 

      <!-- PMD Static Analysis -->

      <plugin>

        <groupId>org.apache.maven.plugins</groupId>

        <artifactId>maven-pmd-plugin</artifactId>

        <version>3.5</version>

        <configuration>

          <sourceEncoding>UTF-8</sourceEncoding>

        </configuration>

      </plugin>

해당 pom 작성이 끝나면 이제 maven에 대한 빌드 테스트를 해야한다.

커맨더라인으로 가서 pom.xml 작성된 디렉터리로 들어가고(C:\SecureCoding\workspace\openeg\)

아래 명령어를 작성한다.(작동확인은 mvn -version)

mvn findbugs:findbugs pmd:pmd

(위는 경로가 틀려 빌딩 안된다. 경로를 다시 바꾸어 해주면 아래와 같이 빌드 성공이 나온다.)

이제 젠킨스에 대한 cmd창에서 빌드는 끝났다. 하지만 여기서 끝내면 좋겠지만 좋겠지만 폼에서 설정한 해당 플러그인의 규칙(rule)도 적용해야하고 젠킨스에 대한 포트도 열어야하니 또다시 룰을 건들여보자.

 

일단 해당 서버 경로(C:\SecureCoding\workspace\openeg\)findbugs-ruleset-include.xml 파일을 생성하여 탐지할 룰을 정해야한다.

(여기서 룰이란 SQL 인젝션, XSS와 같은 취약점들에 취약할 수 있는 코딩을 찾는 룰이다.)

만약 제외하고 싶은 룰도 있다면 해당 파일(findbugs-ruleset-exclude.xml)을 생성 후 추가해도 된다 하지만 나는 싫으니 안만들거다.

 

또한 pmd(정적분석기 중 하나)에 대해서도 사용할 것인데 이것의 규칙 또한 서버경로(C:\SecureCoding\workspace\openeg\)에 pmd-ruleset.xml에서 추가 혹은 수정해주자

그리고 추가한 룰셋에 대해서 pom.xml에 수정으로 추가하자(처음부터 했으면 편했을텐데)

1.findbug 룰셋 추가

더보기

 

 

 <includeFilterFile>

      findbugs-ruleset-include.xml
    </includeFilterFile>

    <excludeFilterFile>

      findbugs-ruleset-exclude.xml

    </excludeFilterFile>

 

2. pmd 룰셋추가 

더보기

 

  <rulesets>

      <ruleset>pmd-ruleset.xml</ruleset>

    </rulesets>

 

 

여기까지 오느라 수고하셨고

이제 젠킨스만 실행해주면 끝난다.

 

먼저 위 알집에서 받아서 홈 설정한 젠킨스 war 파일 위치로 가서

java -jar jenkins.war --httpPort=9090 을 작성하여 젠킨스에 대한 포트를 9090으로 오픈한다.

 

그리고 localhost:9090에 입성해서 처음 본 집사아저씨가 나온다면 성공이다.

다음시간에 젠킨스에 대한 심화를 해보도록하자 여기서 끝!

 

여담: 설치도 귀찮고 컴터 끄면은 다시 실행하기도 귀찮고

대신 진단은 쉽고..

반응형