CI/CD

스캔 유형

MODE 설정

참고: 미설정 시 sast가 기본값으로 사용됩니다.

MODE 설명
sast 코드 스캔
secret Secret 스캔
iac IaC (인프라 코드) 스캔
all SAST → Secret → IaC 순서로 실행

TIMEOUT 설정

전체 실행 제한 시간(초)입니다. 기본값은 MODE=all일 때 600초(10분), 단일 스캔은 360초(6분)이며, TIMEOUT을 지정하면 해당 값을 우선 적용합니다. CI Job의 제한 시간은 이 값보다 길게 설정하세요.

LANG 설정

LANG 환경 변수를 사용하여 SAST, Secret, IaC가 Pull Request 또는 Merge Request에 작성하는 취약점 결과와 댓글 언어를 설정할 수 있습니다.

참고: 미설정하거나 지원하지 않는 값을 지정하면 KO가 기본값으로 사용됩니다. 값은 대소문자를 구분하지 않으며 앞뒤 공백은 무시됩니다.

LANG 댓글 언어
KO 한국어
EN 영어
JP 일본어

LEVEL 설정

참고: 미설정 시 none이 기본값으로 사용됩니다.

설정된 LEVEL 이상의 취약점이 검사 범위에서 발견되면 보안검수 Job이 실패합니다. PR/MR에서는 저장소의 필수 검사 설정에 따라 병합을 차단하며, 브랜치 push 파이프라인에서는 후속 빌드와 배포를 차단할 수 있습니다. LEVEL=medium처럼 소문자로 지정하세요. 미설정 또는 none이면 취약점 발견만으로 Job을 실패시키지 않습니다.

SAST, Secret, IaC와 MODE=all에 동일하게 적용됩니다. MODE=all은 차단 결과가 발생하면 이후 스캐너를 실행하지 않습니다. warning은 high, error는 critical과 같은 기준입니다.

LEVEL
none
any
info
low
medium
high
critical

AUDIT LEVEL 설정

IaC의 AUDIT_LEVEL을 설정하면 지정한 위험도 미만의 결과를 제외할 수 있습니다.

예를 들어 AUDIT_LEVEL을 medium으로 설정할 경우 low 와 info를 취약점 탐지에서 제거할 수 있습니다.

AUDIT_LEVEL
info
low
medium
high

PR/MR 없는 push 파이프라인

머신이 소스를 push하고 바로 빌드·배포하는 경우에도 PR/MR 생성 없이 LEVEL을 적용할 수 있습니다. GitHub의 브랜치 push 이벤트와 GitLab의 CI_PIPELINE_SOURCE=push인 브랜치 파이프라인을 지원합니다. 태그 push, 예약 실행, 수동 실행에는 이 동작을 적용하지 않습니다.

SAST와 IaC는 이번 push에서 추가·수정된 줄에 해당하는 취약점을 차단 대상으로 삼습니다. 같은 파일의 변경되지 않은 기존 취약점은 차단 대상에서 제외됩니다. Secret은 이번 push로 추가된 커밋도 검사하므로, 중간 커밋에 추가했다가 마지막 커밋에서 삭제한 시크릿도 차단할 수 있습니다. 강제 push로 시크릿을 다시 추가한 경우도 검사합니다.

일반 push와 강제 push는 이번 push 전후의 커밋을 비교합니다. 새 브랜치는 기본 브랜치와의 공통 조상을, 기본 브랜치의 최초 push는 빈 저장소를 기준으로 검사합니다.

push 검사에는 XEIZE_TOKEN이 필요하며, PR/MR 댓글용 토큰은 필요하지 않습니다. push 결과는 Job 로그로 확인합니다. 적용 예시는 GitLab Workflow와 GitHub Actions를 참고하세요.

LOG_FINDINGS 설정

LOG_FINDINGS=pretty (또는 1, true)는 위험도별 색상이 있는 표로, json은 JSON Lines로 출력합니다. 미설정, 0, false는 출력을 비활성화합니다.

표에는 LEVEL, 취약점 수, 설명, 위치와 문서 링크가 표시됩니다. SAST는 일치 코드와 source·sink 및 호출 흐름을, IaC는 제공된 현재 값·기대 값과 MR/PR 코멘트의 조치 제안을 표시합니다.

Secret은 같은 값을 한 항목으로 묶고, 하드코딩된 위치와 커밋별 이력을 링크와 함께 표시합니다. 값은 abc***xyz 형태로 가리며, 짧거나 확인할 수 없는 값은 ***로 표시합니다. 표의 언어는 LANG=KO, EN, JP로 선택하고, 색상은 NO_COLOR=1로 끌 수 있습니다.

이 설정은 LEVEL의 실패 판정을 바꾸지 않습니다. 출력은 변경 줄 필터 적용 전 결과를 포함할 수 있으므로, 출력된 모든 항목이 차단 대상인 것은 아닙니다.

관련 문서2