[NBP기술&경험]DevSecOps란 무엇인가? 커밋부터 디플로이까지 안전하게!

NAVER CLOUD PLATFORM
NAVER CLOUD PLATFORM
13 min readMar 16, 2020

--

안녕하세요, 네이버 클라우드 플랫폼입니다.

기존의 DevOps에서 보안(Security)이 결합된 “데브섹옵스(DevSecOps)” 에 대해 들어보신적 있으신가요?

이번 포스팅을 포함해 [네이버 클라우드 플랫폼의 데브섹옵스] Series 에서는 “네이버 클라우드 플랫폼 DevSecOps를 통한 CI/CD 구현”을 주제로 소개편과 실습편으로 나누어 진행됩니다.

1편에서는 데브섹옵스의 개념부터 데브섹옵스를 구현할 수 있는 네이버 클라우드 플랫폼의 다양한 서비스를 소개해 드리겠습니다.

[네이버 클라우드 플랫폼의 데브섹옵스] Series

1편 : DevSecOps란 무엇인가? 커밋부터 디플로이까지 안전하게!

2편 : 본격 개발자도구 4종 활용 실습

데브섹옵스(DevSecOps)

데브섹옵스(DevSecOps)는 개발, 보안, 운영을 위한 줄임말이라고 간단하게 정의할 수 있다. 조금 더 풀어서 설명하자면, <그림1>처럼 설계부터 개발, 테스트, 생산 및 운영까지 애플리케이션 라이프 사이클 전반에 보안을 통합하는 것이다. 보안 리스크 최소화, 컴플라이언스 비용 절감, 소프트웨어의 빠른 배포, 반응 및 복구 속도 개선 등의 효과를 얻을 수 있다.

네이버 클라우드 플랫폼 데브섹옵스 (DevSecOps)

네이버 클라우드 플랫폼에서 지원하는 데브섹옵스는 사용자에게 여러 장점을 제공한다.

안정성과 유연성을 갖춘 개발 환경

네이버는 다양한 서비스 특징에 맞춰 개발 환경을 선정하고, 소프트웨어 품질을 높이기 위해 노력했다. 그 오랜 경험이 개발 도구(Dev Tools)와 서비스 서비스의 바탕이 됐다. 작은 파일럿(Pilot) 개발 환경에서부터 대규모 개발 환경까지, 네이버 클라우드 플랫폼의 개발 도구를 활용하면 안정적으로 운영할 수 있다.

개발 생산성을 높이는 다양한 도구 제공

빠르게 변화하는 시장의 요구에 맞춰, 사용자가 경쟁력 있는 제품을 안정적으로 개발하고 출시할 수 있도록 소프트웨어 개발 시 반복하는 프로세스를 자동화하는 도구를 제공한다. 사용자는 새로운 기능을 출시하고 버그를 수정하는 데 신속하게 대응할 수 있다.

높은 보안성을 지닌 서비스 개발 환경

서비스 개발부터 출시까지 이르는 전 과정에 언제나 안전한 개발 환경을 제공할 수 있도록 지원한다. 네이버 클라우드 플랫폼의 보안 서비스와 연계해 보안 위협을 사전에 방지하고 소중한 정보를 안전하게 지킬 수 있다.

데브섹옵스(DevSecOps)를 위해 어떤 서비스가 필요한가

네이버 클라우드 플랫폼의 개발 도구와 서비스인 소스커밋(SourceCommit) 서비스, 소스빌드(SourceBuild) 서비스, 소스 배포(SourceDeploy) 서비스, 소스 파이프라인(SourcePipeline) 서비스 외 데브섹옵스 연계 과정을 살펴보자.

※ 본문 첫 링크를 클릭하시면 해당 서비스 페이지를 확인하실 수 있습니다.

Ⅰ. 소스커밋(SourceCommit) 서비스

소스커밋 서비스는 소스코드와 다양한 파일을 안전하게 저장할 수 있는 프라이빗 깃(Git) 저장소 서비스다. 고가용성 및 뛰어난 확장성을 제공해 인프라에 대한 고민 없이 무제한 저장소를 쉽고 빠르게 사용할 수 있다. 기존에 사용하던 모든 깃 클라이언트와 연동할 수 있으며, 모든 깃 명령어를 지원한다.

1. 높은 성능과 뛰어난 확장성

고성능 인프라 및 이중화 아키텍처를 제공한다. 대용량 저장소를 사용할 수 있으며, 언제 어디서든 접속할 수 있다. 또한 저장소에는 소스코드뿐 아니라 모든 파일 형태를 안전하게 저장할 수 있다.

2. 편리한 사용

외부에서 사용하던 깃 저장소는 URL만 입력하면 네이버 클라우드 플랫폼의 소스커밋 서비스로 손쉽게 가져올 수 있다. 기존 저장소를 그대로 사용하기 위해 필요한 복잡한 과정을 소스커밋 서비스에서는 자동으로 수행할 수 있다.

3. 모든 깃 클라이언트 사용

모든 깃 명령어를 지원하므로, 기존에 사용하던 모든 깃 클라이언트와 연동할 수 있다. 기존 개발 환경과 동일한 환경에서 편리하고 안전하게 저장소를 사용할 수 있다.

4. 편리한 보안 검사

<그림2>처럼 파일 세이퍼(File Safer) 서비스와 연동해, 소스커밋 서비스에 업로드하는 다양한 파일의 악성코드 감염 여부를 쉽고 빠르게 확인할 수 있다. 또한 저장소에 존재하는 스크립트 및 바이너리 파일의 악성 여부도 확인할 수 있다.

5. 보안성 강화

소스커밋 서비스는 로컬 클라이언트와 통신할 때 HTTPS 프로토콜을 사용해 파일을 안전하게 전송할 수 있다. 범용적인 깃 클라이언트를 통해 소스커밋에 접근하기 위해서는 클라이언트 전용 비밀번호를 받아야 한다. 이와 같은 보안 장치를 통해 안전하지 않은 클라이언트에 의한 계정 유출 사고를 방지할 수 있다.

6. 파일 세이퍼 연계를 통한 보안 강화

<그림2>처럼 코드 커밋 성공 시, 자동으로 결과물을 파일 세이퍼에 검사를 요청한다. 빌드 결과물에 대한 악성 여부를 확인할 수 있다.

<그림2> 소스커밋 서비스와 파일 세이퍼 연계

Ⅱ. 파일 세이퍼 (File Safer)​

파일 세이퍼는 업로드와 다운로드하는 스크립트 및 바이너리 파일의 악성 여부를 확인한다. 확인 후 필요에 따라서 허용 또는 차단을 적용해 서비스의 신뢰도를 높일 수 있다.

<그림3> 파일 세이퍼의 서비스 흐름도

1. 오랜 운영 노하우로 완성된 악성코드 차단 방법

네이버는 다양한 서비스를 운영하면서, 오랜 시간 동안 보안에 대한 고민을 해왔다. 서비스 성능을 유지하면서 효과적으로 악성코드를 차단하기 위해 다양한 형태의 차단 방법을 적용하고 있다. 실제 적용사례는 <표1>과 같다.

표1

파일 세이퍼는 이런 상황에 맞춰서 사용할 수 있는 해시 필터(Hash Filter)와 파일 필터(File Filter)를 Rest API로 제공하는 서비스다. 해시 필터는 악성코드로 의심되는 파일 또는 URL 스트링으로 추출한 해싯값을 Rest API로 질의해 악성 여부를 확인할 수 있다.

파일 필터는 해시 필터로 확인되지 않은 파일을 직접 업로드해 악성 여부를 확인할 수 있는 기능이다. 해시 필터보다는 트랜잭션이 느리지만, 아직 확인되지 않은 신변종 악성코드를 확인할 수 있다.

<그림4>는 공격자 또는 사용자가 작성한 게시물에 첨부한 악성코드를 차단하는 과정이다. 운영 중인 시스템에서는 첨부 파일 해시 값을 추출한 뒤 Rest API를 이용해 악성여부를 확인하고 결과에 따라서 차단 여부를 결정한다. 해시 필터의 빠른 트랜잭션을 이용한 탐지와 차단은 사용자의 이용 속도에 지연을 발생시키지 않으며, 빠르게 악성코드 유포를 차단할 수 있다.

<그림4> 공격자와 사용자의 악성코드 업로드에 따른 파일 세이퍼 서비스 흐름

Ⅲ. 소스빌드 (SourceBuild) 서비스

소스빌드 서비스는 독립된 빌드 서버를 실시간으로 생성해 다수의 빌드 요청을 동시에 처리하는 서비스이다. 고성능 전용 인프라를 사용해 빌드 환경을 빠르게 프로비저닝하고, 독립된 환경에서 안전하고 빠르게 처리할 수 있다. 다양한 빌드 환경을 미리 구성해 제공하므로, 다양한 언어로 개발된 소스코드를 쉽고 빠르게 빌드, 테스트, 배포할 수 있다.

<그림5> 소스빌드 서비스 구조

1. 빠른 프로비저닝

자체 빌드 서버를 운영할 필요 없이 빌드 작업을 요청하면 빌드 서버가 빠르게 프로비저닝을 제공한다. 매번 빌드 작업을 할 때마다 동일한 환경에서 안전하고 빠르게 빌드를 진행할 수 있다.

2. 선택 가능한 빌드 서버 리소스

빌드 용량에 따라 네이버 클라우드 플랫폼에서 제공하는 컴퓨팅 유형을 선택할 수 있다. 소스코드 빌드 및 테스트 케이스에 따라 효과적인 컴퓨팅 유형을 선택해 빌드를 진행할 수 있다.

3. 미리 구성된 다양한 빌드 환경 제공

<그림5>와 같이, 개발자가 주로 이용하는 라이브러리와 툴을 미리 구성한 운영체제 및 빌드 런타임을 제공한다. 자신에게 맞는 환경을 선택해 쉽고 빠르게 프로젝트를 생성하고 빌드 작업을 할 수 있다.

4. 사용자가 원하는 커스텀 환경 제공 가능

현재 네이버 클라우드 플랫폼이 제공하지 않는 빌드 환경이나 추가로 필요한 라이브러리가 있는 경우, 빌드 명령어를 통해 설치할 수 있다. 도커 허브(Docker Hub) 및 퍼블릭 저장소(Public Repository)에서 제공하는 커스텀 도커 이미지를 사용을 통해 사용자가 원하는 빌드 환경에 대해 빠르게 구성할 수 있다.

5. 쉽고 빠른 결과물 배포

간단한 설정으로 쉽고 빠르게 결과물을 오브젝트 스토리지(Object Storage)에 배포할 수 있다. 백업 기능을 이용하면 과거 빌드 결과물도 안전하게 보관할 수 있다.

6. 사용자별 접근 빌드 제어

빌드 프로젝트별로 부계정(Sub Account)에 접근 권한을 할당해, 사용자별 접근을 통제할 수 있다.

7. 파일 세이퍼 연계를 통한 보안 강화

빌드 성공 시 자동으로 결과물을 파일 세이퍼에 검사 요청해, 빌드 결과물에 대한 악성 여부를 확인할 수 있다.

Ⅳ. 클라우드 로그 애널리틱스 (Cloud Log Analytics)​

클라우드 로그 애널리틱스(Cloud Log Analytics)는 네이버 클라우드 플랫폼이 제공하는 서버를 비롯해 다양한 서비스를 사용하면서 발생하는 로그 이력을 저장하고 분석할 수 있는 서비스다.

1. 웹 기반 콘솔에서 로그 수집 설정

웹 기반 콘솔에서, 로그 수집을 위한 모든 설정을 손쉽게 할 수 있다.

2. 에이전트 설치 및 실행

설정한 정보를 기준으로 스크립트를 수행하면, 에이전트가 설치 및 실행돼 바로 데이터를 수집할 수 있다.

3. 데이터 저장 및 검색

수집하는 데이터는 기본적으로 일주일간 5GB 용량 내에서 저장된다. 다양한 방식의 검색을 통해 실시간으로 조회할 수 있다. 사용자가 더 많은 데이터를 저장해야 하는 경우에는 저장 가능 용량을 증설하면 된다.

4. 데이터 다운로드

필요한 데이터는 엑셀 등의 형식으로 대시보드에서 바로 다운로드할 수 있다.

5. 대시보드 제공

대시보드를 통해 다양한 항목의 데이터를 실시간으로 확인할 수 있다.

Ⅴ. 소스 배포 (SourceDeploy) 서비스

소스 배포(SourceDeploy) 서비스는 새로 작성하거나 업데이트한 소스를 자동으로 서버에 배포하고 적용해주는 배포 자동화 서비스다. 미리 설정한 사용자 기반 명령어를 통해 소스 배포, 실행 및 검증을 자동화할 수 있고, 배포 중 서비스 중단 시간을 최소화할 수 있다. 배포 실행 관리자를 통해, 배포 실행을 제어하면 필수적으로 필요한 배포만 적용해 서비스 품질을 보장할 수 있다.

<그림6> 소스 배포 서비스 구조

1. 배포 프로젝트별 다양한 환경 및 배포 시나리오 구성

서비스를 운영할 때 일반적으로는 테스트 환경과 실제 서비스를 운영할 환경을 따로 구성한다. 따라서, 배포 스테이지(Stage)에서 하나의 배포 프로젝트 안에 여러 환경을 구성하고 각 환경마다 배포 시나리오를 다수 생성할 수 있다. 또한, 이런 구성을 하나의 프로젝트 내에서 한눈에 확인할 수 있어, 배포 관리를 편리하게 할 수 있다.

2. 오브젝트 스토리지 및 소스빌드 서비스 연계를 통한 배포 파일 선택

배포하고자 하는 파일 위치는 오브젝트 스토리지 및 소스빌드 서비스 중에서 선택할 수 있다. 오브젝트 스토리지에 압축 형태로 소스를 업로드 해두면, 배포 시 자동으로 해당 파일을 다운로드해 배포한다. 소스빌드 서비스를 선택한 경우에는 빌드 프로젝트에서 가장 마지막으로 성공한 결과물을 조회해 해당 결과물을 자동으로 배포한다.

3. 꼭 필요한 배포만 실행 가능

배포 실행 관리자를 별도로 두어 승인을 받아야만 배포가 실행될 수 있도록 배포 제어 기능을 제공한다. 이는 배포가 실행되기 전 관리자로부터 해당 배포에 대한 검증을 통해 잘못된 배포 실수를 줄일 수 있고, 꼭 필요한 배포만 실행하여 서비스의 품질을 향상하는 데 도움을 줄 수 있다.

4. 배포 단계별로 필요한 명령어 실행 가능

배포 명령어 단계에서 서버에 배포할 때, 배포 전후로 필요한 명령어를 설정해 서버에서 실행할 수 있다. 돌고 있는 서비스 재실행 또는 필요한 스크립트 실행 등 해당 명령어를 통해 배포 프로세스를 좀 더 유연하게 확장할 수 있다.

5. 사용자별 접근 배포 제어

소스 배포는 네이버 클라우드 플랫폼의 부계정과 연동해 배포 프로젝트별로 접근을 통제할 수 있다.

Ⅵ. 사이트 세이퍼 (Site Safer)

사이트 세이퍼(Site Safer)는 웹사이트에서 배포하는 악성코드를 행위기반으로 탐지하는 서비스다. 기존 백신은 패턴 기반으로 탐지하는 반면, 사이트 세이퍼는 사용자 관점에서 웹사이트에 악성 프로그램을 배포하는지 행위기반으로 검사한다.

<그림7> 사이트 세이퍼 서비스 흐름도

1. 검증된 서비스

사이트 세이퍼는 네이버에서 오랜 기간 사용하고 검증한 악성코드 탐지 시스템이다. 네이버를 포함한 다수 사이트에서 악성코드가 배포되지 않도록 검사하는 용도로 활용하고 있다.

<표2> 사이트 세이퍼를 적용 하고 있는 네이버 서비스 현황표

2. 편리한 기능 및 저렴한 가격

한번 설정해 놓은 URL을 정기적으로 검사한다. 검사 대상 웹페이지 URL을 등록하고 검사 일시를 지정하면 지정한 날짜와 시간에 검사를 자동으로 수행하며, 반복 설정을 통해 주기적으로 악성코드 배포 여부를 모니터링할 수 있다. 악성코드 배포가 감지되면 이메일 및 SMS를 통해 악성코드 배포 여부를 알려주고 상세 보고서를 제공한다.

서비스에 가입하면 먼저 검사 대상 URL을 설정해야 하며, 이후 검사 주기와 시간을 설정하고 검사 결과를 받을 대상자를 설정한다. 설정을 완료하면 사이트 세이퍼는 지정된 주기와 시간에 맞춰 해당 URL을 방문해 행위 기반으로 검사를 시작한다. 악성코드 배포를 감지하면 자동으로 검사 보고서를 작성하고, 미리 설정한 담당자에게 검사 결과를 전달한다.

Ⅶ. 소스 파이프라인 (SourcePipeline)​

소스 파이프라인은 빠르고 안정적인 소프트웨어 출시를 위한 프로세스 자동화 서비스다. 손쉽게 새로운 기능을 출시할 수 있도록 저장소, 빌드, 배포를 통합해 제공한다.

<그림8> 소스 파이프라인 서비스 구조도

1. 저장소, 빌드, 배포 통합 프로세스 제공

소스 파이프라인은 소스커밋 서비스, 소스빌드 서비스 서비스, 소스 배포 서비스를 통합해 저장소, 빌드, 배포의 과정을 자동화한다. 변경하는 사항을 매번 빌드하고 배포하는 과정을 자동화해 신속하고 빠르게 소프트웨어를 출시할 수 있다. 또한 저장소, 빌드, 배포 과정을 통합해 작은 규모의 버그와 오류에 신속하게 대응할 수 있다.

네이버 클라우드 플랫폼은 <그림9>와 같이 개발, 빌드, 배포, 서비스 운영 등 전체 흐름을 한 개로 연결하는 서비스를 제공하고 있으며, 사용자가 손쉽게 데브섹옵스를 구현 할 수 있다.

※2편 [네이버 클라우드 플랫폼의 데브섹옵스] “본격 개발자도구 4종 활용 실습”으로 이어집니다

--

--

NAVER CLOUD PLATFORM
NAVER CLOUD PLATFORM

We provide cloud-based information technology services for industry leaders from startups to enterprises.