오픈소스 검증 도구: OLIVE CLI 소개

안녕하세요, 오픈소스기술파트 리키입니다.

저는 오픈소스기술파트에서 OLIVE Platform 개발과 프로젝트에 대한 오픈소스 검증을 담당하고 있습니다. 

여기에서는 실시간 오픈소스 자동화 관리 서비스인 OLIVE Platform에 새롭게 추가된 OLIVE Command Line Interface(CLI)에 대해 이야기하려고 합니다.

OLIVE CLI를 개발하게 된 배경부터 주요 핵심 명령어들에 대해 알아보고, 금융권 3사에서 비공개 베타 테스트(CBT)를 진행하며 적용한 사례를 공유합니다. 마지막으로, OLIVE CLI 로드맵에 대해 소개하려고 합니다. 


OLIVE Platform 소개

먼저 OLIVE Platform에 대해 간략하게 알아보겠습니다.
OLIVE Platform은 개발자가 등록한 프로젝트를 분석해, 사용된 오픈소스의 라이선스, 의무사항을 확인하고 리포트를 제공해 주는 오픈소스 관리 서비스로 2021년 6월 29일에 정식 오픈했습니다.

OLIVE Platform에서 분석 가능한 설정 파일 목록은 다음과 같으며 OLIVE CLI 또한 동일하게 지원합니다.


OLIVE Platform에 대한 자세한 설명과 히스토리가 궁금하신 분들은 “OLIVE Platform : 카카오에서 제공하는 오픈소스 관리 서비스”를 참고해 주시길 바랍니다.


OLIVE CLI 개발 배경

OLIVE Platform에 새롭게 추가된 OLIVE CLI의 개발 배경에 대해 살펴보겠습니다.

우선 CLI 용어를 알아보겠습니다. CLI란 터미널 프로그램을 통해 사용자와 컴퓨터가 상호 작용하는 방식으로, 작업 명령은 사용자가 문자열의 형태로 입력하며 출력 역시 문자열의 형태로 주어집니다.

OLIVE Platform에서는 GitHub 연동, 파일 업로드 방식으로 프로젝트를 생성할 수 있습니다.

두 방식의 공통점은 서버에 분석하고자 하는 프로젝트의 소스코드를 다운로드하여 분석을 진행하고, 분석이 완료되면 서버에서 소스코드를 삭제합니다.

분석이 완료되면 서버에 어떠한 소스코드도 남지 않지만 보안이 매우 중요시되는 회사, 특히 금융권에서는 서버에 소스코드가 분석 시 이용되는 것도 허용하고 있지 않습니다. 또한 금융망이나 보안망으로 분리되어 웹 서비스 사용이 어려운 곳도 있습니다.

이처럼 보안상 웹서비스 사용이 어렵거나, 소스코드 노출이 우려되는 경우, OLIVE Platform의 기능을 안심하고 사용할 수 있는 도구의 필요성이 제기되었습니다.

해당 필요성을 만족시키기 위해서 사용자 PC 환경에서 프로젝트 분석부터 고지문 생성까지 할 수 있도록 OLIVE CLI를 개발하게 되었습니다.


OLIVE CLI란

OLIVE CLI는 사용자 PC 환경에서 OLIVE Platform의 기능을 실행할 수 있도록 돕는 Command Line Interface 도구입니다. 지원하는 운영체제는 Windows, MacOS, Linux 3가지로 Kakao GitHub 레포지토리에서 다운로드할 수 있으며 자세한 사용법은 사용자 문서를 참고해 주시길 바랍니다.

특장점은 다음과 같습니다.

  • VCS(Version Control System)에 종속되지 않고 프로젝트를 사용자 PC 환경에서 분석
  • 분석한 결과를 사용자 PC에서 별도 파일로 관리
  • 명령어를 이용해 분석된 결과를 업로드하여 OLIVE Platform 프로젝트로 관리
  • 소스코드가 전송되지 않음
  • 특정 명령어(report 및 apply)를 수행하지 않으면 클라이언트 측의 어떤 데이터도 서버에 저장되지 않음


명령어

현재 지원하고 있는 명령어는 총 10개로 다음과 같습니다.

이 중 주요 핵심 명령어에 대해 자세히 알아보도록 하겠습니다.


init 

OLIVE CLI를 사용하기 위해 초기 설정하는 명령어로 init 명령어 실행 시 basePath(기본값: .olive) 하위에 config.yaml 파일이 생성됩니다. 사용자는 userConfig 하위 프로터피를 통해 프로젝트 분석 설정을 변경할 수 있습니다.

 

				
					$ olive-cli init <title> --token= [options] [--debug|-d] [--help|-h] [--force]
				
			
< config.yaml 파일 예시 >


analyze

프로젝트를 분석하여 사용한 의존성을 추출하며 다음의 2가지 파일로 저장됩니다.

  • dependency.json
  • dependency.csv
				
					$ olive-cli analyze [--config=] [--debug|-d] [--help|-h]
				
			

명령어 실행 시 다음과 같이 터미널 프로그램에 프로젝트에서 사용한 의존성을 보여줍니다.

추출한 의존성은 다음과 같이 json 형식, csv 형식 2가지로 저장되어 관리가 용이합니다.

< dependency.json >
< dependency.csv >


mapping

analyze 명령어를 통해 분석 및 추출한 의존성을 OLIVE 컴포넌트에 매핑하여, 다음의 3개 파일로 저장됩니다.

  • mapping.json: 모든 데이터(매핑 및 매핑되지 않은 데이터 전체)의 모든 필드
  • mapping.csv: 매핑된 모든 데이터의 정제된 필드
  • unmapping.csv: 매핑된 모든 데이터의 정제된 필드
				
					$ olive-cli mapping [--config=] [--debug|-d] [--help|-h]

				
			

OLIVE Platform API를 호출하지만, request로 전달된 어떠한 값도 저장하지 않고 검색만 수행되며 OLIVE Component를 반환합니다. 또한, 추출된 의존성은 각각 단 건으로 전송되며 어떤 프로젝트에서 발견된 의존성인지 서버에서 알 수 없습니다.


apply

소스코드는 전송하지 않고 CLI 분석 결과 파일로만 OLIVE Platform에 프로젝트를 생성하며, 웹에서 제공하는 다양한 기능을 사용할 수 있습니다.
				
					$ olive-cli apply [--config=] [--debug|-d] [--help|-h]

				
			

다음의 데이터가 apply 명령어 수행 시 OLIVE Platform으로 전송됩니다.

  • dependency.json  파일 데이터
  • manual-component.yaml 파일에 수동으로 추가한 컴포넌트 데이터
  • config.yaml 파일에 설정된 정보


notice

프로젝트에서 사용한 고지 의무 오픈소스 컴포넌트를 고지문으로 생성합니다.

				
					$ olive-cli notice [--config=] [--debug|-d] [--help|-h]

				
			

앞서 살펴본 명령어들을 이용해 사용자 PC 환경에서 고지가 필요한 오픈소스 컴포넌트에 대해 고지문을 생성할 수 있습니다. 또한, apply 명령어를 통해 소스코드를 서버에 전송하지 않고 OLIVE CLI로 분석한 결과 파일로 OLIVE Platform 웹 서비스에 프로젝트를 생성할 수 있습니다.


OLIVE CLI 금융권 적용 사례

금융권 3곳에서 OLIVE CLI에 대한 비공개 베타 테스트를 진행해 주셨고 다양한 피드백을 받을 수 있었습니다. 세 곳 모두 환경이 조금씩 달랐지만 망 분리 이슈, 보안 이슈 등 공통점을 가지는 부분도 있었습니다. 참고하실 수 있도록 각 회사에서 OLIVE CLI를 어떻게 적용하여 오픈소스 검증 프로세스를 구축하였는지 알아보겠습니다. 

회사 명은 공개를 허락해 주신 카카오뱅크와 나머지 두 곳은 익명으로(B, C사) 소개하겠습니다.


카카오뱅크

카카오뱅크는 외부 통신이 불가능한 금융망과 외부 통신이 가능한 경영망으로 망이 분리되어 있습니다. 카카오뱅크에서 개발하는 프로젝트는 금융망에 위치해 있어 OLIVE API를 호출할 수 없는 환경이었습니다. 이에 카카오뱅크에서는 각 망에서의 역할을 분리하여 오픈소스 검증 프로세스를 구축하였습니다.

금융망에서는 OLIVE API 호출이 필요 없는 analyze 명령어를 이용해 프로젝트를 분석하고 결과 파일을 경영망으로 전송해 경영망에서 OLIVE API 호출이 필요한 mapping 명령어로 오픈소스 정보를 받아 관리합니다.


B사

B사는 오픈소스 분석 시스템을 DMZ 망에 구축하여 모든 OLIVE API 및 OLIVE Platform 웹 서비스를 사용할 수 있도록 환경을 구축하였습니다. 또한, 사용 중이거나 사용 예정인 오픈소스 프로젝트 분석을 스크립트로 자동화하여 편의성을 높였습니다.


C사

C사는 기본적으로 외부 통신이 불가능한 보안망에 오픈소스 검증 프로세스를 구축하였습니다. 하지만 고지문을 생성하기 위해서는 OLIVE API 호출이 필요한 명령어 실행이 선행되어야 합니다. 이를 위해 해당 명령어에서 호출하는 OLIVE API를 보안성 검토 후 아웃바운드 설정을 통해 통신 가능하도록 할 예정입니다.


OLIVE CLI 로드맵

사용자의 피드백에 귀 기울이고 요구사항에 맞춰 명령어를 추가하고 분석 기능을 고도화해 나가겠습니다. 또한, 추후 OLIVE CLI를 오픈소스로 공개하여 오픈소스 생태계에도 기여할 예정이니 여러분들의 많은 관심 부탁드립니다.


마치며

OLIVE CLI를 통해 보안상 OLIVE Platform 웹 서비스 이용이 어렵거나 불편했던 분들께 많은 도움이 되기를 기대합니다. 문의나 피드백은 서비스 하단의 톡 문의나 의견 남기기를 이용해 주세요. 의견 주시면 검토하여 반영될 수 있도록 노력하겠습니다. 감사합니다.

마지막으로 꼼꼼하게 테스트해 주시며 양질의 피드백을 해주신 제가 정말 존경하는 파트원분들, 바쁜 시간 짬 내어 비공개 베타 테스트를 진행해 주신 금융권 관계자분들, 이제는 다른 조직이지만 OLIVE CLI를 이끌어주시며 정말 값진 가르침을 주신 Robin에게 이 자리를 빌려 무한한 감사를 드립니다.



참고

Latest Posts