본문으로 건너뛰기

오픈소스 정책 수립: 법적 보호의 첫걸음

1. 이 챕터에서 하는 일

이 챕터에서는 회사 맞춤형 오픈소스 정책 문서를 작성합니다. 오픈소스 정책은 단순한 내부 규정집이 아니다 — 라이선스 분쟁이나 취약점 사고가 발생했을 때 회사가 체계적인 컴플라이언스 관리를 해왔다는 법적 보호 수단이 됩니다. 납품처나 파트너사에서 오픈소스 관리 체계 증빙을 요구할 때도 즉시 제출할 수 있는 공식 문서가 됩니다.

agents/03-policy-generator 를 실행하면 회사의 배포 방식, 개발 언어, 납품 여부 등 5가지 질문에 대한 답변을 바탕으로 output/policy/oss-policy.mdoutput/policy/license-allowlist.md 두 가지 산출물을 자동 생성합니다.


2. 배경 지식

오픈소스 정책이 왜 필요한가

오픈소스 라이선스 위반은 실제 법적 분쟁으로 이어진 사례가 있습니다.

Artifex vs Hancom (2017) 한컴오피스는 GPL 라이선스로 배포되는 Ghostscript(PDF 렌더링 엔진)를 제품에 무단으로 사용했다. Artifex Software는 미국 캘리포니아 법원에 소송을 제기했고, 법원은 1심에서 GPL 라이선스가 계약으로서 법적 구속력을 가진다는 판결을 내렸다. 이 사건은 오픈소스 라이선스 위반이 단순한 저작권 문제를 넘어 계약 위반 책임까지 발생할 수 있음을 보여준다.

정책 부재 시 실무에서 발생하는 문제

  • 라이선스 충돌: GPL 코드가 Apache-2.0 프로젝트에 섞이면 전체 배포가 불가능해질 수 있다
  • 고지 누락: Apache-2.0, MIT 등 Permissive 라이선스도 NOTICE 파일 또는 저작권 고지 의무가 있다
  • 취약점 방치: 오픈소스 컴포넌트의 알려진 CVE를 추적하지 않으면 제품에 보안 취약점이 방치된다

문서화된 정책이 있으면 위반 발생 시 "고의성 없음"을 입증하는 근거가 되고, 체계적인 절차를 운영했다는 증거로 활용됩니다.


표준이 요구하는 정책 필수 구성 요소

ISO/IEC 5230(라이선스 컴플라이언스)과 ISO/IEC 18974(보안 보증)는 각각 정책 문서에 포함되어야 할 항목을 정의합니다.

필수 항목ISO/IEC 5230ISO/IEC 18974
오픈소스 사용 허용 범위
라이선스 의무 이행 절차
담당자 및 연락처
정책 위반 시 처리 절차
정책 검토 주기
알려진 취약점 대응 절차
보안 취약점 공개 정책

두 표준 모두 정책 문서의 존재만으로는 부족하며, 실제로 직원들이 접근할 수 있고 인지하고 있어야 한다고 요구합니다.

이 단계는 ISO/IEC 5230 3.1.1 (오픈소스 정책 수립 및 문서화) 요구사항을 충족합니다.


라이선스 분류 이해

오픈소스 라이선스는 의무사항의 강도에 따라 크게 세 가지로 분류됩니다. 회사의 배포 방식에 따라 각 분류의 적용 기준이 달라지므로 정책 작성 전에 반드시 이해해야 합니다.

분류대표 라이선스특징배포별 주의사항
PermissiveMIT, Apache-2.0, BSD의무사항 적음, 상업적 사용 자유거의 모든 배포 방식에서 안전
Weak CopyleftLGPL, MPL수정 부분만 공개 의무동적 링킹이면 대부분 안전
Strong CopyleftGPL, AGPL전체 소스 공개 의무 가능성SaaS는 GPL 안전, AGPL은 주의

배포 방식별 영향

배포 방식은 라이선스 의무 발생 여부를 결정하는 핵심 요소다.

  • SaaS (서버 제공): GPL 코드를 서버에서 실행하는 것은 "배포"에 해당하지 않으므로 GPL 의무가 발생하지 않는다. 단, AGPL-3.0은 네트워크를 통한 서비스 제공에도 소스 공개 의무를 부여하므로 주의가 필요하다.
  • 앱스토어 배포 (모바일/데스크톱): 바이너리 형태로 사용자에게 배포되므로 Copyleft 라이선스 의무가 발생합니다. GPL 컴포넌트를 포함하면 전체 소스 공개 의무가 생길 수 있습니다.
  • 임베디드 (펌웨어/하드웨어): 가장 엄격한 케이스다. 바이너리 배포로 인해 GPL 의무가 발생하고, 하드웨어에 포함된 소프트웨어는 수정 후 재설치가 어렵다는 점 때문에 GPL 컴플라이언스가 더 까다롭다.

이 단계는 ISO/IEC 5230 3.1.4 (프로그램 범위 정의) 요구사항을 충족합니다.


실습 전 확인

이 실습은 trustedoss 프로젝트 루트에서 Claude Code 를 실행하는 환경을 전제합니다.

  • trustedoss 저장소를 클론했나요? git clone https://github.com/haksungjang/trustedoss.git
  • 터미널에서 프로젝트 루트에 있나요? cd trustedoss
  • Claude Code 가 실행 중인가요? claude

모두 체크되지 않았다면 → 1. 환경 준비 챕터를 먼저 진행하세요.

3. 셀프 스터디

셀프스터디 모드 (약 1시간)

agent와 대화하며 정책 문서를 생성합니다. 아래 5개 질문에 미리 답변을 준비해두면 빠르게 진행됩니다.

사전 준비: 5개 질문에 대한 답변 정리

agent 실행 전에 아래 질문에 대한 회사 상황을 간단히 메모해두면 작업이 빠르게 진행됩니다.

  1. 소프트웨어 배포 방식: SaaS / 앱스토어(모바일·데스크톱) / 임베디드(펌웨어·하드웨어) / 내부 도구만 / 복합 (중복 선택 가능)
  2. 주요 개발 언어와 패키지 매니저: 예) Python + pip, JavaScript + npm, Java + Maven 등
  3. 오픈소스 프로젝트 기여 계획: GitHub 등 외부 오픈소스 프로젝트에 코드를 기여할 계획이 있는가
  4. 외부 고객/납품처에 납품 여부: 제품이나 소프트웨어를 외부 고객에게 납품하거나 판매하는가
  5. 현재 라이선스 검토 절차 유무: 현재 오픈소스 도입 시 라이선스를 검토하는 절차가 있는가

단계별 실습

Step 1. 회사 상황 정리 위 5개 질문에 대한 답변을 미리 메모합니다.

Step 2. policy-generator agent 실행

실행 전 확인

현재 Claude 세션을 먼저 종료(/exit 또는 Ctrl+C)한 뒤, 새 터미널에서 아래 명령을 실행하세요.

cd agents/03-policy-generator
claude

:::details Agent 대화 예시 (클릭해서 펼치기) 아래는 실제 agent와의 대화 흐름 예시입니다. 실행 시 이런 형태로 진행됩니다.

Agent 안내 메시지:

안녕하세요! 오픈소스 정책 산출물을 생성하는 agent입니다. 5개 질문에 답변하시면 정책 문서 2개가 자동으로 생성됩니다.


질문 1/5 — 소프트웨어 배포 방식은? (SaaS / 앱스토어 배포 / 임베디드 / 내부용 / 복합)

예시 답변: SaaS

질문 2/5 — 주로 사용하는 개발 언어와 패키지 매니저는?

예시 답변: Python + pip, JavaScript + npm

질문 3/5 — 오픈소스 프로젝트에 기여할 계획이 있나요?

예시 답변: 없음 (내부 서비스 개발에 집중)

질문 4/5 — 외부 고객/납품처에 소프트웨어를 납품하나요?

예시 답변: 없음 (자사 SaaS 서비스만 운영)

질문 5/5 — 현재 라이선스 검토 절차가 있나요? (있음 / 없음 / 비공식적으로 있음)

예시 답변: 비공식적으로 있음


생성 완료 시 출력 예시:

파일내용
output/policy/oss-policy.md오픈소스 정책 문서 (목적, 적용 범위, 의무사항)
output/policy/license-allowlist.md배포 방식별 허용 라이선스 목록

직접 기입이 필요한 항목:

  • 담당자 실제 성명 및 이메일
  • 정책 시행일
  • 정책 검토 주기 확정 :::

Step 3. Claude 프롬프트가 열리면 시작 을 입력합니다.

Step 4. agent 질문에 순서대로 답변 agent가 5개 질문을 하나씩 물어본다. 준비한 답변을 바탕으로 대화합니다. 확실하지 않은 항목은 agent에게 가이드를 요청할 수 있습니다.

Step 5. oss-policy.md 검토

open output/policy/oss-policy.md
  • 회사명과 실제 담당자 이름이 반영되어 있는지 확인
  • 배포 방식에 맞는 라이선스 의무 이행 절차가 포함되어 있는지 확인
  • 정책 검토 주기(예: 연 1회)가 명시되어 있는지 확인

Step 6. license-allowlist.md 검토 및 수정

open output/policy/license-allowlist.md
  • 우리 배포 방식에 맞는 분류가 적용되어 있는지 확인
  • 실제 사용 중인 라이선스가 목록에 포함되어 있는지 확인
  • 필요 시 항목 추가 또는 조건 수정

Step 7. 완료 확인 체크리스트 점검 아래 5번 섹션의 체크리스트를 항목별로 확인합니다.

이 단계는 ISO/IEC 5230 3.5.1 (오픈소스 기여 정책 수립) 요구사항을 충족합니다.


예상 결과

실습이 정상적으로 완료되면 아래 파일이 생성됩니다.

생성 파일:

  • output/policy/oss-policy.md
  • output/policy/license-allowlist.md

파일 내 반드시 포함되어야 할 항목:

  • 오픈소스 사용 허용 범위 및 제한
  • 라이선스 의무 이행 절차
  • 담당자 및 연락처
  • 정책 위반 시 처리 절차
  • 정책 검토 주기
  • 알려진 취약점 대응 절차 (18974 요구사항)

생성된 파일을 열어 위 항목이 포함되어 있는지 직접 확인하고 필요시 보완하세요.

충족되는 표준 요구사항

이 실습을 완료하면 아래 요구사항이 충족됩니다.

ISO/IEC 5230

항목 ID요구사항자체인증 체크리스트
3.1.1오픈소스 정책 문서화Do you have a documented open source policy?
3.1.4프로그램 범위 정의Is the scope of your open source program documented?
3.5.1오픈소스 커뮤니티 참여 정책Do you have a policy for open source community participation?
3.5.1오픈소스 기여 프로세스Do you have a process for contributing to open source projects?

ISO/IEC 18974

항목 ID요구사항자체인증 체크리스트
4.1.1보안 보증 정책 문서화Do you have a documented open source security assurance policy?
4.1.4보안 프로그램 범위 정의Is the scope of your open source security assurance program documented?

4. 완료 확인 체크리스트

agent 실행 후 사람이 직접 확인해야 할 항목들입니다. 체크리스트를 모두 통과해야 이 챕터가 완료됩니다.

파일 생성 확인

  • output/policy/oss-policy.md 파일이 존재한다
  • output/policy/license-allowlist.md 파일이 존재한다

정책 내용 확인

  • 정책에 회사명과 실제 담당자 이름이 반영되어 있다
  • 우리 배포 방식에 맞는 라이선스 분류와 의무사항이 적용되어 있다
  • 오픈소스 기여 정책이 포함되어 있다 (기여 계획이 있는 경우)
  • 취약점 대응 절차가 포함되어 있다 (ISO/IEC 18974 요구사항)
  • 정책 검토 주기가 명시되어 있다 (예: 연 1회)

oss-policy.md 주요 섹션 목차 예시

생성된 정책 문서가 아래 섹션을 포함하고 있는지 확인합니다.

1. 목적 및 적용 범위
2. 정책 담당자 및 책임
3. 오픈소스 사용 허용 기준
4. 라이선스 의무 이행 절차
5. 오픈소스 기여 정책
6. 보안 취약점 대응 절차
7. 정책 위반 처리
8. 정책 검토 및 개정

license-allowlist.md 샘플 표 예시

생성된 허용 라이선스 목록이 배포 방식별로 올바르게 분류되어 있는지 아래 샘플과 비교합니다.

| 라이선스 | 분류 | 내부 사용 | SaaS 배포 | 앱 배포 | 임베디드 |
|---------|------|---------|---------|--------|---------|
| MIT | Permissive | ✓ 허용 | ✓ 허용 | ✓ 허용 | ✓ 허용 |
| Apache-2.0 | Permissive | ✓ 허용 | ✓ 허용 | ✓ 허용 | ✓ 허용 |
| LGPL-2.1 | Weak Copyleft | ✓ 허용 | ✓ 허용 | △ 조건부 | △ 조건부 |
| GPL-2.0 | Strong Copyleft | ✓ 허용 | ✓ 허용 | ✗ 검토 필요 | ✗ 검토 필요 |
| AGPL-3.0 | Strong Copyleft | ✓ 허용 | ✗ 검토 필요 | ✗ 검토 필요 | ✗ 검토 필요 |

📋 산출물 예시: 정책 산출물 Best Practice에서 생성된 파일의 실제 형식을 확인할 수 있습니다.


5. 다음 단계

이 챕터를 완료했으면 프로세스 설계 단계로 이동합니다. 오픈소스 프로세스는 정책에서 정의한 절차를 실제 업무 흐름으로 구체화하는 단계다.

실행 전 확인

현재 Claude 세션을 먼저 종료(/exit 또는 Ctrl+C)한 뒤, 새 터미널에서 아래 명령을 실행하세요.

cd agents/04-process-designer
claude

또는 오픈소스 프로세스: 사용부터 배포까지로 이동하여 챕터 문서를 읽고 진행합니다.

이 단계는 ISO/IEC 5230 3.1.1, 3.1.4, 3.5.1 및 ISO/IEC 18974 4.1.1 요구사항을 충족합니다.