> For the complete documentation index, see [llms.txt](https://docs.medcrypt.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.medcrypt.com/ko/helm/manage-sbom/manage-licenses.md).

# 라이선스 관리

Helm은 CycloneDX 및 SPDX SBOM에서 라이선스 정보를 가져오고, Tidelift와의 파트너십 통합을 통해 이 정보를 보강합니다. 필요에 따라 라이선스 세부 정보를 직접 입력하거나 수정할 수도 있습니다.

각 구성 요소의 세부 정보를 확인하거나 라이선스 정보를 추가하도록 직접 수정할 수 있습니다. 모든 라이선스 정보는 구성 요소 세부 정보 패널의 **라이선스 세부 정보** 섹션에 표시됩니다.

### **지원되는 SPDX 라이선스**

* 현재 유효한 SPDX 라이선스는 [SPDX 라이선스 목록](https://spdx.github.io/spdx-spec/v2.3/SPDX-license-list/).
* 의 해당 라이선스 URL에 자동으로 연결됩니다. SBOM에 폐기된 SPDX 라이선스가 포함된 경우 Helm은 [폐기된 SPDX 라이선스](https://spdx.github.io/spdx-spec/v2.3/SPDX-license-list/#a3-deprecated-licenses) URL을 유지합니다.
* Helm은 [SPDX 라이선스 예외](https://spdx.github.io/spdx-spec/v2.3/SPDX-license-list/#a2-exceptions-list).

## **CycloneDX SBOM에서 라이선스 가져오기**

Helm은 CycloneDX SBOM의 다음 섹션에서 라이선스 정보를 가져옵니다.

* **`components > licenses`**: 라이선스 정보의 기본 출처입니다. 각 구성 요소에는 라이선스 ID, 이름 또는 SPDX 표현식 중 하나가 포함되어야 합니다.
* **`components > pedigree > notes`**: 이 값은 **라이선스 설명** 필드에 입력됩니다. 이 `notes` 필드는 CycloneDX SBOM의 모든 구성 요소에 적용되므로, 여기에 있는 정보는 특정 구성 요소의 모든 라이선스에 적용됩니다.

Helm은 CycloneDX SBOM의 다른 섹션에서 입력된 라이선스 정보를 지원하지 않습니다. 이러한 정보는 내보내기에 유지되지만 UI에는 표시되지 않습니다.

## **SPDX SBOM에서 라이선스 가져오기**

SPDX SBOM에는 패키지가 포함되며, 각 패키지는 SBOM 작성자가 그룹화한 파일 또는 파일 집합일 수 있습니다. 이러한 파일에는 소스, 문서, 바이너리 등을 포함한 모든 유형의 파일이 하나 이상 포함될 수 있습니다. Helm은 각 패키지를 구성 요소로 처리합니다. SPDX SBOM에는 패키지, 파일 또는 코드 스니펫 수준의 라이선스 정보가 포함될 수 있습니다. 라이선스 정보가 포함된 각 패키지에 대해 Helm은 해당 라이선스 정보를 종속성 구성 요소의 세부 정보에 있는 **라이선스** 섹션에 입력합니다.

Helm은 각 패키지를 구성 요소로 처리하고 다음 필드에서 라이선스 정보를 가져옵니다.

* **`PackageLicenseConcluded`**: 라이선스 이름을 입력하는 기본 필드입니다. 이 필드가 없으면 Helm은 `PackageLicenseDeclared` 필드를 사용합니다.
* **`ExtractedLicensingInfo`**: 이 섹션이 있으면 사용자 지정 라이선스 또는 SPDX에 포함되지 않은 라이선스의 이름과 텍스트를 제공합니다. 사용자 지정 라이선스를 추가할 때 라이선스 이름을 직접 입력할 수 있지만 URL은 표시되지 않습니다.

Helm은 현재 파일 수준 라이선스를 처리하지 않습니다. 이 기능이 필요하시면 [문의해 주세요](mailto:support@medcrypt.com)! SBOM에 파일 수준 라이선스 정보가 포함된 경우 내보내기에 포함되지만 UI에는 표시되지 않습니다.

{% hint style="info" %}
**SPDX 사양 버전**

Helm은 SPDX 2.2 및 2.3을 지원하지만, 이 문서에서는 라이선스 목록 3.17을 사용하는 [SPDX 2.3 사양](https://spdx.github.io/spdx-spec/v2.3/) 을 사용합니다. Helm은 SPDX 라이선스 예외, 폐기된 SPDX 라이선스 ID 및 모든 버전 목록을 지원합니다.

SPDX 버전 또는 라이선스 목록 버전이 다른 경우 SBOM 섹션 이름이나 필드 이름이 다를 수 있으므로 사용 중인 SPDX 사양 버전을 확인해야 합니다.
{% endhint %}

## 누락된 라이선스 식별 및 자동 추가

Helm은 라이선스 세부 정보가 없는 오픈 소스 구성 요소의 라이선스 정보를 보강하기 위해 Tidelift와 협력하고 있습니다.

* **구성 요소 라이선스가 No license(SPDX에서 NONE)로 설정된 경우**: SBOM의 구성 요소에 라이선스가 없지만 고유한 PURL이 있거나 Helm이 올바른 PURL을 생성할 수 있으면, Helm은 Tidelift에 문의하여 해당 구성 요소와 연결된 라이선스가 있는지 확인합니다. 라이선스가 있으면 이를 추가하여 라이선스 정보를 종합적으로 확인하고 공급망 전반의 라이선스 위험을 파악할 수 있도록 합니다.
* **구성 요소 라이선스가 Unknown(SPDX에서 NOASSERTION)으로 설정된 경우:** SBOM 구성 요소의 라이선스가 **Unknown (NOASSERTION in SPDX)**(으)로 설정되어 있지만 Tidelift에서 해당 구성 요소와 연결된 라이선스가 하나 이상 있다고 확인되면, 해당 라이선스를 추가합니다.
* **컴포넌트에 하나 이상의 라이선스가 있는 경우**: SBOM 컴포넌트에 라이선스가 하나 이상 있지만 Tidelift에서 해당 라이선스가 부정확하거나 이 컴포넌트와 관련된 라이선스가 추가로 있다고 표시하는 경우, Helm은 이 라이선스 정보를 업데이트하지 않습니다. 이 기능을 추가하기를 원하시면 [알려주시기 바랍니다](mailto:support@medcrypt.com).

{% hint style="info" %}
라이선스 교체 제안을 표시하는 기능의 추가를 검토하기를 원하시면 [알려주시기 바랍니다](mailto:support@medcrypt.com).
{% endhint %}

### 기존 컴포넌트의 라이선스 자동 생성

기존 컴포넌트에는 Helm이 라이선스 정보를 자동으로 추가하도록 할 수 있습니다. **컴포넌트** 테이블에서 **Actions > Reload component**를 클릭합니다. 다시 로드하면 검토 정보 등 이 컴포넌트에 추가한 모든 메타데이터가 삭제되고 관련 취약점이 다시 식별되므로, 해당 컴포넌트의 취약점 수가 달라질 수 있습니다. 이 기능은 라이선스 정보를 수동으로 찾는 수고를 줄이고 데이터 소스에서 제공하는 최신 라이선스 정보를 확보하는 데 도움이 됩니다.

## 라이선스 정보 보기

컴포넌트 세부 정보 패널의 **Licenses** 섹션에는 다음 필드가 표시됩니다.

**License type:** 이 필드는 SBOM의 라이선스 정보로 채워집니다.

* **License expression**:
  * 여러 SPDX 라이선스를 `AND` 또는 `OR`로 결합하거나 SPDX 라이선스 예외를 사용하는 컴포넌트에 적용됩니다.
  * **Individual licenses:** SBOM 컴포넌트에 AND 또는 OR(또는 +)로 결합되지 않은 여러 SPDX 라이선스가 포함되어 있거나 컴포넌트에 사용자 지정 라이선스가 있는 경우 이 옵션을 선택합니다.
  * **No license (NONE in SPDX):** SBOM 컴포넌트에 관련 라이선스가 없다는 것이 확실한 경우 이 옵션을 선택합니다. SPDX SBOM에서는 이를 `NONE` 값으로 나타냅니다.
  * **Unknown (NOASSERTION in SPDX):** SBOM에 관련 라이선스가 있는지 확실하지 않은 경우 이 옵션을 선택합니다. SPDX SBOM에서는 이를 `NOASSERTION` 값으로 나타냅니다. CycloneDX SBOM에 라이선스 정보가 없거나 비어 있는 경우에는 **Unknown**
* **Individual licenses**: 결합되지 않은 여러 SPDX 라이선스가 있는 컴포넌트 또는 사용자 지정 라이선스에 적용됩니다.
* **No license (NONE in SPDX):** 컴포넌트에 관련 라이선스가 없습니다. SPDX SBOM에서는 이를 **NONE** 값으로 나타냅니다.
  * **CycloneDX SBOM:** CycloneDX 1.4 또는 1.5 사양에는 이에 해당하는 값이 없습니다. 라이선스에 이 값을 수동으로 추가한 후 CycloneDX SBOM을 내보내면 이 컴포넌트의 라이선스 정보에 있는 **components > licenses > license name** 필드에 이 값이 포함됩니다.
  * **SPDX SBOM:** SPDX SBOM 작성자가 패키지 수준의 라이선스 정보로 `NONE` 을 제공했음을 나타냅니다. SPDX 사양에서는 정보가 제공되지 않은 경우 해당 값을 `NOASSERTION`.
  * 으로 설정하도록 요구합니다. Helm은 오픈 소스 종속성 컴포넌트에 실제로 관련 라이선스가 있는지 확인을 시도합니다.
* **알 수 없음(SPDX의 NOASSERTION):**
  * 구성 요소에 연결된 라이선스가 있는지 확실하지 않은 경우 사용합니다. 오픈 소스 종속성 구성 요소의 경우 Helm이 이 라이선스를 식별하려고 시도합니다.
  * **SPDX SBOM:** SPDX SBOM 작성자가 다음을 제공했거나 `NOASSERTION` 패키지 수준의 라이선스 정보를 제공하지 않았음을 나타냅니다.
  * **CycloneDX SBOM:** CycloneDX SBOM에 라이선스 정보가 포함되지 않았거나 라이선스 정보가 비어 있음을 나타냅니다.

**라이선스 이름**:

*SPDX SBOM*

SPDX SBOM의 경우, 이 필드는 SBOM의 `PackageLicenseConcluded`, `PackageLicenseDeclared`또는 `ExtractedLicensingInfo` 섹션에서 가져옵니다. **PackageLicenseDeclared** 는 SBOM의 **PackageLicenseConcluded** 필드가 비어 있거나 생략된 경우에만 사용됩니다.

* 패키지 수준 라이선스가 `LicenseRef[idstring]` 을 포함하고 해당 값이 **`LicenseRef[idstring]`** ExtractedLicensingInfo `섹션의 항목과 일치하면, 해당 섹션의 라이선스 이름과 전체 라이선스 텍스트가 각각` 에 입력됩니다. **라이선스 이름** 및 **라이선스 텍스트**에 입력됩니다. 라이선스 이름이 누락된 경우 **사용자 지정 라이선스** 라는 용어를 라이선스 이름으로 사용합니다.
* **SPDX SBOM의 비-SPDX 라이선스:** SPDX SBOM에 **ExtractedLicensingInfo** 섹션이 포함된 경우, **라이선스 이름** 필드에는 다음의 해당 라이선스 이름이 입력됩니다. `ExtractedLicensingInfo > name` 필드에서 가져옵니다.
* **SPDX SBOM의 패키지에 NONE 또는 NOASSERTION이 있음** 인 경&#xC6B0;**:** PackageLicenseConcluded `필드에` NONE `또는` NOASSERTION `이 포함되어 있으면 해당 값이 여기에 입력됩니다. 구성 요소가 오픈 소스이고 고유한 PURL이 있는 경우, 해당 구성 요소의 라이선스 정보가 있는지 확인하고 정보가 있으면 누락된 정보를 보완합니다.`SPDX SBOM에 패키지 수준의 라이선스 정보가 없습니다.
* **SPDX SBOM에 패키지 수준의 라이선스 정보가 없습니다**: `NOASSERTION` 에 입력됩니다. **라이선스 이름** 필드.
* **+로 결합된 SPDX 라이선스:** 현재는 다음과 같이 +로 결합된 라이선스를 추가할 수 없습니다. `Apache-2.0+MIT`. 하지만 SBOM에서 가져올 수 있습니다. 다만 이를 수정해야 하는 경우 Helm은 + 표현식을 AND를 사용하도록 자동 변환합니다. +를 지원해야 하는 경우, [문의해 주세요](mailto:support@medcrypt.com)!
* **SPDX 라이선스 예외:** SPDX 라이선스 예외를 추가하려면 첫 번째 SPDX 라이선스 뒤에 **WITH** 를 입력합니다. 예: `GPL-2.0-or-later WITH Bison-exception-2.2.` 공백을 정확히 입력해야 합니다. WITH 뒤에 공백을 입력하면 드롭다운을 클릭하여 유효한 SPDX 라이선스 예외만 보거나, 입력을 시작해 예외 목록을 필터링할 수 있습니다.

*CycloneDX SBOM*

* 이 필드는 다음에서 가져옵니다. `components > licenses > license > id` SBOM에 `id` 필드가 사용된 경우 해당 필드에서 가져오고, 필드가 없으면 `components > licenses > license > name` 필드가 있으면 해당 필드에서 가져옵니다.
* **CycloneDX SBOM에 라이선스 정보가 없거나 비어 있는 경우:** CycloneDX의 라이선스 정보가 누락된 경우에 해당하는 정의된 용어가 없으므로, 다음과 같이 표시됩니다. **설정되지 않음**.

**라이선스 URL**:

* SPDX 라이선스의 경우 이 필드는 SPDX 라이선스 목록에서 자동으로 입력되며 수정할 수 없습니다.
* 사용자 지정 라이선스에는 URL이 표시되지 않습니다. 이 기능의 추가를 원하시면 [문의해 주세요](mailto:support@medcrypt.com).
* CycloneDX SBOM: 다음에서 가져옵니다. `components > licenses > license ur`**l** 필드.

**라이선스 텍스트**:

* **SPDX SBOM:** 사용자 지정 라이선스의 경우 SPDX SBOM의 `ExtractedLicensingInfo > text` 섹션에서 가져옵니다.
* SPDX 라이선스와 사용자 지정 라이선스 모두의 라이선스 텍스트를 추가하거나 수정할 수 있습니다.

**라이선스 설명**:

* **SPDX SBOM:** 이 필드는 패키지 수준의 `PackageLicenseComment` 필드에서만 가져옵니다.
* **CycloneDX SBOM:** 다음 `components > pedigree > notes` 필드에 SPDX 라이선스 ID가 하나 이상 있습니다. 일부 자동 스캔 도구는 이 필드에 SPDX 라이선스의 전체 이름이나 AND/OR SPDX 표현식을 자동으로 입력합니다. 만약 `notes` 필드가 SBOM 파일에 있으면 다음과 같이 추가됩니다. **라이선스 설명** 해당 SBOM 구성 요소의 모든 라이선스에 적용됩니다.
* SPDX 라이선스와 사용자 지정 라이선스 모두에 대한 설명을 추가하거나 수정할 수 있습니다.
* 설명은 종속성 구성 요소와 연결된 모든 라이선스에 적용됩니다.

**라이선스 출처:**

* **SBOM:** 라이선스 정보는 SBOM에서 직접 가져왔습니다.
* **시스템:** 고유한 PURL은 있지만 라이선스 정보가 없는 오픈 소스 구성 요소의 경우, Helm은 해당 구성 요소에 대해 알려진 라이선스가 있는지 확인하기 위해 Tidelift를 조회합니다. 알려진 라이선스가 있으면 Helm은 해당 정보로 구성 요소를 보강합니다. Helm은 다음 경우에만 [라이선스 정보 보강](#identify-and-automatically-add-missing-licenses) 라이선스 정보가 없는 구성 요소에만 적용됩니다. 이미 하나 이상의 라이선스가 있는 구성 요소에는 라이선스를 추가하지 않으며, 기존 라이선스를 대체하지도 않습니다.
* **사용자:** 사용자가 라이선스를 추가하거나 수정했습니다.

{% hint style="info" %}
**고유한 PURL이란 무엇인가요?**

구성 요소의 고유한 PURL은 SBOM 파일에 포함된 해당 구성 요소의 원래 PURL이거나, 구성 요소 매칭 과정에서 Helm이 추가하거나 보강한 PURL일 수 있습니다.
{% endhint %}

### **구성 요소 라이선스 추가**

1. 클릭 **종속성 구성 요소 추가** 에서 **SBOM 추가(SBOM 관리)** 드롭다운 버튼.
2. 필수 필드를 지정합니다.
3. 에서 **라이선스 세부 정보** 섹션에서 **라이선스 유형**. 다음을 선택합니다. **라이선스 표현식** 하나 이상의 SPDX 라이선스를 AND, OR 또는 WITH로 연결한 표현식이 있는 경우 선택하거나 **개별 라이선스** 컴포넌트에 추가하려는 SPDX 라이선스 또는 사용자 지정 라이선스가 하나 이상 있고(표현식에 포함되지 않은 경우) 선택할 수 있습니다. **알 수 없음** 또는 **라이선스 없음**.
4. 라이선스 표현식을 추가하는 경우 다음을 클릭하여 **License expression** 드롭다운에서 다음을 표시하거나[ SPDX 라이선스 목록](https://spdx.github.io/spdx-spec/v2.3/SPDX-license-list/) 입력을 시작해 목록을 필터링할 수 있습니다. 다음을 사용할 수 있습니다. `AND`, `OR`, 또는 `WITH`. 예를 들어, 다음을 입력하면 `Ap` 표현식의 앞부분에 적용되는 Apache 라이선스를 찾을 수 있으며, 다음을 입력하면 `Apache-2.0 AND MI` 뒷부분에 해당하는 사용 가능한 MIT 라이선스를 찾을 수 있습니다. 공백에 유의하세요.
5. 다음과 같이 중첩 표현식을 추가하려면 `MIT AND (LGPL-2.1-or-later OR BSD-3-Clause)`, 를 입력합니다 `(` SPDX 라이선스 목록을 표시하거나, 입력을 시작해 목록을 필터링합니다. 괄호 안의 표현식이 먼저 처리된다는 점에 유의하세요.
6. SPDX 라이선스 예외를 추가하려면 `WITH` 를 라이선스 뒤에 입력한 다음, 드롭다운에서 예외를 선택합니다(예: `GPL-2.0-or-later WITH Bison-exception-2.2`). 공백을 정확히 입력해야 합니다.
7. 개별 라이선스를 하나 이상 추가하려면 License name 드롭다운을 클릭해 SPDX 라이선스 목록을 표시한 다음, 입력을 시작해 목록을 필터링하거나 계속 입력해 사용자 지정 라이선스를 입력합니다.
8. 라이선스 값을 지워야 하는 경우, 다음을 클릭합니다 **x** 필드의 아이콘입니다.
9. 저장하기 전에 라이선스를 삭제해야 하는 경우, 다음을 클릭합니다. **Remove** 라이선스 섹션에서.
10. 개별 사용자 지정 라이선스의 경우 라이선스 텍스트를 입력합니다. SPDX 라이선스에는 텍스트를 추가할 수 없습니다.
11. 라이선스 관련 설명을 추가하려면 **License comments** 필드에 입력합니다. 라이선스 관련 설명은 해당 구성 요소의 모든 라이선스에 연결됩니다.
12. 개별 라이선스의 경우 다음을 클릭합니다. **라이선스 추가** 를 클릭하여 새 라이선스를 추가합니다. 개별 라이선스는 다음에 추가할 수 없습니다. **라이선스 표현식**라이선스는 원하는 만큼 추가할 수 있습니다. 첫 번째 라이선스는 License 1로, 두 번째 라이선스는 License 2로 표시됩니다. 저장하면 이러한 섹션 이름이 라이선스 이름 또는 표현식 자체로 변경됩니다.
13. 클릭합니다. **Add component**성공 메시지가 표시됩니다. 구성 요소가 보이지 않으면 정렬이 적용되어 있을 수 있습니다.

### **구성 요소 라이선스 편집**

1. 클릭합니다. **Actions > Edit details** 구성 요소 세부 정보를 엽니다.
2. 다음 **라이선스 세부 정보** 섹션에서 **편집** 편집하려는 라이선스 섹션에서 클릭합니다.
3. 라이선스 유형, 라이선스 텍스트 또는 라이선스 설명만 편집하려면 해당 필드 옆의 **편집** 아이콘을 클릭합니다. 라이선스 설명을 변경하면 이 구성 요소의 다른 모든 라이선스에도 변경 사항이 적용됩니다.
4. 원하는 대로 변경한 다음 클릭합니다 **변경 사항 저장**. 성공 메시지가 표시됩니다. 구성 요소가 보이지 않으면 정렬이 적용되어 있을 수 있습니다.

### **구성 요소 라이선스 삭제**

1. 클릭합니다. **Actions > Edit details** 구성 요소 세부 정보를 엽니다.
2. 에서 **라이선스 세부 정보** 섹션에서 수정하려는 라이선스 항목의 **수정** 을 클릭합니다. 그러면 **삭제** 작업이 표시됩니다.
3. 클릭합니다 **삭제**, 그런 다음 삭제를 확인합니다. 삭제된 라이선스나 관련 데이터는 복구할 수 없습니다. 이 구성 요소에 연결된 유일한 라이선스를 삭제하면 라이선스 댓글도 모두 삭제됩니다.
4. 클릭합니다 **닫기**. 삭제가 이미 완료되어 취소할 수 없습니다. 성공 메시지가 표시됩니다. 구성 요소가 보이지 않는다면 정렬이 적용되어 있을 수 있습니다.

### **지원 중단된 라이선스 추가 또는 수정**

지원 중단된 SPDX 라이선스를 가져오거나 수동으로 추가하거나 수정할 수 있습니다. 지원 중단된 SPDX 라이선스는 **지원 중단된 라이선스** 섹션의 **라이선스 유형** 드롭다운에서 확인할 수 있습니다.

### 구성 요소 라이선스 필터링

SBOM 페이지에서 라이선스를 필터링하여 표시 범위를 좁힐 수 있습니다.

* SPDX 라이선스 ID
* 라이선스 이름
* 라이선스 없음(`NONE` — SPDX의 경우)
* 알 수 없음(`NOASSERTION` — SPDX의 경우)
* 사용자 지정 라이선스

## 라이선스 정보를 포함하여 SBOM 내보내기

다음 형식으로 라이선스 정보가 보강된 SBOM을 내보낼 수 있습니다. 사이드바에서 **보고서** 를 클릭한 다음 원하는 형식을 선택합니다.

* **FDA SBOM:** Excel 형식입니다.
* **취약점 공개 보고서(VDR):** JSON 형식입니다. 누락된 라이선스 정보는 내보낸 파일에서 `Unknown (NOASSERTION in SPDX)` 로 표시됩니다.
* **CycloneDX SBOM**: JSON 형식입니다. 누락된 라이선스 정보는 내보낸 파일에서 `Unknown (NOASSERTION in SPDX)` 로 표시됩니다.
* **SPDX SBOM**: JSON 또는 XML 형식입니다. 파일 수준의 라이선스 세부 정보도 내보낸 파일에 포함되지만 Helm UI에는 표시되지 않습니다.
* **CSV 형식**: CPE/PURL 및 라이선스 정보를 포함한 SBOM 데이터를 CSV 파일로 내보냅니다.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.medcrypt.com/ko/helm/manage-sbom/manage-licenses.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
