- 로깅 레벨
- 종료 코드 1로 실패하는 보안 작업
- 오래된 보안 보고서
report.json: no matching files
경고 메시지 받기-
sast job: config key may not be used with 'rules': only/except
오류 메시지 받기 - 오류: 작업
구성에만 사용되며 해당 스크립트를 실행해서는 안 됩니다
- 빈 취약점 보고서, 의존성 디렉터리, 라이선스 디렉터리 페이지
애플리케이션 보안 문제 해결
애플리케이션 보안 기능을 사용할 때 다음과 같은 문제가 발생할 수 있습니다.
로깅 레벨
GitLab 분석기에 의해 출력되는 로그의 자세함은 SECURE_LOG_LEVEL
환경 변수에 의해 결정됩니다. 이 로깅 수준 이상의 메시지가 출력됩니다.
가장 심각한 것부터 가장 낮은 심각도로, 로깅 수준은 다음과 같습니다.
fatal
error
warn
-
info
(기본값) debug
디버그 수준 로깅
디버그 수준 로깅을 활성화하려면 .gitlab-ci.yml
파일에 다음을 추가하십시오.
variables:
SECURE_LOG_LEVEL: "debug"
이는 모든 GitLab 분석기에게 모든 메시지를 출력하도록 지시합니다. 자세한 내용은 로깅 레벨을 참조하십시오.
종료 코드 1로 실패하는 보안 작업
만약 보안 작업이 실패하고 그 이유가 명확하지 않다면:
- 디버그 수준 로깅을 활성화합니다.
- 작업을 실행합니다.
- 작업 출력을 조사합니다.
- 기본
info
값으로 돌아가려면debug
로그 레벨을 제거합니다.
오래된 보안 보고서
Merge Request에 대해 생성된 보안 보고서가 오래되면, 해당 Merge Request에 대한 보안 위젯에 경고 메시지가 표시되고 적절한 조치를 취하도록 요구됩니다.
이는 다음 두 가지 시나리오에서 발생할 수 있습니다:
소스 브랜치가 대상 브랜치보다 뒤쳐진 경우
가장 최근 공통 조상 커밋이 대상 브랜치와 소스 브랜치 사이의 가장 최근 커밋이 아닌 경우 보안 보고서가 오래될 수 있습니다.
이 문제를 해결하려면 변경 내용을 통합하기 위해 리베이스하거나 머지합니다.
대상 브랜치의 보안 보고서가 오래되었을 경우
실패한 작업이나 새로운 고려사항을 포함하여 여러 이유로 이 문제가 발생할 수 있습니다. Merge Request에서 보안 보고서가 오래된 것으로 표시되면 대상 브랜치에서 새로운 파이프라인을 실행해야 합니다. 새 파이프라인을 실행하려면 새 파이프라인을 선택하십시오.
report.json: no matching files
경고 메시지 받기
이 메시지는 종종 파일이 없음 오류를 발생시킬 것입니다. 그리고 이 오류의 이유를 나타내는 기타 오류 또는 경고가 앞서 있고 이 메시지가 뒤를 이을 것입니다. 이러한 메시지들을 확인해주기 위해 전체 작업 로그를 확인하십시오. 이러한 메시지를 찾을 수 없다면, 사용자 지정 CI/CD 변수로 SECURE_LOG_LEVEL: "debug"
를 설정한 후 실패한 작업을 재시도하십시오. 이는 추가 정보를 제공하여 추가 조사할 수 있게 합니다.
sast job: config key may not be used with 'rules': only/except
오류 메시지 받기
.gitlab-ci.yml
템플릿을 포함시킬 때 SAST.gitlab-ci.yml
와 같은 오류가 발생할 수 있습니다. GitLab CI/CD 구성에 따라 다음 오류가 발생할 수 있습니다.
파이프라인을 만들 수 없음
jobs:sast config key may not be used with `rules`: only/except
이 오류는 포함된 작업의 rules
구성이 사용 중단된 only
또는 except
구문으로 재정의되었을 때 발생합니다. 이 문제를 해결하려면 반드시 다음 중 하나를 수행해야 합니다:
자세한 내용은 SAST 작업 재정의를 참조하십시오.
기존의 only/except
구문을 rules
로 전환
작업 실행을 제어하기 위해 템플릿을 재정의할 때, 이전 예전 구문은 더 이상 호환되지 않으며 새로운 rules
구문으로 전환해야 합니다.
만약 재정의가 main
에서만 실행되도록 하는 것에 목적이 있다면, 이전 구문은 다음과 같이 보일 것입니다:
include:
- template: Jobs/SAST.gitlab-ci.yml
# 스캔이 main 또는 MR에서만 실행되도록 보장
spotbugs-sast:
only:
refs:
- main
- merge_requests
위의 구성을 새 rules
구문으로 전환하면 재정의는 다음과 같이 작성될 것입니다:
include:
- template: Jobs/SAST.gitlab-ci.yml
# 스캔이 태그가 아닌 브랜치에서만 실행되도록 보장
spotbugs-sast:
rules:
- if: $CI_COMMIT_BRANCH == "main"
- if: $CI_MERGE_REQUEST_ID
만약 재정의가 브랜치만 실행되도록 하는 것에 목적이 있다면, 다음과 같이 보일 것입니다:
include:
- template: Jobs/SAST.gitlab-ci.yml
# 스캔이 태그가 아닌 브랜치에서만 실행되도록 보장
spotbugs-sast:
rules:
- if: $CI_COMMIT_TAG == null
자세한 정보는 rules
를 참조하십시오.
오래된 버전의 템플릿을 고정시키세요
최신 지원을 보장하기 위해, rules
로 마이그레이션하는 것을 강력히 권장합니다.
CI 구성을 즉시 업데이트할 수 없는 경우, 이전 템플릿 버전을 고정하는 몇 가지 해결책이 있습니다. 예를 들면:
include:
remote: 'https://gitlab.com/gitlab-org/gitlab/-/raw/12-10-stable-ee/lib/gitlab/ci/templates/Security/SAST.gitlab-ci.yml'
추가적으로, 버전이 지정된 레거시 템플릿이 포함된 전용 프로젝트를 제공합니다. 이는 오프라인 설정이나 Auto DevOps를 사용하고자 하는 모든 사용자에게 적합합니다.
지침은 레거시 템플릿 프로젝트에서 확인할 수 있습니다.
취약점이 발견되었지만 작업은 성공합니다. 대신에 파이프라인을 실패시키려면 어떻게 해야 합니까?
이러한 상황에서 작업이 성공하는 것이 기본 동작입니다. 작업의 상태는 분석기 자체의 성공 또는 실패를 나타냅니다. 분석기 결과는 작업 로그, Merge Request 위젯, 또는 보안 대시보드에 표시됩니다.
오류: 작업 구성에만 사용되며 해당 스크립트를 실행해서는 안 됩니다
Security/Dependency-Scanning.gitlab-ci.yml
및 Security/SAST.gitlab-ci.yml
에서 GitLab 13.4에서의 변경 사항은 rules
속성을 설정하여 sast
또는 dependency_scanning
작업을 활성화하는 경우, 이러한 작업은 (job) is used for configuration only, and its script should not be executed
오류로 실패합니다.
sast
또는 dependency_scanning
구절은 variables
또는 stage
를 변경하는 등 모든 SAST 또는 Dependency Scanning에 변경 사항을 적용하는 데 사용될 수 있지만, 공유 rules
를 정의하는 데 사용할 수는 없습니다.
이에 대한 대처하는 문제가 열려 있습니다. 우선순위 설정에 도움을 주기 위해 문제에 투표할 수 있으며, 기여가 환영됩니다.
빈 취약점 보고서, 의존성 디렉터리, 라이선스 디렉터리 페이지
파이프라인에 allow_failure: false
옵션을 갖는 작업을 수행 중이지 않거나 이 작업이 완료되지 않으면, GitLab은 보안 보고서에서 데이터를 가져와 디렉터리된 페이지를 채울 수 없습니다. 이 경우, 취약점 보고서, 의존성 디렉터리, 그리고 라이선스 디렉터리 페이지가 비어 있습니다.
이러한 보안 페이지는 파이프라인의 매뉴얼 단계에서 작업을 실행하여 채울 수 있습니다.
이러한 시나리오를 처리하기 위한 문제가 열려 있습니다. 이 문제에 투표하여 우선순위 설정에 도움을 줄 수 있으며, 기여가 환영됩니다.