# 식별자와 라이선스

> 구성요소를 일관되게 가리키는 PURL·CPE·SWID 식별자와, SPDX 라이선스 식별자 표기 방법을 정리합니다.

---

LLMS index: [llms.txt](/llms.txt)

---

같은 구성요소를 두고 SBOM마다 이름을 다르게 적으면 자동 대조가 무너집니다. "Apache Tomcat"과
"tomcat", "Apache Software Foundation Tomcat"이 같은 것인지 기계가 알 길이 없기 때문입니다. 그래서
구성요소를 일관되게 가리키는 식별자 체계와, 라이선스를 표준 코드로 표기하는 규약이 필요합니다.

## 세 가지 식별자: PURL, CPE, SWID

실무에서 함께 쓰이는 세 식별자는 역할이 갈립니다. 배타적이지 않으므로, 가능하면 함께 기재하는 것이
권장됩니다.

| 식별자 | 운영 주체 | 주된 용도 |
|---|---|---|
| PURL(Package URL) | 커뮤니티(purl-spec) | 패키지 관리자 생태계 안의 구성요소를 정확히 지목 |
| CPE(Common Platform Enumeration) | NIST | 제품을 일관된 이름으로 표기해 해당 CVE를 조회 |
| SWID(Software Identification Tag) | ISO/IEC 19770-2 | 제품·버전·생산 주체를 구조화한 메타데이터 |

**표 1.** SBOM에서 함께 쓰이는 식별자 *(출처: purl-spec, NIST NVD, ISO/IEC 19770-2. 수집일 2026-06-14)*

패키지 URL은 다음과 같은 형식으로 패키지 관리자 생태계 안의 구성요소를 가리킵니다.

```
pkg:maven/org.apache.logging.log4j/log4j-core@2.14.1
pkg:npm/lodash@4.17.21
pkg:pypi/requests@2.31.0
```

`pkg:` 뒤에 생태계 유형(maven, npm, pypi 등), 네임스페이스, 이름, 버전이 이어집니다. 같은 구성요소를
어디서나 같은 문자열로 가리킬 수 있어, 취약점 데이터베이스나 라이선스 데이터베이스와 자동으로
연결됩니다.

CPE는 2000년대 중반 MITRE가 개발해 현재 NIST가 운영합니다. 제품을 정해진 이름 규칙으로 표기해,
그 제품에 해당하는 취약점(CVE)을 조회하는 데 쓰입니다. SWID는 ISO/IEC 19770-2로 표준화된 태그
형식으로 제품과 버전, 생산·배포 주체를 구조화해 기술하며 자산 관리에서 주로 활용됩니다. CISA 2025
최소 요소 초안이 "기타 고유 식별자"를 "소프트웨어 식별자"로 갱신한 것도 이 식별자 생태계의 성숙을
반영합니다.

## 라이선스 표기: SPDX 라이선스 식별자

라이선스 관리는 SBOM의 초기 활용처 가운데 하나입니다. 각 구성요소가 어떤 라이선스로 배포되는지를
정확히 기록해야 의무 위반과 충돌을 미리 막을 수 있습니다. 자유 서술로 적으면 대조가 안 되므로, 표준
코드를 씁니다.

[SPDX 라이선스 식별자](https://spdx.org/licenses/)는 각 라이선스에 `Apache-2.0`, `MIT`, `GPL-3.0-only`
같은 고유 코드를 부여합니다. 여러 라이선스가 함께 적용될 때는 라이선스 표현식(license expression)으로
조합합니다.

```
Apache-2.0 OR MIT
GPL-2.0-only WITH Classpath-exception-2.0
(MIT AND BSD-3-Clause)
```

`OR`는 선택 가능한 복수 라이선스, `AND`는 동시에 적용되는 복수 라이선스, `WITH`는 예외 조항과의
결합을 나타냅니다.

실무에서 지켜야 할 원칙은 다음과 같습니다.

- 제품 전체의 라이선스뿐 아니라 모든 개별 구성요소의 라이선스를 함께 볼 수 있어야 합니다.
- 표준 목록에 없는 라이선스를 만나면 출처를 나타내는 접두사를 붙인 식별자(예:
  `LicenseRef-` 접두사)를 부여해 추적합니다.
- 라이선스 텍스트를 사소하게 수정했더라도 의미가 크게 달라지지 않으면 원본과 같은 식별자를 씁니다.
- 라이선스의 호환성을 분석해, 서로 다른 라이선스의 구성요소를 결합할 때 생길 충돌을 미리 식별합니다.

라이선스 필드가 도구로 자동 추출되더라도 그 정확도는 별개의 문제입니다. 비표준 라이선스의 정확한
식별, 듀얼 라이선스 처리, 행동 사용 제한이 붙은 라이선스의 준수 여부는 여전히 사람과 정책의 몫입니다.
자동화의 경계는 [5. 도구와 자동화](../../5-tools/)에서 다룹니다.

## 출처

Package URL 명세 <https://github.com/package-url/purl-spec>. NIST. *Common Platform Enumeration (CPE)*
<https://nvd.nist.gov/products/cpe>. ISO/IEC 19770-2:2015. SPDX License List
<https://spdx.org/licenses/>. SPDX License Expressions
<https://spdx.github.io/spdx-spec/v2.3/SPDX-license-expressions/>. (모두 접속: 2026-06-14)
