GitLab License Compliance

*이 문서는 https://docs.gitlab.com/를 참조하여 작성되었습니다.

 

License Compliance

  • GitLab CI / CD를 사용할 때 License Compliance를 사용하여 라이센스에 대한 프로젝트 종속성을 검색 할 수 있습니다.

  • 기존 파일.gitlab-ci.yml에 포함시키거나 Auto DevOps에서 제공하는 자동 라이센스 준수를 사용하여 License Compliance를 활용할 수 있습니다.

  • GitLab은 License Compliance를 확인하고 소스와 대상 분기 간의 라이센스를 비교하고 병합 요청에 대한 정보를 바로 보여줍니다. 거부된 라이센스는 x표시와 빨간색 아이콘과 함께 사용자의 결정이 필요한 새 라이센스로 명확하게 표시됩니다. 

  • 프로젝트 설정에서 라이센스를 수동으로 허용하거나 거부할 수 있습니다 .

  • .gitlab-ci.yml에서 license_scanning 작업을 추가할 때 라이센스 준수 보고서와 비교할 내용이 없는 경우 병합 요청 영역에 정보가 표시되지 않습니다.

  • 연속적인 병합 요청에는 비교할 내용이 있으며 라이센스 준수 보고서가 올바르게 표시됩니다.

  • 프로젝트 또는 그룹 관리자인 경우 라이센스를 클릭하여 라이센스를 허용하거나 거부할 수 있습니다.

    • 아래와 같이 Approve license 버튼 (허용)과 Blacklist license 버튼 (거부)이 나타납니다.

1. 지원되는 언어 및 패키지 관리자

 

  • License Compliance 검사 작업을 실행하려면 Docker 실행자가 있는 GitLab Runner가 필요함

  • GitLab 12.8 및 이후 버전은 GitLab 설치의 일부로 License-Scanning.gitlab-ci.yml템플릿을 포함하고 있습니다 License Compliance를 가능하게 하려면 다음을 수행해야합니다. 

  • 11.9에서 12.7로 GitLab 이전 버전은 License-Management.gitlab-ci.yml템플릿을 포함하고 있고 다음을 수행해야 합니다.

  • 11.9 이전의 GitLab 버전의 경우 해당 템플릿에 정의된대로 작업을 복사하고 사용할 수 있습니다.

    • .gitlab-ci.yml파일에 다음을 추가

include: - template: License-Scanning.gitlab-ci.yml
  • license_scanning가 포함된 템플릿은 CI / CD 파이프 라인에 작업을 생성하고 종속성을 검색하여 라이센스를 찾습니다.

    • 결과는 나중에 다운로드하여 분석할 수 있는 License Compliance 보고서 아티팩트로 저장됩니다 . 
      구현 제한으로 인해 항상 최신 License Compliance 아티팩트를 사용합니다. 

    • GitLab 라이센스 준수 Docker 이미지는 언어 / 프레임 워크를 감지하고 라이센스를 분석하는데 사용됩니다.

  • .gitlab-ci.yml의 환경 변수를 통해 라이센스 준수 설정을 variables의 매개 변수를 사용하여 변경할 수 있습니다.

2. 사용 가능한 변수

  • 환경 변수를 사용하여 License Compliance를 구성할 수 있습니다.

환경 변수

필수

기술

환경 변수

필수

기술

MAVEN_CLI_OPTS

no

mvn 실행 파일에 대한 추가 인수 제공되지 않은 경우
기본값은 -DskipTests입니다.

LICENSE_FINDER_CLI_OPTS

no

license_finder실행 파일에 대한 추가 인수 예를 들어, 프로젝트에 다른 디렉토리에 Golang 및 Ruby 코드가 모두 저장되어 있고 Ruby 코드만 스캔하려는 경우 .gitlab-ci-yml템플릿을 업데이트하여 스캔 할 프로젝트 디렉토리를 지정할 수 있습니다.
LICENSE_FINDER_CLI_OPTS: '--debug --aggregate-paths=. ruby'.

LM_JAVA_VERSION

no

Java 11. 버전으로 설정하면 Maven 및 Gradle은 Java 8 대신 Java 11을 사용합니다.

LM_PYTHON_VERSION

no

파이썬의 3. 버전으로 설정하면 Python 2.7 대신 Python 3을 사용하여 종속성이 설치됩니다.

SETUP_CMD

no

종속성 설치를 위한 사용자 정의 설정. (experimental)

PIP_INDEX_URL

no

파이썬 패키지 인덱스의 기본 URL
(기본값 : https://pypi.org/simple/)

ADDITIONAL_CA_CERT_BUNDLE

no

신뢰할 수있는 CA 인증서 번들 (현재 Python 프로젝트에서 지원됨).

3. 사용자 정의 종속성 설치

  • license_management이미지는 이미 많은 자동검출 스크립트, 언어 및 패키지를 포함합니다. 그러나 모든 프로젝트의 모든 사례를 다루는 것은 거의 불가능합니다. 추가 패키지를 설치하거나 인증서 설치와 같은 프로젝트 자동화 설정에 추가 절차가 필요할 수 있습니다. 

  • 이를 위해 LICENSE_MANAGEMENT_SETUP_CMD 환경변수를 컨테이너에 넘겨 라이센스 검출 전에 실행해야 할 명령어를 지정할 수 있습니다.

    • 이 변수가 있는 경우 응용프로그램의 모든 패키지를 설치하기 위해 필요한 설정 단계를 재정의함.
      (예 : 프로젝트가있는 프로젝트의 Gemfile 경우 설정 단계는 bundle install).

    • 예를 들면 아래와 같습니다.

include: - template: License-Scanning.gitlab-ci.yml variables: LICENSE_MANAGEMENT_SETUP_CMD: sh my-custom-install-script.sh
  • 이 예제는 my-custom-install-script.sh프로젝트의 루트 디렉토리에 있는 쉘 스크립트입니다.

4. 템플릿 재정의

  • 작업 정의를 재정의하려면 (예 : variables또는 dependencieslicense_scanning템플릿 포함 후 license_scanning 작업 을 선언하고 그 아래에 추가 키를 지정해야합니다. 

    • 예를 들면 아래와 같습니다.

include: - template: License-Scanning.gitlab-ci.yml license_scanning: variables: CI_DEBUG_TRACE: "true"

5. 오프라인 환경에서 라이센스 준수 실행

  • registry.gitlab.com/gitlab-org/security-products/license-management:latest로컬 Docker 컨테이너 레지스트리에서 License Compliance 이미지를 호스팅합니다.

  • image로컬 Docker 컨테이너 레지스트리에서 호스팅 되는 License Compliance Docker 이미지를 참조 하려면 값을 바꿔야 합니다.

    • .gitlab-ci.yml파일에 아래와 같이 추가 

  • GitLab 환경 내에서 패키지 레지스트리에 접근할 수 있고 패키지 관리자가 선호하는 패키지 레지스트리를 사용하도록 구성되어 있는지 확인.

6. 라이센스 준수를 위한 프로젝트 정책

  • 프로젝트 설정에서 라이센스 목록 및 해당 상태를 관리하고 라이센스는 수동으로 허용 또는 거부 할 수 있습니다.

    • 라이센스를 허용하거나 거부하려면

      1. merge request widget에서 Manage licenses 버튼를 사용 하거나 프로젝트의 Settings> CI / CD> License Compliance 

      2. Add a license 버튼을 클릭

         

      3.  License name 에서 드롭 다운, 아래 중 하나를 선택

        • 사용 가능한 라이센스 중 하나를 선택 후 목록 상단의 필드에서 라이센스를 검색 할 수 있습니다

        • 목록 상단의 필드에 임의의 텍스트를 입력 시 텍스트가 라이센스 이름으로 목록에 추가됩니다.

      4. 선택한 라이센스를 각각 허용 또는 거부 하려면 Allow 또는 Deny 라디오 버튼을 선택

    • 기존 라이센스를 수정

      • License Compliance 목록에서 클릭 허용 / 거부 원하는 상태로 변경 드롭 다운.

         

    • 라이센스 검색

      • Search 상자를 사용하여 특정 라이센스를 검색

7. 파이프 라인에 따른 라이센스 준수 보고서

  • 프로젝트의 왼쪽 사이드 바에서 CI / CD> 파이프 라인으로 이동 하고 license_management작업이 있는 파이프 라인 ID를 클릭하면 나열된 라이센스가 있을 시 라이센스 탭이 표시됩니다.

8. 라이센스 목록

  • 라이센스 목록을 사용하면 프로젝트 라이센스와 라이센스에 대한 주요 세부 정보를 볼 수 있습니다.

  • 라이센스가 라이센스 목록 아래에 표시 되려면 다음 요구 사항이 충족되어야 합니다.

  • 모든 것이 설정되면 Security & Compliance > License Compliance 로 이동 시 다음과 같은 라이센스가 표시됩니다.

    • 이름 : 라이센스의 이름

    • 구성 요소 : 이 라이센스가있는 구성 요소

9. 정책

  • Policies 탭을 사용하면 프로젝트의 소프트웨어 라이센스 정책과 각 관련 분류를 볼 수 있습니다.

  • 프로젝트의 관리자가 정책을 구성할 수 있습니다.

  • 프로젝트 개발자는 아래와 같이 프로젝트에 구성된 정책을 볼 수 있습니다.