라이선스 승인 정책

Tier: Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated
  • GitLab 15.9에 도입되었습니다. 이름은 license_scanning_policies인 플래그와 함께.
  • GitLab 15.11에 일반 사용 가능으로 변경되었습니다. license_scanning_policies 기능 플래그가 제거되었습니다.

라이선스 승인 정책을 사용하여 병합 요청이 병합되기 전에 필요한 승인 기준을 여러 가지 지정할 수 있습니다.

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

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

새 라이선스 승인 정책을 만드는 데 필요한 사전 조건

라이선스 승인 정책은 종속성 스캐닝 작업의 결과를 기반으로 승인 요구 사항이 충족되었는지 확인합니다. 종속성 스캐닝이 제대로 구성되지 않았거나 따라서 열린 MR과 관련된 종속성 스캔 작업이 실행되지 않은 경우 정책은 요구 사항을 확인할 데이터가 없습니다. 보안 정책이 평가에 대한 데이터가 부족한 경우 닫힌 상태로 실패하고 병합 요청에 취약점이 포함될 수 있다고 가정합니다.

귀하의 정책을 시행하려면 대상 개발 프로젝트에서 종속성 스캐닝을 활성화해야 합니다. 다음과 같은 몇 가지 다른 방법으로 이를 달성할 수 있습니다:

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

새 라이선스 승인 정책 생성

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

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

  1. 개발 그룹, 서브그룹 또는 프로젝트에 보안 정책 프로젝트를 연결합니다(소유자 역할 필요).
  2. 왼쪽 사이드바에서 검색 또는 이동하여 이동을 선택하고 프로젝트를 찾습니다.
  3. 보안 > 정책을 선택합니다.
  4. 새로운 스캔 결과 정책을 생성합니다.
  5. 정책 규칙에서 라이선스 스캐닝을 선택합니다.

승인이 필요한 라이선스를 정의하는 기준

다음 유형의 기준을 사용하여 어떤 라이선스가 “승인”되었는지 “거부”되었는지를 결정할 수 있습니다.

  • 명시적으로 금지된 라이선스 목록에서 어떤 라이선스라도 감지될 때.
  • 허용 가능하다고 명시적으로 목록화된 라이선스를 제외한 어떤 라이선스가 감지될 때.

병합 요청 브랜치에서 감지된 라이선스를 기본 브랜치에서 감지된 라이선스와 비교하는 기준

다음 유형의 기준을 사용하여 승인이 필요한지 여부를 결정할 수 있습니다:

  • 거부된 라이선스는 기본 브랜치에 이미 존재하지 않은 종속성 내에서 거부된 라이선스를 요구할 수 있습니다.
  • 거부된 라이선스는 기본 브랜치에 이미 존재하는 어떤 구성요소에도 거부된 라이선스가 있는 경우 승인을 요구할 수 있습니다.

라이선스 승인 정책

라이선스 승인 정책을 위반하는 라이선스가 발견되면 해당 병합 요청을 차단하고 개발자에게 제거하도록 요청합니다. 참고로 거부된 라이선스가 제거될 때까지 거부 라이선스에 대한 적격한 승인자가 병합 요청을 승인하지 않는 한 병합 요청을 병합할 수 없습니다.

거부된 라이선스가 있는 병합 요청

문제 해결

라이선스 준수 위젯이 로딩 상태에서 멈춰있습니다

로딩 스피너는 다음 상황에서 표시됩니다:

  • 파이프라인이 진행 중인 경우.
  • 파이프라인이 완료되었지만 여전히 결과를 백그라운드에서 구문 분석하는 경우.
  • 라이선스 스캔 작업이 완료되었지만 파이프라인이 계속 실행되고 있는 경우.

라이선스 준수 위젯은 몇 초마다 업데이트된 결과를 확인합니다. 파이프라인이 완료되면 파이프라인 완료 후 첫 번째 폴링에서 결과를 구문 분석합니다. 생성된 보고서의 크기에 따라 몇 초가 소요될 수 있습니다.

성공적인 파이프라인 실행이 완료되었고 결과가 위젯에 표시되면 최종 상태가 됩니다.