Invisible Safety,

Proven by Intelligence

보이지 않는 안전을 인텔리전스로 증명하다.

기술 노트
IT 산업의 변화를 이끄는 MDS인텔리전스의
기술 인사이트를 만나보세요.
시스템 소프트웨어 개발
[CodeSonar] DevSecOps를 위한 SAST 기반 CI/CD 파이프라인 구축(2)
2026년 03월 10일

지난 블로그에 이어 GitLab에서 CodeSonar를 연동하여 DevSecOps 기반의 CI 파이프라인 구축과 수행 후 GitLab에서 이에 대한 결과를 살펴보도록 하겠습니다.


​💡 잠깐 혹시, 아래 컨텐츠를 확인하셨나요?? 

[CodeSonar] DevSecOps를 위한 SAST 기반 CI/CD 파이프라인 구축(1)

해당 글을 읽기 전에 내용 확인하시면 이해가 쏙쏙! 





1. 

워크플로우 개요


전반적인 워크플로우는 아래 그림(1)과 같습니다.



[그림 1]



로컬 PC에서 작성한 코드를 GitLab 저장소에 push하면, .gitlab-ci.yml 스크립트에 작성된 파이프라인 수행 조건(예: push, merge request 등)과 일치할 경우 GitLab에서 Runner를 통해 파이프라인 스크립트를 실행합니다.


스크립트 내에서는 CodeSonar의 분석 명령어를 통해 코드 상의 보안 취약점을 탐지하고, 그 결과를 CodeSonar HUB에 저장한 뒤, 이를 기반으로 GitLab에서 제공하는 SAST 레포트를 CodeSonar 형식에 맞춰 출력할 수 있습니다.




2. 

.gitlab-ci.yml 스크립트 작성


그럼 본격적으로 CodeSonar를 연동한 스크립트 구성에 대해 살펴보겠습니다.

( ※ 본 예시의 스크립트는 Windows 환경에서 PowerShell 기반으로 파이프라인이 실행되도록 구성하였습니다.)


먼저, CI 파이프라인의 수행 조건과 각 작업 단계, 그리고 스크립트 내에서 사용되는 환경 변수를 지정합니다.



------------------------------------------------------------------------------------------------------------------------------------------------


# 파이프라인이 실행되는 조건 (Push or Merge Request 이벤트 발생 시 CI 파이프

라인 실행)

workflow:

  rules:

    - if: $CI_PIPELINE_SOURCE == "push" 

    - if: $CI_PIPELINE_SOURCE == "merge_request_event"


# 워크플로우 실행 순서

stages:

- build_test


codesonar-sast:

  stage: build_test

  tags:

    - Windows

    - CodeSonar


# CodeSonar와 관련된 환경변수   

  variables:

    SARIF2SAST: {CodeSonar Integration Toolkit 설치 경로}

    CODESONAR: {CodeSonar 설치 경로}

    CSPYTHON: {CodeSoSonar 설치 경로 내 cspython.exe 경로}

    CODESONAR_PROJECT_NAME: {프로젝트명}

    CODESONAR_HUBUSER: {CodeSonar 유저 ID}

    CODESONAR_HUBPWFILE: {CodeSonar 유저 Password가 담긴 txt 파일 경로}

    CODESONAR_HUB_URL: {http://ServerIP:7340}

    CODESONAR_VISIBILITY_FILTER: {CodeSonar의 Visible Warnings에 저장된 filter명}


------------------------------------------------------------------------------------------------------------------------------------------------



그 다음 “codesonar-sast”라는 작업을 수행하는 스크립트를 작성해 줍니다.



------------------------------------------------------------------------------------------------------------------------------------------------


script:  

    - > # CodeSonar 분석 프로세스 구동 명령어

         & "${CODESONAR}" install-launchd "${CODESONAR_HUB_URL}"  

 

    - > # CodeSonar 분석 명령어​

        & "${CODESONAR}" analyze

        "${CODESONAR_PROJECT_NAME}"

        -foreground

        -name "${CODESONAR_PROJECT_NAME} ref=${CI_COMMIT_REF_NAME} commit msg=${CI_COMMIT_MESSAGE}"

        -property branch "$CI_COMMIT_REF_NAME"

        -property commit "$CI_COMMIT_MESSAGE"

        "${CODESONAR_HUB_URL}"

        빌드 명령어


# CodeSonar 분석 ID 추출

    - $CODESONAR_ANALYSIS_ID = & "${CSPYTHON}" "${SARIF2SAST}\analysis_id.py" "${CODESONAR_PROJECT_NAME}"


    - > # 추출한 분석 ID 기반으로 SARIF 파일을 생성하는 명령어​

        & "${CODESONAR}" get

        -auth password -hubuser "${CODESONAR_HUBUSER}" -hubpwfile ${CODESONAR_HUBPWFILE}

        -o allwarnings.sarif

        "${CODESONAR_HUB_URL}/analysis/${CODESONAR_ANALYSIS_ID}-allwarnings.sarif?filter=%22${CODESONAR_VISIBILITY_FILTER}%22"


     - > # SARIF를 SAST 레포트로 변환하는 명령어​

        & "${CSPYTHON}" "${SARIF2SAST}\sarif2sast.py"

        --sarif allwarnings.sarif

        --output gl-sast-report.json

        --summary-report sast-summary-report.md

        --codesonar-url "${CODESONAR_HUB_URL}"

        --analysis-id ${CODESONAR_ANALYSIS_ID}


 # GitLab에서 SAST 레포트를 산출물로 지정   ​

  artifacts:

    reports:

      sast: gl-sast-report.json


------------------------------------------------------------------------------------------------------------------------------------------------



해당 작업에 대해 간단히 설명하자면, CodeSonar를 통해 코드를 분석한 후 해당 분석 결과 ID 값을 추출합니다. 이 ID 값을 기반으로 SARIF(Static Analysis Results Interchange Format, 정적 분석 결과 교환 형식) 파일을 생성하게 됩니다.



생성된 SARIF 파일을 GitLab의 SAST 레포트로 변환되며, 이 과정에서 CodeSonar에서 제공하는 GitLab Integration Toolkit을 통해 CodeSonar 형식에 맞게 변환이 이루어집니다.


파이프라인 실행 이후 SAST 레포트가 산출물로 등록되므로, GitLab에서는 해당 레포트를 출력할 수 있으며, Security Scanning 탭에서도 CodeSonar에서 검출한 보안 취약점들을 확인할 수 있습니다.




3. 

파이프라인 수행 결과


CI 파이프라인에 CodeSonar를 연동함으로써 아래 그림(2)과 같이 GitLab UI 상에서 CodeSonar를 통해 검출한 보안 취약점 확인 및 해당 결과를 레포트로 출력할 수 있습니다.




그림(2)



여기까지 GitLab에서 CodeSonar를 연동해 CI 파이프라인 구축하는 방법에 대해 살펴봤습니다.


​SAST 도구인 CodeSonar를 파이프라인에 도입함으로써 보안 테스트 자동화를 간편하게 구축할 수 있으며, 소프트웨어 개발 생명 주기 초기 단계부터 지속적인 보안 활동을 수행할 수 있습니다.



-----------------------​



혹시 CodeSonar에 대해 더 알고 싶으신가요? 💁

MDS인텔리전스는 매달 1회씩 CodeSonar뿐만 아니라 다양한 도구 기본 교육을 진행하고 있습니다!🙌


아래 링크를 통해 MDS인텔리전스 홈페이지를 방문하시어 도구 사용자 교육을 수강해 보세요! 

훨씬 더 쉽게 CodeSonar를 활용하실 수 있습니다.

>> CodeSonar 교육 신청하기 >> 



* 출처 

https://www.atlassian.com/ko/devops/devops-tools/devsecops-tools

https://waspro.tistory.com/693

https://www.jaenung.net/tree/2930