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. 지원되는 언어 및 패키지 관리자
Language | Package managers | Scan Tool |
---|---|---|
JavaScript | ||
Go | Godep, go get (experimental support), gvt (experimental support), glide (experimental support), dep (experimental support), trash (experimental support) and govendor (experimental support), go mod (experimental support) | |
Java | ||
.NET | Nuget (.NET Framework is supported via the mono project. Windows specific dependencies are not supported at this time.) | |
Python | pip (Python is supported through requirements.txt and Pipfile.lock.) | |
Ruby | ||
Erlang | ||
Objective-C, Swift | ||
Elixir | ||
C++/C | ||
Scala | ||
Rust | ||
PHP |
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를 구성할 수 있습니다.
환경 변수 | 필수 | 기술 |
---|---|---|
| no | mvn 실행 파일에 대한 추가 인수 제공되지 않은 경우 |
| no |
|
| no | Java 11. 버전으로 설정하면 Maven 및 Gradle은 Java 8 대신 Java 11을 사용합니다. |
| no | 파이썬의 3. 버전으로 설정하면 Python 2.7 대신 Python 3을 사용하여 종속성이 설치됩니다. |
| no | 종속성 설치를 위한 사용자 정의 설정. (experimental) |
| no | 파이썬 패키지 인덱스의 기본 URL |
| 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
또는dependencies
)license_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. 라이센스 준수를 위한 프로젝트 정책
프로젝트 설정에서 라이센스 목록 및 해당 상태를 관리하고 라이센스는 수동으로 허용 또는 거부 할 수 있습니다.
라이센스를 허용하거나 거부하려면
merge request widget에서 Manage licenses 버튼를 사용 하거나 프로젝트의 Settings> CI / CD> License Compliance
Add a license 버튼을 클릭
License name 에서 드롭 다운, 아래 중 하나를 선택
사용 가능한 라이센스 중 하나를 선택 후 목록 상단의 필드에서 라이센스를 검색 할 수 있습니다
목록 상단의 필드에 임의의 텍스트를 입력 시 텍스트가 라이센스 이름으로 목록에 추가됩니다.
선택한 라이센스를 각각 허용 또는 거부 하려면 Allow 또는 Deny 라디오 버튼을 선택
기존 라이센스를 수정
License Compliance 목록에서 클릭 허용 / 거부 원하는 상태로 변경 드롭 다운.
라이센스 검색
Search 상자를 사용하여 특정 라이센스를 검색
7. 파이프 라인에 따른 라이센스 준수 보고서
프로젝트의 왼쪽 사이드 바에서 CI / CD> 파이프 라인으로 이동 하고
license_management
작업이 있는 파이프 라인 ID를 클릭하면 나열된 라이센스가 있을 시 라이센스 탭이 표시됩니다.
8. 라이센스 목록
라이센스 목록을 사용하면 프로젝트 라이센스와 라이센스에 대한 주요 세부 정보를 볼 수 있습니다.
라이센스가 라이센스 목록 아래에 표시 되려면 다음 요구 사항이 충족되어야 합니다.
프로젝트에 대해 라이센스 준수 CI 작업을 구성해야 합니다 .
프로젝트는 지원되는 언어 및 패키지 관리자 중 하나 이상을 사용해야 합니다 .
모든 것이 설정되면 Security & Compliance > License Compliance 로 이동 시 다음과 같은 라이센스가 표시됩니다.
이름 : 라이센스의 이름
구성 요소 : 이 라이센스가있는 구성 요소
9. 정책
Policies 탭을 사용하면 프로젝트의 소프트웨어 라이센스 정책과 각 관련 분류를 볼 수 있습니다.
프로젝트의 관리자가 정책을 구성할 수 있습니다.
프로젝트 개발자는 아래와 같이 프로젝트에 구성된 정책을 볼 수 있습니다.