라이센스 승인 정책

Tier: Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

라이센스 승인 정책을 사용하여 병합 요청이 병합되기 전에 승인이 필요한 기준을 지정합니다.

note
라이센스 승인 정책은 보호된 대상 브랜치에만 적용됩니다.

다음 비디오는 이러한 정책에 대한 개요를 제공합니다.

새로운 라이센스 승인 정책 생성의 전제 조건

라이센스 승인 정책은 요구 사항이 충족되었는지 확인하기 위해 종속성 스캐닝 작업의 출력을 의존합니다. 종속성 스캐닝이 제대로 구성되지 않았거나 따라서 열린 MR과 관련된 종속성 스캐닝 작업이 실행되지 않은 경우, 정책은 요구 사항을 확인할 데이터가 없습니다. 보안 정책이 평가를 위한 데이터가 없을 경우, 기본적으로 정책은 닫혀 실패하며 병합 요청이 취약점을 포함할 수 있다고 가정합니다. 기본 동작에서 제외하려면 fallback_behavior 속성을 사용하여 정책이 열려 실패하도록 설정할 수 있습니다. 열려 실패하는 정책은 모든 유효하지 않거나 시행할 수 없는 규칙이 차단 해제됩니다.

정책의 시행을 보장하기 위해, 대상 개발 프로젝트에서 종속성 스캐닝을 활성화해야 합니다. 이를 달성하는 방법은 다음과 같습니다:

  • 모든 대상 개발 프로젝트에서 Dependency Scanning이 실행되도록 강제하는 전역 스캔 실행 정책 생성.
  • 주어진 준수 프레임워크에 의해 시행되는 프로젝트에서 종속성 스캐닝 작업을 정의하기 위해 Compliance Pipeline 사용.
  • 각 프로젝트의 .gitlab-ci.yml 파일에서 Dependency Scanning을 구성하도록 개발 팀과 협력하거나 Security Configuration 패널을 사용하여 활성화.

라이센스 승인 정책은 GitLab 지원 패키지에서 라이센스 정보를 요구합니다.

새로운 라이센스 승인 정책 생성

라이센스 준수를 시행하기 위해 라이센스 승인 정책을 생성합니다.

라이센스 승인 정책을 생성하려면:

  1. 개발 그룹, 서브그룹 또는 프로젝트에 보안 정책 프로젝트를 링크합니다 (소유자 역할이 필요).
  2. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  3. Secure > Policies를 선택합니다.
  4. 새로운 Merge request approval Policy를 생성합니다.
  5. 정책 규칙에서 License scanning을 선택합니다.

라이센스 승인 요구 사항 정의 기준

다음과 같은 기준을 사용하여 어떤 라이센스가 “승인됨” 또는 “거부됨”과 승인 요구 사항이 있는지를 결정할 수 있습니다.

  • 명시적으로 금지된 라이센스 목록에 있는 라이센스가 감지되었을 때.
  • 명시적으로 허용된 라이센스로 나열되지 않은 라이센스가 감지되었을 때.

기본 브랜치의 라이센스와 병합 요청 브랜치에서 감지된 라이센스를 비교하기 위한 기준

기본 브랜치에 존재하는 라이센스에 따라 승인 여부를 결정하기 위해 다음과 같은 기준을 사용할 수 있습니다:

  • 거부된 라이센스는 거부된 라이센스가 기본 브랜치에 이미 존재하지 않는 종속성의 일부인 경우에만 승인이 필요하도록 구성할 수 있습니다.
  • 거부된 라이센스는 거부된 라이센스가 기본 브랜치에 이미 있는 구성 요소에 존재하는 경우 승인이 필요하도록 구성할 수 있습니다.

라이센스 승인 정책

라이센스 승인 정책을 위반하는 라이센스가 발견되면 병합 요청이 차단되며 개발자에게 이를 제거하라고 지시합니다. denied 라이센스를 제거하지 않는 한 라이센스 승인 정책에 대한 적격 승인자가 병합 요청을 승인하기 전까지는 병합 요청을 병합할 수 없습니다.

거부된 라이센스가 포함된 병합 요청

문제 해결

라이센스 준수 위젯이 로딩 상태에서 멈춤

다음과 같은 시나리오에서 로딩 스피너가 표시됩니다:

  • 파이프라인이 진행 중일 때.
  • 파이프라인이 완료되었지만 여전히 백그라운드에서 결과를 파싱 중일 때.
  • 라이센스 스캐닝 작업이 완료되었지만 파이프라인이 여전히 실행 중일 때.

라이센스 준수 위젯은 몇 초마다 업데이트된 결과를 폴링합니다. 파이프라인이 완료되면 파이프라인 완료 후 첫 번째 폴링이 결과 파싱을 트리거합니다. 이는 생성된 보고서의 크기에 따라 몇 초가 걸릴 수 있습니다.

최종 상태는 성공적인 파이프라인 실행이 완료되고, 파싱되며 위젯에 라이센스가 표시되는 것입니다.

라이센스 승인 정책이 unknown 라이센스로 인해 병합 요청을 차단

특정 시나리오에서 라이센스 승인 정책이 unknown 라이센스로 인해 병합 요청을 차단할 수 있습니다. 이는 다음과 같은 상황에서 발생할 수 있습니다:

  • 종속성 스캐닝 작업이 특정 구성 요소의 라이센스를 식별하지 못합니다.
  • 스캐닝 도구에서 인식되지 않는 새로운 또는 흔치 않은 라이센스가 사용됩니다.
  • 구성 요소의 메타데이터에 라이센스 정보가 누락되었거나 불완전합니다.

이 문제를 해결하려면:

  1. 파이프라인 페이지에서 라이센스 탭을 검토하여 unknown 라이센스가 있는 구성 요소를 식별하거나 GitLab Security Bot이 생성한 out-of-policy 라이센스를 검토합니다.

  2. 이러한 구성 요소를 수동으로 조사하여 실제 라이센스를 확인합니다.

  3. 라이센스를 결정할 수 없거나 허용되지 않는 경우 영향을 받은 구성 요소를 제거하거나 교체하는 것을 고려합니다.

unknown 라이센스를 가진 상태에서 병합을 임시로 허용해야 하는 경우:

  1. 라이센스 승인 정책을 편집합니다.

  2. 허용된 라이센스 목록에 unknown을 추가합니다.

  3. 문제를 해결한 후, 라이센스 준수를 유지하기 위해 허용된 라이센스 목록에서 unknown을 제거하는 것을 잊지 마세요.

특정 패키지에 대해서만 라이센스를 제외할 수 있는 기능을 개선할 계획입니다 epic 10203.

라이센스 준수 문제를 다룰 때는 항상 법무팀과 상담하세요, 특히 unknown 라이센스를 처리할 때는 더욱 그러합니다.