정책 산출물 Best Practice
policy-generator agent가 생성하는 2개 산출물의 완성 예시입니다.
자신의 output/policy/ 파일과 비교하여 빠진 항목을 확인하는 용도로 활용하세요.
레퍼런스 바로가기: 오픈소스 정책 수립 챕터 가이드
오픈소스 정책
문서: oss-policy.md
- 회사명: 테크유니콘
- 버전: 1.0
- 작성일: 2026-03-23
- 작성자: DevOps팀 오픈소스 담당자
- 승인자: DevOps팀장
- 다음 검토 예정일: 2027-03-23
관련 표준
- 5230 §3.1.1.1·§3.1.4.1·§3.1.5.1·§3.5.1.1·§3.5.1.2
- 18974 §4.1.1.1·§4.1.4.1·§4.1.4.2
1. 목적 및 적용 범위
관련 표준
- 5230 §3.1.1.1
- 18974 §4.1.1.1
이 정책은 테크유니콘(이하 "회사")이 소프트웨어 개발 및 배포 과정에서 오픈소스 소프트웨어를 올바르게 사용하고, 라이선스 의무사항을 이행하며, 보안 취약점을 관리하기 위한 기준을 정한다.
적용 범위
관련 표준
- 5230 §3.1.4.1
- 18974 §4.1.4.1
이 정책은 아래 범위에 적용된다:
- 대상 소프트웨어: 테크유니콘이 개발·배포·운영하는 전체 소프트웨어
- 배포 방식: SaaS, 앱스토어(iOS/Android), 임베디드(기기 탑재), 내부용 시스템
- 적용 대상 인원: 개발자, 관리자, 구매/조달 담당자 등 오픈소스 사용에 관여하는 모든 구성원
- 적용 제외: 없음
배포 채널별 적용 기준
관련 표준
- 18974 §4.1.4.2
| 배포 채널 | 주요 위험 | 핵심 기준 |
|---|---|---|
| SaaS | AGPL 네트워크 의무 | AGPL 도입 시 오픈소스 담당자 사전 검토 필수 |
| 앱스토어 | App Store 정책과 GPL 충돌 | GPL 계열 원칙적 배제, 담당자 검토 후 예외 허용 |
| 임베디드 | 배포 시 소스코드 공개 의무 | Copyleft 계열 엄격히 제한, Permissive 우선 사용 |
| 내부용 | 재배포 의무 없음 | 표준 검토 절차 적용 (완화된 Copyleft 허용) |
2. 오픈소스 사용 원칙
관련 표준
- 5230 §3.1.5.1
- 18974 §4.1.1.1
사용 전 검토 의무
오픈소스를 신규 도입하거나 기존 버전을 변경할 때 반드시 아래를 검토한다:
- 라이선스 확인:
output/policy/license-allowlist.md의 허용 라이선스 목록과 대조 - 라이선스 의무 이행 계획: Copyleft 라이선스의 경우 소스코드 공개 의무 등 이행 방법 확정
- 알려진 취약점 확인: SBOM 생성 후 CVE 스캔으로 Critical/High 취약점 없음 확인
- 담당자 승인:
output/process/usage-approval.md절차에 따라 승인
라이선스 분류 기준
| 분류 | 예시 | 배포 시 의무사항 |
|---|---|---|
| Permissive (허용) | MIT, Apache-2.0, BSD | 저작권 표시, 라이선스 고지 |
| Weak Copyleft | LGPL, MPL | 수정 파일 소스코드 공개 |
| Strong Copyleft | GPL-2.0, GPL-3.0 | 전체 소스코드 공개 (배포 시) |
| Network Copyleft | AGPL-3.0 | 네트워크 사용 포함 소스코드 공개 |
개발 언어별 패키지 관리 원칙
회사는 Java(Maven/Gradle), Python(pip), JavaScript(npm/yarn), Go(mod) 등 다양한 패키지 매니저를 사용하며, 모든 패키지 매니저에서 의존성 라이선스가 자동 스캔되어야 한다.
3. 프로그램 적용 범위 및 성과 메트릭
관련 표준
- 18974 §4.1.4.1·§4.1.4.2
성과 메트릭 (KPI)
| 지표 | 목표 |
|---|---|
| SBOM 최신성 | 모든 릴리즈에 최신 SBOM 첨부 |
| 라이선스 준수율 | 신규 도입 컴포넌트 100% 사전 검토 |
| 취약점 대응 시간 | Critical: 24시간, High: 1주일 이내 |
| 교육 이수율 | 오픈소스 관련 직군 연 1회 이상 이수 |
| 갱신 주기 | 자체 인증 18개월마다 재확인 |
4. 보안 보증 정책
관련 표준
- 18974 §4.1.1.1
회사는 배포 소프트웨어의 알려진 취약점(CVE)을 체계적으로 식별·추적·대응한다:
- 모든 릴리즈 전 SBOM 기반 취약점 스캔 수행
- Critical/High 취약점은 배포 전 반드시 해소 또는 완화 계획 수립
- 배포 후 신규 취약점 발견 시
output/process/vulnerability-response.md절차에 따라 대응 - 외부 취약점 신고 채널 운영: security@sktelecom.com
5. 오픈소스 기여 정책
관련 표준
- 5230 §3.5.1.1·§3.5.1.2
기여 허용 여부
- 사전 승인 후 허용 — 오픈소스 담당자 및 법무팀 검토·승인 후 기여 가능
기여 시 준수사항
- 사전 승인: DevOps팀 오픈소스 담당자 및 법무팀 검토 후 승인
- IP 확인: 기여 내용에 회사 기밀 정보 또는 제3자 IP 포함 여부 확인
- 라이선스 동의: CLA(Contributor License Agreement) 서명 필요 여부 확인
- 기록 유지: 기여 내역을
output/organization/role-definition.md에 기록
기여 금지 사항
- 회사 내부 알고리즘, 영업비밀, 고객 데이터를 포함한 기여
- 법무팀 검토 없이 특허 관련 코드 기여
- 개인 계정을 통한 회사 업무 관련 기여
6. 외부 납품 소프트웨어 관리
회사는 외부 고객 및 납품처에 소프트웨어를 제공하는 경우 아래를 준수한다:
- SBOM을 납품물과 함께 제공 (또는 요청 시 즉시 제공 가능하도록 보관)
- Copyleft 라이선스 의무사항 사전 이행 확인 후 납품
- 납품 계약서에 오픈소스 관련 고지문 포함
- 납품 후 신규 취약점 발견 시 고객사에 통보 절차 운영
7. 정책 전파 및 교육
관련 표준
- 5230 §3.1.1.2
- 18974 §4.1.1.2
이 정책은 아래 방법으로 모든 프로그램 참여자에게 전파된다:
- 신규 입사자 온보딩 교육 포함
- 연 1회 전체 구성원 대상 교육 (또는 공지)
- 사내 위키/공유 드라이브에 게시 및 링크 공유
- 교육 이수 기록:
output/training/completion-tracker.md
8. 미준수 처리
관련 표준
- 5230 §3.2.2.5
이 정책을 위반하는 경우:
- 오픈소스 담당자에게 즉시 보고
- 위반 내용 및 영향 범위 파악
- 시정 조치 계획 수립 및 이행
- 재발 방지를 위한 정책/프로세스 보완
9. 정책 검토 및 갱신
관련 표준
- 18974 §4.1.1.1
이 정책은 아래 주기 또는 사유 발생 시 검토·갱신한다:
- 정기 검토: 연 1회 (다음 검토 예정일: 2027-03-23)
- 수시 검토 사유: 표준 개정, 규제 변경, 주요 사고 발생, 담당자 변경
- 검토 담당자: DevOps팀 오픈소스 담당자, 법무팀 확인
검토 이력
| 버전 | 검토일 | 주요 변경 내용 | 승인자 |
|---|---|---|---|
| 1.0 | 2026-03-23 | 최초 작성 | DevOps팀장 |
허용 라이선스 목록
문서: license-allowlist.md
- 회사명: 테크유니콘
- 버전: 1.0
- 작성일: 2026-03-23
- 작성자: DevOps팀 오픈소스 담당자
- 다음 검토 예정일: 2027-03-23
관련 표준
- 5230 §3.1.5.1·§3.3.1.1·§3.3.1.2
배포 방식 요약: SaaS + 앱스토어(iOS/Android) + 임베디드 + 내부용 임베디드 및 앱스토어 배포가 포함되므로 Copyleft 라이선스는 엄격히 제한한다.
1. 채널별 허용 원칙 요약
| 배포 채널 | Permissive | Weak Copyleft | Strong Copyleft (GPL) | Network Copyleft (AGPL) |
|---|---|---|---|---|
| SaaS | ✅ 허용 | ✅ 허용 | ⚠️ 조건부 | ❌ 금지 |
| 앱스토어 | ✅ 허용 | ⚠️ 조건부 | ❌ 금지 | ❌ 금지 |
| 임베디드 | ✅ 허용 | ⚠️ 조건부 | ❌ 금지 | ❌ 금지 |
| 내부용 | ✅ 허용 | ✅ 허용 | ✅ 허용 | ⚠️ 조건부 |
⚠️ 조건부: 오픈소스 담당자 사전 검토 및 승인 필요 ❌ 금지: 담당자 승인 없이 사용 불가 (예외 허용 시 법무팀 추가 검토 필수)
2. Permissive 라이선스 — 전 채널 허용
의무사항: 저작권 고지 및 라이선스 텍스트 포함
| 라이선스 | SPDX ID | 주의사항 |
|---|---|---|
| MIT | MIT | 없음 |
| Apache License 2.0 | Apache-2.0 | 특허 종료 조항 있음 (일반적 사용 무관) |
| BSD 2-Clause | BSD-2-Clause | 없음 |
| BSD 3-Clause | BSD-3-Clause | 홍보/광고 사용 제한 |
| ISC | ISC | 없음 |
| Unlicense | Unlicense | 퍼블릭 도메인 유사 |
| CC0 1.0 | CC0-1.0 | 소프트웨어 코드 외 문서·데이터에 주로 사용 |
| Boost Software License 1.0 | BSL-1.0 | 없음 |
| zlib | Zlib | 수정 시 원본과 구별 명시 필요 |
3. Weak Copyleft 라이선스 — 채널별 조건부 허용
수정한 파일의 소스코드 공개 의무 발생 가능. 담당자 검토 필요.
| 라이선스 | SPDX ID | SaaS | 앱스토어 | 임베디드 | 내부용 | 주의사항 |
|---|---|---|---|---|---|---|
| LGPL-2.1 | LGPL-2.1-only | ✅ | ⚠️ | ⚠️ | ✅ | 동적 링크 시 의무 완화. 정적 링크 시 담당자 검토 필수 |
| LGPL-3.0 | LGPL-3.0-only | ✅ | ⚠️ | ⚠️ | ✅ | LGPL-2.1과 동일. 임베디드는 설치 정보 제공 의무 추가 |
| MPL-2.0 | MPL-2.0 | ✅ | ⚠️ | ⚠️ | ✅ | 수정한 파일만 공개. 파일 단위 Copyleft |
| CDDL-1.0 | CDDL-1.0 | ✅ | ⚠️ | ⚠️ | ✅ | GPL과 비호환. 혼용 주의 |
| EPL-2.0 | EPL-2.0 | ✅ | ⚠️ | ⚠️ | ✅ | 특허 종료 조항, 수정 소스 공개 의무 |
4. Strong Copyleft 라이선스 — 임베디드·앱스토어 금지
전체 소스코드 공개 의무 발생. 임베디드 및 앱스토어 배포에서는 원칙적으로 금지.
| 라이선스 | SPDX ID | SaaS | 앱스토어 | 임베디드 | 내부용 | 비고 |
|---|---|---|---|---|---|---|
| GPL-2.0 | GPL-2.0-only | ⚠️ | ❌ | ❌ | ✅ | 배포 시 전체 소스 공개. SaaS는 배포 미해당으로 조건부 허용 |
| GPL-3.0 | GPL-3.0-only | ⚠️ | ❌ | ❌ | ✅ | GPL-2.0 + 특허·티보이제이션 조항 추가 |
SaaS에서 GPL 조건부 허용 근거: SaaS는 소프트웨어를 고객에게 "배포"하지 않으므로 GPL 소스 공개 의무가 직접 발생하지 않음. 단, 서비스에 사용된 GPL 코드를 수정하는 경우 내부적으로도 GPL 조건을 준수해야 함.
5. Network Copyleft 라이선스 — SaaS 금지
네트워크를 통한 서비스 제공만으로 소스코드 공개 의무 발생.
| 라이선스 | SPDX ID | SaaS | 앱스토어 | 임베디드 | 내부용 | 비고 |
|---|---|---|---|---|---|---|
| AGPL-3.0 | AGPL-3.0-only | ❌ | ❌ | ❌ | ⚠️ | SaaS 제공 시 소스 공개 의무 발생. 내부용도 외부 노출 가능성 있으면 담당자 검토 |
| EUPL-1.2 | EUPL-1.2 | ⚠️ | ❌ | ❌ | ✅ | 네트워크 사용 조항 포함. SaaS 사용 시 담당자 검토 필수 |
6. 사용 금지 라이선스
아래 라이선스는 법적 불명확성 또는 비호환성으로 인해 모든 채널에서 사용 금지한다.
| 라이선스 | 금지 이유 |
|---|---|
| SSPL-1.0 (Server Side Public License) | MongoDB가 만든 라이선스, OSI 미인증, 서비스 전체 공개 의무 |
| BUSL (Business Source License) | 일정 기간 후 오픈소스 전환이나 상업적 사용 제한 존재 |
| Commons Clause 추가 라이선스 | 오픈소스 정의 위반, 상업적 판매 금지 조항 |
| Proprietary / Unknown | 라이선스 미식별 컴포넌트는 사용 전 반드시 담당자 확인 |
7. 라이선스 호환성 주의사항
패키지 매니저별 라이선스 스캔 도구
| 패키지 매니저 | 스캔 도구 | 비고 |
|---|---|---|
| Maven (Java) | License Maven Plugin, FOSSA | pom.xml 의존성 분석 |
| Gradle (Java) | License Gradle Plugin | build.gradle 의존성 분석 |
| pip (Python) | pip-licenses, FOSSA | requirements.txt 분석 |
| npm/yarn (JS) | license-checker, FOSSA | package.json 의존성 분석 |
| Go mod | go-licenses | go.mod 의존성 분석 |
혼용 금지 조합
| 조합 | 이유 |
|---|---|
| GPL-2.0 + Apache-2.0 | GPL-2.0과 Apache-2.0 특허 조항 비호환 |
| GPL-2.0 + GPL-3.0 | 버전 비호환 (GPL-3.0 only 라이선스와 혼용 불가) |
| CDDL + GPL | 라이선스 비호환 (Mozilla 공식 확인) |
8. 예외 처리 절차
허용 목록에 없는 라이선스 또는 금지 라이선스를 사용해야 하는 경우:
- 오픈소스 담당자에게 사용 사유 및 범위 서면 제출
- 법무팀 법률 검토
- 담당자 및 법무팀 공동 승인
- 승인 내역 기록 및 차기 정책 검토 시 목록 반영 여부 결정
9. 검토 이력
| 버전 | 검토일 | 주요 변경 내용 | 검토자 |
|---|---|---|---|
| 1.0 | 2026-03-23 | 최초 작성 | DevOps팀 오픈소스 담당자 |