- 로깅 레벨
- 종료 코드 1로 실패하는 보안 작업
- 오래 된 보안 보고서
- ‘… report.json: no matching files’ 경고 메시지 받기
- ‘sast job: config key may not be used with ‘rules’: only/except’ 에러 메시지 받기
- 오류: job은 구성에만 사용되며 해당 스크립트는 실행되지 않아야합니다
- 빈 취약점 보고서, 종속성 목록 페이지
어플리케이션 보안 문제 해결
어플리케이션 보안 기능을 다룰 때 다음과 같은 문제가 발생할 수 있습니다.
로깅 레벨
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 서버에 업로드되어 작업 로그에 표시됩니다.
이 메시지는 종종 error 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 구성에 따라 발생합니다:
Pipeline을 생성할 수 없음
jobs:sast config key may not be used with `rules`: only/except
이 에러는 포함된 작업의 rules
구성이 deprecated only
또는 except
구문으로 재정의되었을 때 발생합니다. 이 문제를 해결하려면:
더 많은 정보는 Overriding SAST jobs를 참조하세요.
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은 구성에만 사용되며 해당 스크립트는 실행되지 않아야합니다
GitLab 13.4의 변경 사항에서 Security/Dependency-Scanning.gitlab-ci.yml
및 Security/SAST.gitlab-ci.yml
템플릿에 대한 변경 사항은 rules
속성을 설정하여 sast
또는 dependency_scanning
작업을 활성화하는 경우, (job)은 구성에만 사용되며 해당 스크립트는 실행되지 않아야합니다
오류와 함께 실패한다는 것을 의미합니다.
sast
또는 dependency_scanning
부분은 variables
또는 stage
을 변경하는 등 모든 SAST 또는 Dependency Scanning에 대한 변경 사항을 만들기 위해 사용될 수 있지만, 공유된 rules
을 정의하는 데 사용할 수는 없습니다.
이러한 시나리오를 개선하기 위해 개선 문제가 열려 있습니다. 우선 순위를 위해 문제에 투표하고, 기여를 환영합니다.
빈 취약점 보고서, 종속성 목록 페이지
파이프라인에 allow_failure: false
옵션을 가진 수동 단계가 있고, 이 작업이 완료되지 않은 경우, GitLab은 보안 보고서의 데이터를 사용하여 나열된 페이지를 채울 수 없습니다. 이 경우, 취약점 보고서 및 종속성 목록 페이지가 비어 있습니다.
이러한 시나리오를 처리하기 위해 해당 문제가 열려 있습니다. 문제에 투표하여 우선 순위를 돕고, 기여를 환영합니다.