- 로깅 수준
- 종료 코드 1로 실패하는 보안 작업
- 오래된 보안 보고서
- 경고 메시지
… report.json: no matching files
-
오류 메시지
sast job: config key may not be used with 'rules': only/except
- 오류: job
is used for configuration only, and its script should not be executed
- 빈 취약점 보고서 및 의존성 목록 페이지
애플리케이션 보안 문제 해결
애플리케이션 보안 기능을 사용할 때 다음과 같은 문제에 직면할 수 있습니다.
로깅 수준
GitLab 분석기가 출력하는 로그의 세부 수준은 SECURE_LOG_LEVEL
환경 변수에 의해 결정됩니다.
이 로깅 수준 또는 그보다 높은 메시지가 출력됩니다.
가장 높은 심각도에서 가장 낮은 심각도로, 로깅 수준은 다음과 같습니다:
fatal
error
warn
-
info
(기본값) debug
디버그 수준 로깅
경고:
디버그 로깅은 심각한 보안 위험이 될 수 있습니다. 출력에는
환경 변수 및 작업에 대한 다른 비밀이 포함될 수 있습니다. 출력은
GitLab 서버에 업로드되며 작업 로그에서 볼 수 있습니다.
디버그 수준 로깅을 활성화하려면 다음을 .gitlab-ci.yml
파일에 추가하세요:
variables:
SECURE_LOG_LEVEL: "debug"
이것은 모든 GitLab 분석기에 모든 메시지를 출력하도록 지시합니다. 자세한 내용은 로깅 수준을 참조하세요.
종료 코드 1로 실패하는 보안 작업
보안 작업이 실패하고 이유가 불분명한 경우:
- 디버그 수준 로깅을 활성화합니다.
- 작업을 실행합니다.
- 작업의 출력을 검토합니다.
- 기본
info
값으로 돌아가려면debug
로그 레벨을 제거합니다.
오래된 보안 보고서
병합 요청을 위해 생성된 보안 보고서가 오래된 경우, 병합 요청이 보안 위젯에 경고 메시지를 표시하고 적절한 조치를 취하라는 메시지를 표시합니다.
이런 일은 두 가지 시나리오에서 발생할 수 있습니다:
소스 브랜치가 대상 브랜치보다 뒤쳐져 있습니다
대상 브랜치와 소스 브랜치 사이의 가장 최근 공통 조상 커밋이 대상 브랜치에서 가장 최근 커밴이 아닐 때 보안 보고서가 오래될 수 있습니다.
이 문제를 해결하려면, 대상 브랜치의 변경 사항을 통합하기 위해 리베이스하거나 병합하세요.
대상 브랜치 보안 보고서가 오래되었습니다
이런 일은 여러 이유로 발생할 수 있으며, 실패한 작업이나 새로운 임시 공지가 포함됩니다. 병합 요청이 보안 보고서가 오래되었다고 표시되면, 대상 브랜치에서 새로운 파이프라인을 실행해야 합니다. 새 파이프라인을 선택하여 새로운 파이프라인을 실행하세요.
경고 메시지 … report.json: no matching files
경고:
디버그 로깅은 심각한 보안 위험이 될 수 있습니다. 출력에는
환경 변수 및 작업에 대한 다른 비밀이 포함될 수 있습니다. 출력은
GitLab 서버에 업로드되며 작업 로그에서 볼 수 있습니다.
이 메시지는 종종 오류 No files to upload
로 이어지며, JSON 보고서가 생성되지 않은 이유를 나타내는 다른 오류나 경고가 앞서 있습니다. 그러한 메시지를 찾으세요. 이러한 메시지를 찾지 못하면, 프로젝트에 대한 사용자 정의 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
구문으로 설정되었을 때 나타납니다. 이 문제를 해결하려면 다음 중 하나를 수행해야 합니다:
-
only/except
구문을rules
로 전환합니다. - (임시로) 템플릿을 오래된 버전으로 고정합니다.
자세한 내용은 SAST 작업 오버라이드를 참조하세요.
only/except
구문을 rules
로 전환하기
작업 실행을 제어하기 위해 템플릿을 오버라이드할 경우, 이전의 only
또는 except
구문은 더 이상 호환되지 않으며 새 rules
구문으로 전환해야 합니다.
작업이 오직 main
에서만 실행되도록 제한하는 것이 목표라면, 이전 구문은 다음과 비슷하게 보일 것입니다:
include:
- template: Jobs/SAST.gitlab-ci.yml
# 스캐닝은 오직 main 또는 병합 요청에서만 실행됩니다
spotbugs-sast:
only:
refs:
- main
- merge_requests
위의 구성을 새로운 rules
구문으로 전환하면, 오버라이드는 다음과 같이 작성됩니다:
include:
- template: Jobs/SAST.gitlab-ci.yml
# 스캐닝은 오직 main 또는 병합 요청에서만 실행됩니다
spotbugs-sast:
rules:
- if: $CI_COMMIT_BRANCH == "main"
- if: $CI_MERGE_REQUEST_ID
작업이 태그가 아닌 브랜치에서만 실행되도록 제한하는 것이 목표라면, 다음과 비슷하게 보일 것입니다:
include:
- template: Jobs/SAST.gitlab-ci.yml
# 스캐닝은 태그에서 실행되지 않습니다
spotbugs-sast:
except:
- tags
새 rules
구문으로 전환하면, 오버라이드는 다음과 같이 다시 작성됩니다:
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를 사용하고자 하는 모든 사용자에게 유용할 수 있습니다.
지침은 레거시 템플릿 프로젝트에서 확인할 수 있습니다.
취약점이 발견되었지만 작업이 성공했습니다. 파이프라인이 실패하도록 하려면 어떻게 해야 하나요?
이러한 상황에서는 작업이 성공하는 것이 기본 동작입니다.
작업의 상태는 분석기의 성공 또는 실패를 나타냅니다.
분석기 결과는 작업 로그, 병합 요청 위젯, 또는 보안 대시보드에서 표시됩니다.
오류: job is used for configuration only, and its script should not be executed
Security/Dependency-Scanning.gitlab-ci.yml
및 Security/SAST.gitlab-ci.yml
템플릿에서 GitLab 13.4에 추가된 변경사항은
sast
또는 dependency_scanning
작업을 rules
속성을 설정하여 활성화하면 (job) is used for configuration only, and its script should not be executed
라는 오류가 발생합니다.
sast
또는 dependency_scanning
구문은 모든 SAST 또는 Dependency Scanning에 대한 변경을 만들기 위해 사용될 수 있지만,
공유된 rules
를 정의하는 데 사용할 수는 없습니다.
우선순위를 높이기 위해 해당 문제에 찬성표를 던질 수 있으며, 기여는 환영합니다.
빈 취약점 보고서 및 의존성 목록 페이지
파이프라인에 수동 단계가 있으며, allow_failure: false
옵션이 있는 작업이 완료되지 않으면,
GitLab은 보안 보고서에서 데이터를 사용하여 나열된 페이지를 채울 수 없습니다.
이 경우 취약점 보고서 및 의존성 목록 페이지는 비어 있습니다.
이 보안 페이지는 파이프라인의 수동 단계에서 작업을 실행하여 채울 수 있습니다.
우선순위를 높이기 위해 해당 문제에 찬성표를 던질 수 있으며, 기여는 환영합니다.