- 새 라이선스 승인 정책을 만들기 위한 전제 조건
- 새 라이선스 승인 정책 작성
- 승인이 필요한 라이선스를 정의하는 기준
- 병합 요청 브랜치에서 감지된 라이선스를 기본 브랜치의 라이선스와 비교하는 기준
- 문제 해결
라이선스 승인 정책
- GitLab 15.9에서 도입되었습니다.
license_scanning_policies
라는 플래그로.- GitLab 15.11에서 일반적으로 사용 가능해졌습니다.
license_scanning_policies
기능 플래그가 제거되었습니다.
병합 요청이 병합되기 전에 승인이 필요한 경우를 결정하는 기준을 지정하는 데 라이선스 승인 정책을 사용하세요.
참고: 라이선스 승인 정책은 보호된 대상 브랜치에만 적용됩니다.
다음 비디오는 이러한 정책의 개요를 제공합니다.
새 라이선스 승인 정책을 만들기 위한 전제 조건
라이선스 승인 정책은 종속성 스캔 작업의 출력을 활용하여 요구 사항이 충족되었는지 확인합니다. 종속성 스캔이 적절하게 구성되지 않았거나 따라서 열린 MR과 관련된 종속성 스캔 작업이 실행되지 않은 경우 해당 정책은 요구 사항을 확인할 데이터가 없습니다. 보안 정책이 평가에 필요한 데이터가 부족한 경우 기본적으로 닫혀 실패하고 MR에 취약점이 있을 수 있다고 가정합니다. fallback_behavior
속성으로 기본 동작을 선택하여 개방적으로 실패하도록 선택할 수 있습니다. 개방적으로 실패하는 정책은 모든 유효하지 않고 강제할 수 없는 규칙을 차단합니다.
귀하의 정책을 강제화하기 위해 대상 개발 프로젝트에서 종속성 스캔을 활성화해야 합니다. 이를 다음과 같은 몇 가지 방법으로 달성할 수 있습니다:
- 모든 대상 개발 프로젝트에서 종속성 스캔을 실행하도록 하는 전역 스캔 실행 정책을 생성합니다.
- Compliance Pipeline을 사용하여 특정 Compliance Framework로 강제화되는 프로젝트에서 강제화하는 종속성 스캔 작업을 정의합니다.
- 개발팀과 협력하여
dependency_scanning
을 프로젝트의 각.gitlab-ci.yml
파일에서 구성하거나 보안 구성 패널을 사용하여 활성화합니다.
라이선스 승인 정책은 GitLab이 지원하는 패키지로부터의 라이선스 정보가 필요합니다.
새 라이선스 승인 정책 작성
라이선스 준수를 강제하는 라이선스 승인 정책을 만드세요.
라이선스 승인 정책을 만들려면 다음 단계를 수행하세요:
- 개발 그룹, 하위 그룹 또는 프로젝트에 보안 정책 프로젝트를 링크합니다(소유자 역할이 필요함).
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 보안 > 정책을 선택합니다.
- 새 병합 요청 승인 정책을 만듭니다.
- 정책 규칙에서 라이선스 스캐닝을 선택합니다.
승인이 필요한 라이선스를 정의하는 기준
다음 유형의 기준을 사용하여 “승인됨” 또는 “거부됨”으로 결정할 수 있습니다.
- 명시적으로 금지된 라이선스 목록에서 발견된 모든 라이선스일 때.
- 특별히 허용된 라이선스로 목록이 작성된 경우 이 목록에 없는 라이선스가 발견될 때.
병합 요청 브랜치에서 감지된 라이선스를 기본 브랜치의 라이선스와 비교하는 기준
다음 유형의 기준을 사용하여 리포지토리의 기본 브랜치에 존재하는 라이선스에 따라 승인이 필요한지 여부를 결정할 수 있습니다:
- 거부된 라이선스는 기본 브랜치에 이미 존재하지 않은 종속성 내에서만 승인이 필요하도록 구성할 수 있습니다.
- 거부된 라이선스는 기본 브랜치에 이미 존재하는 구성요소 내에서 거부된 라이선스가 있는 경우 승인이 필요하도록 구성할 수 있습니다.
라이선스 승인 정책을 위반하는 라이선스가 발견되면 병합 요청을 차단하고, 개발자에게 해당 라이선스를 제거하도록 안내합니다. 차단된 라이선스가 제거되지 않는 한 병합 요청은 라이선스 승인 정책의 적격한 승인자가 승인할 때까지 병합되지 않습니다.
문제 해결
라이선스 준수 위젯이 로딩 상태에 갇힙니다
로딩 스피너가 표시되는 경우:
- 파이프라인이 진행 중인 동안.
- 파이프라인이 완료되었지만 결과를 여전히 백그라운드에서 구문 분석하는 경우.
- 라이선스 스캐닝 작업이 완료되었지만 파이프라인이 여전히 실행 중인 경우.
라이선스 준수 위젯은 몇 초마다 업데이트된 결과를 위해 폴링합니다. 파이프라인이 완료되면 파이프라인 완료 후 첫 폴링으로 결과를 구문 분석합니다. 생성된 보고서의 크기에 따라 몇 초가 소요될 수 있습니다.
성공적인 파이프라인 실행이 완료되고 결과가 구문 분석되어 위젯에 라이선스가 표시된 최종 상태입니다.
라이선스 승인 정책이 unknown
라이선스로 인해 병합 요청을 차단합니다
라이선스 승인 정책은 특정 시나리오에서 unknown
라이선스로 인해 병합 요청을 차단할 수 있습니다. 이는 다음과 같은 상황에서 발생할 수 있습니다:
- 종속성 스캔 작업이 특정 구성요소의 라이선스를 식별하지 못한 경우.
- 인식되지 않는 또는 흔하지 않은 라이선스가 스캔 도구에서 인식되지 않는 경우.
- 구성요소의 메타데이터에 라이선스 정보가 누락되거나 부족한 경우.
이 문제를 해결하려면:
- 파이프라인 페이지의 라이선스 탭에서
unknown
라이선스가 있는 구성요소를 확인하거나 GitLab Security Bot이 생성한out-of-policy
라이선스를 확인합니다. - 이러한 구성요소를 수동으로 조사하여 실제 라이선스를 확인합니다.
- 라이선스를 결정할 수 없거나 허용할 수 없는 경우 영향을 받는 구성요소를 제거하거나 대체하는 것을 고려하십시오.
unknown
라이선스로 병합을 임시로 허용해야 하는 경우:
- 라이선스 승인 정책을 편집합니다.
-
unknown
을 허용된 라이선스 목록에 추가합니다. - 문제를 해결한 후 적절한 라이선스 준수를 유지하기 위해 허용된 라이선스 목록에서
unknown
을 제거하는 것을 잊지 마세요.
특정 패키지에 대한 라이선스를 제외하기 위한 개선을 위해 에픽 10203에서 수정을 계획 중입니다.
특히 unknown
라이선스를 처리할 때 법률 팀과 상의하십시오. 라이선스 준수 문제와 관련하여 항상 법률 팀과 상의하십시오.