CodeEye 서비스
CodeEye 클라이언트 서비스는 윈도우 응용프로그램을 내려 받아,
자신의 컴퓨터에 설치하여 사용할 수 있으며,개발자의 저작 소스코드 보호를 위하여
암호화(128bit) 및 암호화 통신 기반의 오픈소스 SW라이선스 검사하는 서비스 입니다.
CodeEye 서비스 소개
오픈소스SW 라이선스 검사 서비스(이하 CodeEye서비스)는 오픈소스SW 라이선스 비교·분석·검사를 위해 사람이 해야 할 수작업(Eye Checking)을 원활하게 수행하거나 도움을 주는 SW 및 시스템으로 오픈소스SW 사용 시 준수 해야할 라이선스(GNU GPL등) 내용을 효과적으로 검사하여 보여줍니다. 검사는 위원회에서 구축된 오픈소스SW DB(지속적 Update)를 기반으로 하며, 주요 서비스 대상은 중소기업기본법 시행령 제3조(중소기업의 범위)규정에 따른 업체입니다.
CodeEye 서비스 목적
위원회에 구축된 오픈소스SW를 기반으로 오픈소스SW 라이선스 준수 여부를 쉽게 검사해 줄 수 있는 시스템을 제공함으로써, 공공기관, 학교, 중ㆍ소 SW개발업체들의 오픈소스SW 라이선스 인식제고 및 공정한 오픈소스SW 이용환경 조성을 통해 저작권 및 SW산업 발전에 기여하는 것이 목적입니다.
CodeEye 서비스 승인절차
![로그인 후 파일 혹은 폴더 검사를 요청한 뒤 요청한 파일의 메타데이터를 추출하여 SSL로 전송하여 라이선스 검사시스템에서 검사 후 검사요약결과를 코드아이에서 보여주며, 검사요약결과정보에서 파일비교를 하면 코드아이는 파일 정밀 비교 요청 및 결과에 요청을 하고 해당 요청을 라이선스 검사 시스템에 전송하여 받습니다. 그리고 코드아이를 통해 검사이력 조회가 보여 집니다.](/images/egovframework/olisImage/content/codeEye_approval.png)
CodeEye 서비스 방법
CodeEye 서비스는 웹 버전과 클라이언트 버전의 두 가지 형태로 제공되며, OLIS 회원가입 후 검사계정 신청을 요청하고 관리자의 승인절차를 거쳐 사용할 수 있으며, 검사 방법은 검사 대상 소스코드를 위원회 서버로 전송(암호화 등 3단계 보안절차 거침) 한 후 검사가 이루어집니다.
- 오픈소스SW 저작권 분쟁 사각지대에 놓여있는 SW개발 업체에 '라이선스 검사 서비스'를 제공함으로써 오픈소스SW 저작권 분쟁 사전예방 및 자유로운 이용이 가능하게 해줍니다.
- 각종 오픈소스SW DB 제공을 통해 SW개발업체의 기술력 강화 및 개발비용을 절감할 수 있게 해줍니다.
- 올바른 오픈소스SW 이용환경 조성을 통해 오픈소스SW의 활용범위를 확대시켜 줍니다.
검사계정 신청
CodeEye 클라이언트 서비스는 OLIS 회원이 "검사계정"신청 후, 관리자의 승인 절차를 거쳐 사용할 수 있는 서비스 입니다. CodeEye 클라이언트에서는 검사 요청 마법사를 제공하여 다양한 옵션을 선택하여 검사를 할 수 있으며, 또한 저작 소스코드에 대한 제한 없이 파일단위 또는 폴더를 지정하여 검사를 할 수 있습니다.
![검사 계정을 신청하면 관리자가 검사 계정 신청 목록을 조회해 승인 혹은 거부합니다. 사용자는 승인여부 확인 후 승인된 경우 검사서비스를 이용할 수 있습니다. 사용자는 승인여부 확인 후 거부된 경우 검사계정 신청을 재작성할 수 있습니다.](/images/egovframework/olisImage/content/codeEye_info.png)
주요기능
라이선스 검사
DB에 수집된 소스코드와 유사율을 검사하여 사용자 소스코드의 오픈소스SW 사용 유/무 및 사용 라이선스를 검사해 주는 기능
소스코드 비교
사용자의 소스코드와 위원회 DB에 저장된 오픈소스SW 소스코드 비교를 통해 각 파일별 유사라인 검출을 쉽게 확인이 가능하도록 제공하는 기능
검사결과 보고서
코드아이 검사 결과를 사용자가 쉽게 볼 수 있도록 종합보고서, 검사완료보고서를 리포트 형식으로 제공하는 기능 · PDF 생성 및 프린트 기능 제공
웹 VS 클라이언트
CodeEye 웹 검사 서비스는 OLIS 사이트에 접속하여 개발자가 저작한 소스코드에 대하여 오픈소스SW 사용 여부와 라이선스를 검사할 수 있는 서비스입니다. 웹 검사 서비스는 OLIS 회원이면 “검사계정” 신청만으로 사용할 수 있으며, 검사 요청 및 결과는 “My OLIS > 검사관리”에서 확인 할 수 있습니다. 파일의 Upload는 zip파일로만 가능하며, 검사 대상 소스코드파일에 제한(1,000개, 10MB)이 있습니다.
구분 | web | client | |
---|---|---|---|
검사요청 | 단일언어 | O | O |
다중언어 | O | O | |
파일 | O(zip 파일만 가능) | O | |
폴더 | X | O | |
검사대상지정 | O | O | |
암호화 | O | O | |
진행상태 | 진행상태모니터링 |
O MY OLIS > 검사관리 |
O |
검사취소 | X | O | |
검사결과 | 검사요약결과 | O | O |
파일비교(7일제한) | O | O | |
보고서 | O | O | |
보고서 - 인쇄 | O | O | |
보고서 - Export | O (PDF, HWP, DOC, XLS) |
O(PDF) |
활용 가이드
CodeEye 2.0은 오픈소스SW에 대한 정보와 이해가 부족한 국내 SW개발 업체들로 하여금 향후 발생 가능한 저작권 분쟁의 사전예방 및 오픈소스SW의 안정적 활용 환경을 조성하기 위해 서비스를 시작하였습니다.
유의사항 및 법적책임
CodeEye 서비스 절차, 대상, 방법, 기간 등은 위원회 내부 방침에 따라 변경 될 수 있습니다.(변경 시 홈페이지 등을 통해 공지) 더불어 DB에 구축되어 있지 않은 오픈소스SW의 경우 검사가 이루어지지 않으며, 이에 따른 법적 책임을 부담하지 않습니다.
결과보기
사용자가 검사 요청한 소스파일과 검사 결과로 나타난 라이선스 및 관련 프로젝트 데이터를 한 눈에 쉽게 파악할 수 있는 인터페이스를 제공합니다.
![검사결과 창](/images/egovframework/olisImage/content/guide_img06.jpg)
![검사결과 창 요약정보](/images/egovframework/olisImage/content/guide_img07.jpg)
- 1) 검사 결과에서 루트 폴더를 선택하면 프로젝트 요약 정보를 확인할 수 있습니다.
- 2) 요약정보에서 마우스 오른쪽 버튼을 누르면 해당 프로젝트 정보 및 라이선스 정보를 확인할 수 있는 페이지로 이동할 수 있습니다.
![파일별 검사결과 창](/images/egovframework/olisImage/content/guide_img08.jpg)
- 1) 파일별 검사 결과에서 오른쪽 말풍선을 클릭하면 해당 파일에 대한 의견을 기록할 수 있습니다. 의견이 작성되어 있는 파일은 파란색 말풍선으로 구분됩니다.
![전체검사 - 결과보기](/images/egovframework/olisImage/content/guide_img09.jpg)
- 1) 왼쪽의 체크박스를 클릭하여 검사결과에 필요가 없다고 판단되는 항목들은 제외를 시키거나 제외를 해제시킬 수 있습니다.
- 2) 제외된 파일들은 회색 바탕으로 다른 파일들과 구분됩니다
- 3) 보기 메뉴의 전체/제외아님/제외를 선택하여 원하는 항목들만 확인할 수 있습니다.
소스비교 / 색상설정
사용자가 검사 요청 시 설정한 매치율 이상의 유사한 파일은 소스코드 비교를 통해 직접 사용자가 확인할 수 있습니다.
![전체검사 - 결과보기](/images/egovframework/olisImage/content/guide_img11.jpg)
- 1) 오픈소스SW 소스코드와 매치율을 확인하기 위해 소스코드 비교를 할 수 있습니다. 원하는 항목의 소스코드를 더블클릭하면 소스코드 비교창을 통해 소스코드의 유사도를 손쉽게 비교할 수 있습니다.
![파일비교](/images/egovframework/olisImage/content/guide_img12.jpg)
- 1) 위치 정보를 나타내는 미니뷰를 클릭하여 화면을 원하는 위치로 이동할 수 있습니다.
- 2) 유사라인의 경우 마우스 더블클릭을 통해 비교대상 파일의 유사라인을 확인할 수 있습니다. 전체 유사한 라인을 확인하고자 할 때는 라인단위 비교를 통하여 확인이 가능하며, 연속된 유사라인이 있는 경우만 확인하고자 할 때는 블록단위 비교를 통하여 블록단위로 결과를 확인할 수 있습니다.
- 3) 유사도에 따른 각각의 컬러를 설정을 통해 사용자가 원하는 색상으로 소스코드를 비교할 수 있습니다.
보고서 생성
4가지 타입의 보고서(종합보고서 / 검사완료보고서)를 생성할 수 있으며 PDF로 저장할 수 있습니다. 각 보고서는 리포트 형태의 라이선스 비교표를 제공해줌으로써 사용자가 더욱 쉽게 검사결과를 확인할 수 있도록 해줍니다.
![보고서 생성 - 결과보기](/images/egovframework/olisImage/content/guide_img14.jpg)
- 1) 보고서는 4가지 타입으로 생성할 수 있습니다.
- 종합보고서 : 그래프 및 테이블을 통해 검사 결과의 요약정보를 한눈에 파악할 수 있는 정보를 제공합니다.
- 검사완료보고서 : 각 파일별 유사 파일과 매치율에 대한 기본적인 정보를 제공합니다.
- 제외파일보고서 : 사용자가 제외한 파일에 대한 정보를 제공합니다.
- 파일별보고서 : 저작소스 내의 파일과 유사한 파일들에 대한 프로젝트별/버전별 세부정보를 제공합니다.
![보고서보기](/images/egovframework/olisImage/content/guide_img15.jpg)
- 1) 검사 결과에서 사용자가 작성한 의견은 각 보고서에서 확인이 가능합니다.
상담 컨설팅
검사 결과를 바탕으로 오픈소스SW 라이선스 전문 담당자와의 상담을 통해 라이선스의 사용 유무, 라이선스의 특징 및 배포 시 주의사항 등을 확인할 수 있으며, 이를 통해 오픈소스SW 법정 논쟁을 사전에 방지할 수 있습니다.
Fossology 검사 서비스
Fossology로 이동
* 주의: OLIS에서는 사용가능한 Fossology 링크만 제공합니다. 추가 검사 도구의 결과는 다른 사용자에게 보여질 수 있습니다.
Fossology 소개
Fossology는 오픈소스 라이F선스 검증 프로그램입니다. Fossology는 라이선스, 저작권 등의 검증을 진행할 수 있으며 데이터베이스와 Web UI 등이 워크플로우로 제공됩니다. 한번의 클릭으로 SPDX파일이나 소프트웨어의 저작권 고지가 포함된 추가정보를 생성할 수 있습니다. Fossology의 전체 배포판을 스캔하고 새 버전을 제출하면 변경된 파일만 다시 스캔하여 중복을 제거할 수 있으며 이는 대형 프로젝트에서 시간을 크게 절약할 수 있습니다.
Fossology 이용
1.로그인
테스트 계정으로 로그인합니다. (ID : fossy / PW : fossy)
2.Project 생성 및 분석방법
[Upload] 메뉴에서 검증할 대상이 되는 파일들을 선택할 수 있으며 File, Server, URL, VCS 등 다양한 방법으로 업로드를 할 수 있습니다. 설정을 마치고 하단의 upload 버튼을 누르면 분석이 시작되며 분석은 바로 실행이 되지 않고 Queue로 진행되며 [Jobs] 메뉴에서 분석되어지는 과정을 확인할 수 있습니다.
![upload](/images/egovframework/olisImage/content/fossology/fossology01.jpg)
3.분석확인
Browse 메뉴에서 분석된 Porject를 확인할 수 있으며 각 라이선스별 카운트와 해당 소스코드에 대한 비교분석을 제공합니다. Fossology는 주석 및 코드에 라이선스 정보가 없으면 라이선스 매치 정보를 찾을 수 없습니다.
![browse](/images/egovframework/olisImage/content/fossology/fossology02.jpg)
분석완료된 파일의 드롭박스 메뉴의 License 를 선택하거나 직접 분석파일을 클릭하면 해당 파일의 분석결과를 확인할 수 있습니다.
Fossology는 업로드 파일에서 하나 이상의 라이선스를 검색하여 해당결과를 테이블에 표시합니다. 라이선스 표시테이블에서 각 라이선스 옆에 주석 혹은 텍스트 설명을 추가할 수 있습니다.
라이선스가 식별완료된 파일은 우측 라이선스 테이블 상단에서 Identified 를 선택하여 Submit 버튼을 클릭하여 해당결과를 저장할 수 있으며 좌우 버튼으로 다음파일을 확인할 수 있습니다.
![result](/images/egovframework/olisImage/content/fossology/fossology03.jpg)
4.유의사항
누구나 사용 가능한 프로그램으로 기본제공하는 라이선스 외에 사용자가 추가 입력이 가능합니다. 단, 코드 비교 분석이 아니라 파일에 포함된 라이선스 원문의 검색으로 파일에 라이선스 원문이 포함되지 않았다면 발견이 힘듭니다.
그 외 자세한 사용방법은 Fossology 홈페이지(https://www.fossology.org)를 참고바랍니다.
BAT(BinaryAnalysis Tool)
BAT 소개
BAT(Binary Analysis Tool)은 오픈소스를 배포할 때 바이너리코드를 보고, 컴플라이언스 이슈를 발견하고, 불확실성을 줄이는 것을 보다 쉽고 저렴하게 만듭니다. 파일을 반복적으로 압축, 해제하고 압축을 푼 파일에 대한 검사를 실행하기 위한 프레임워크입니다. 압축을 푼 파일의 출처를 알아내고 파일을 분류하여 추가 분석을 가능하게 합니다.
요구사항
- Fedora 29 이상이거나 그와 비슷한 최신 리눅스 배포판(Fedora 28 이전, Ubuntu 16.04 이전 버전은 지원하지 않습니다.)
- Pyhton 3.6.x 이상
- PIL의 대체품인 pillow (http://python-pillow.github.io/)
- GNU binutils (for 'ar')
- squashfs-tools (for 'unsquashfs')
- cabextract
- ...
이 외 추가적인 요구사항에 대해서는 하단의 Github 페이지를 참고바랍니다.
bang-scanner의 퍼포먼스 테스트 스크립트
Running the tests
/binaryanalysis-ng/performance-test/bang-scanner 아래에 bang-scanner의 퍼포먼스를 테스트하기 위한 스크립트가 제공됩니다. 테스트 전 디스크 공간이 충분한지 확인 후 테스트결과를 저장할 디렉토리로 이동하여 run-test.sh 스크립트를 호출합니다.
bash /path/to/run-tests.sh [testid] [iterations] [scanfile]
bash run-tests 0001 30 ~/testdata/openwrt-18.06.1-brcm2708-bcm2710-rpi-3-ext4-sysupgrade.img.gz
테스트가 완료되면 timings.json.csv 파일이 포함된 perftest-0001 디렉토리를 확인할 수 있습니다.
- testid,run,real,user,system,duration
- 0001,0,2.084,1.77,0.302,1.91403
- 0001,1,2.049,1.729,0.31,1.89979
- 0001,2,2.064,1.701,0.35,1.916161
Comparing two tests
combine-perftests.py 명령어를 호출하여 여러 CSV 파일을 하나로 합칠 수 있습니다.
python3 combine-perftests.py [testdir1] [testdir2] ...
결과에 대한 분석을 위하여 스프레드시트 혹은 다른 프로그램으로 실행 시킬 수 있습니다.
관련 링크 및 저장소
BAT은 현재 개발이 중지되고 BANG(Binary Analysis Next Generation) 이라는 새로운 프로젝트로 진행중입니다.
아래 링크를 통해 BANG의 Github 저장소로 이동할 수 있습니다.
BAT Github (https://github.com/armijnhemel/binaryanalysis-ng)
FOSSLight Hub 검사 서비스
FOSSLight Hub로 이동
* 주의: OLIS에서는 사용가능한 FOSSLight Hub 링크만 제공합니다. 추가 검사 도구의 결과는 다른 사용자에게 보여질 수 있습니다.
FOSSLight Hub 소개
FOSSLight Hub는 오픈소스와 라이선스를 관리하고, 오픈소스 컴플라이언스 프로세스를 순차적으로 처리할 수 있는 통합 시스템이자 보안 취약점,
Supply Chain 관리 및 Software BOM(Bill of Materials) 관리 등 오픈소스 관련된 모든 것을 관리할 수 있는 올인원 시스템입니다.
FOSSLight HuB 소스 다운로드
FOSSLight Hub에서 소스를 다운로드 받습니다.
설치 및 실행 방법 - 1
설치 및 실행 방법 - 2
요구사항
- JAVA 11 이상
- MariaDB 10.0 이상 또는 MySql 5.6 이상
- Memory : 8GB+
개발 환경
- Framework : Spring Boot 2.1.x
- Build Tool : Gradle 6.x
- Git : https://github.com/fosslight/fosslight
-
IDE : Spring Tool Suite
- lombok 설치 필요 - Project Character Set: UTF-8
다운로드 & 설치
1. JAVA를 설치합니다. : https://openjdk.java.net
2. DDL : fosslight_create.sql
3. MariaDB 또는 Mysql 설치합니다. : https://mariadb.org/download
4. Database 생성 및 초기 Data 등록
IDE Configuration
Spring Tool Suite를 다운로드 합니다.
Project Import
※STS (Spring Tool suite) 4.x 기준
- 1. lombok 설치 : https://projectlombok.org/setup/eclipse
- 2. File > Import > Gradle > Existing Gradle Project
- 3. Git Source Directory를 설정하고 Import 합니다.
- 4. Project > Properties > Resource > Text file encoding에서 UTF-8로 설정합니다.
실행
-
실행 옵션 변경
application.properties 파일에서 실행 옵션 변경 - server.port=8180: 웹 서버 포트 (8180으로 설정한 경우 http://localhost:8180)
- spring.datasource.url=127.0.0.1:3306/fosslight: FOSSLight Hub Database가 설치되어 있는 DB 서버의 IP, Port, Database Name을 설정
- spring.database.username=fosslight: Database 접속자명을 설정
- spring.database.password=fosslight: Database 접속자 패스워드 설정
- logging.path=./logs : 로그파일 출력 경로 설정 (Default "./logs"는 Application 실행 위치를 의미)
- logging.file=fosslight : 로그를 출력할 로그파일명 (logback-spring.xml 파일 참고)
- root.dir=./data : 파일 업/다운로드 최상위 경로를 의미
Build & Run
하기 방법으로 빌드 및 실행할 수 있습니다.
Official Release 버전의 build된 war파일을 다운로드 받으실 수도 있습니다.
Gradle build & Run
-
build (war 파일 생성)
$ ./gradlew build
-
run
$ ./gradlew bootRun
-
build & run - 방법 2(빌드 후 어플리케이션 실행)
$ ./gradlew clean build && java -jar build/libs/FOSSLight-1.0.0.war
-
실행 옵션
-
웹서버 포트 변경
--server.port=[PORT]
-
Work Directory 설정 (Default: /usr/share/fosslight)
--root.dir=[WORK_DIRECTORY]
-
Database 접속정보 변경 (Default: 127.0.0.1:3306/fosslight)
--spring.datasource.url=[IP]:[Port]/[Database]
--spring.datasource.username=[USER_NAME]
--spring.datasource.password=[PASSWORD] -
log 파일 경로 지정
--logging.path=[LOG_PATH]
-
웹서버 포트 변경
-
실행 옵션
IDE에서 직접 실행
동작 확인
- 웹브라우저에서 http://localhost:8180으로 접속하면 로그인 화면이 표시됩니다.
- 초기 로그인 계정은 id: admin, pswd: admin 입니다.
세부 설정
메일 서버 세팅
- 1. Configuration로 이동합니다.
- 2. SMTP Setting 체크박스를 활성화합니다.
-
3. 메일 서버 정보를 입력 후 저장합니다.
ex) docker-compose로 메일 서비스 실행한 경우Mail Server : fosslight_mail
Email Address : no-reply@fosslight.org
Port : 587
Encoding : UTF-8
Username : no-reply@fosslight.org
Password : fosslight -
4. 웹 서버를 재시작 해줍니다.
docker-compose restart fosslight_web
NVD Data 세팅
서버 세팅 후 최초 1회 NVD Data를 2002년 Data부터 다운로드 받도록 설정합니다. : NVD Data 다운로드
FOSSLight Source Scanner
FOSSLight Source Scanner 소개
FOSSLight Source Scanner는 소스 코드 스캐너인 ScanCode를 이용하여, 파일 안에 포함된 Copyright과 License 문구를 검출합니다. Build Script, Binary, Directory, 특정 Directory (ex-test) 안의 파일을 제외시킵니다. 그리고 License 이름에서 "-only", "-old-style"와 같은 문구를 제거합니다. 결과는 spreadsheet, csv 형태로 출력됩니다.
요구사항
- Python 3.6.x 이상
- Windows의 경우 Microsoft Visual C++ Build Tools를 추가로 설치
설치 방법
FOSSLight Source Scanner는 pip3를 이용하여 설치할 수 있습니다. python 3.6 + virtualenv 환경에서 설치할 것을 권장합니다.
$ pip3 install fosslight_source
사용 방법
FOSSLight Source Scanner에는 하기 두 가지 명령어가 있습니다.
fosslight_source
Source Code 분석을 실행한 후 FOSSLight Report 형식으로 출력합니다.
옵션 | 인자 | 설명 |
---|---|---|
h | X | 도움말 출력 |
p | String | 소스 분석 경로 |
j | X | Source Code 분석 후 FOSSLight Report와 json 형태의 ScanCode 결과 출력 |
o | String | 확장자가 없는 파일명으로 출력 |
m | X | 각 라이센스에 대해 일치하는 텍스트를 스프레드 시트로 출력 |
# Source Code 분석 후 FOSSLight Report와 json 형태의 ScanCode 결과 출력
$ fosslight_source -p /home/source_path -j
fosslight_source
json형태인 ScanCode 결과를 FOSSLight Report 형식으로 변환합니다.
옵션 | 인자 | 설명 |
---|---|---|
h | X | 도움말 출력 |
p | String | Scan Code json 파일 경로 |
o | String | 확장자가 없는 파일명으로 출력 |
m | X | 각 라이센스에 대해 일치하는 텍스트를 스프레드 시트로 출력 |
# json 형태의 ScanCode 결과를 FOSSLight Report 형식으로 변환
$ fosslight_convert -p /home/jsonfile_dir
결과물
$ tree
.
├── FOSSLight-Report_2021-05-03_00-39-49_SRC.csv
├── FOSSLight-Report_2021-05-03_00-39-49.xlsx
├── scancode_2021-05-03_00-39-49.json
└── fosslight_src_log_2021-05-03_00-39-49.txt
- FOSSLight-Report_[datetime].xlsx : FOSSLight Report 형태의 Source Code 분석 결과
- FOSSLight-Report_[datetime]_[sheet_name].csv : FOSSLight Report를 csv로 출력한 결과 (Windows 제외)
- fosslight_src_log_[datetime].txt: 실행 로그가 저장된 파일
- scancode_[datetime].json : ScanCode 실행 결과 (fosslight_source명령어에 -j 옵션이 포함된 경우에만 생성)