요즘IT
위시켓
최근 검색어
전체 삭제
최근 검색어가 없습니다.

최근 웹이나 모바일 서비스 해킹으로 개인정보가 유출되는 등 심각한 보안 문제가 발생하고 있는데요. 이를 예방하기 위해 개발 초기 단계에서부터 보안을 통합해야 한다는 필요성이 대두되고 있습니다.

회원가입을 하면 원하는 문장을
저장할 수 있어요!

다음

회원가입을 하면
성장에 도움이 되는 콘텐츠를
스크랩할 수 있어요!

확인

개발

개발과 보안 통합 ‘데브섹옵스’ 중요해지는 이유

년차,
어떤 스킬
,
어떤 직무
독자들이 봤을까요?
어떤 독자들이 봤는지 궁금하다면?
로그인

최근 웹이나 모바일 서비스 해킹으로 개인정보가 유출되는 등 심각한 보안 문제가 발생하고 있는데요. 이를 예방하기 위해 개발 초기 단계에서부터 보안을 통합해야 한다는 필요성이 대두되고 있습니다.

 

데브섹옵스(DevSecOps)는 소프트웨어 개발 수명주기(SDLC - Software Development Life Cycle)의 모든 단계에 보안을 통합하여 개발하는 소프트웨어 개발 접근 방식입니다. 이 글에서는 데브섹옵스의 필요성, 모범 사례 및 데브섹옵스를 실현하기 위해 활용할 수 있는 오픈소스 도구에 대해 알아보겠습니다.

 
<출처: 위키피디아, 작가 편집>

 

데브섹옵스가 필요한 이유

2023년 IBM의 한 보고서에 따르면 해당 연도에 발생한 한 건의 데이터 침해 사고 당 평균 피해 비용이 약 445만 미화(약 40억 원)로 집계되었습니다. 이는 이전 3년 대비 약 15% 증가한 수치로, 이 같은 비용은 클라우드와 인공지능(AI)과 같은 첨단 기술의 발전에 따라 앞으로도 더욱 증가할 것으로 예상됩니다. 기업들이 데브섹옵스를 도입하는 주된 이유 중 하나는 바로 이런 잠재적인 비용을 줄이는 것입니다.

 

이뿐만 아니라, 최근 애자일 개발 프로세스 등으로 소프트웨어 개발 수명주기는 점점 짧아지고 있습니다. 이런 상황에서 개발 프로세스가 끝나거나 개발 후에 일시적인 보안 테스팅을 수행하는 전통적인 보안 접근법은 더 이상 보안 문제를 효과적으로 관리하는데 충분하지 않습니다. 따라서 새로운 방법이 필요합니다.

 

데브섹옵스는 이러한 문제를 해결하기 위해 소프트웨어나 서비스의 계획단계부터 설계, 개발, 테스트, 배포, 운영에 이르는 개발 과정 전반에 걸쳐 보안을 통합하는 것을 강조합니다. 이를 통해 기업은 보안 취약점 및 잠재적 보안 침해 위협을 줄일 수 있습니다.

 

오늘날 많은 기업에서 개발과 운영을 통합하고 자동화하는 데브옵스(DevOps) 문화가 성공적으로 자리 잡으면서, 지속적인 통합 및 지속적인 배포(CI/CD) 파이프라인을 활용한 소프트웨어 개발, 테스팅, 배포의 자동화가 적용되고 있는데요. 데브섹옵스는 이러한 데브옵스 개념을 보안까지 확장하여, 보안 테스팅과 같은 보안 관련 활동을 자동화 과정에 포함함으로써 구현할 수 있습니다.

 

자동화와 같은 기술적인 부분에 더해, 데브섹옵스의 핵심은 조직 전반의 보안 인식을 높이고 보안을 처음부터 고려한 개발 문화를 조성하는 것입니다. 이를 위해 개발팀, 보안팀, 운영팀 간의 협업과 커뮤니케이션을 장려하며, 보안에 대한 공동의 책임 문화를 조성하여 모든 구성원이 소프트웨어의 보안을 보장하는 데 책임을 느끼도록 합니다.

 

결국 기업들은 데브섹옵스 방식을 채택함으로써, 보안 위험과 사고로부터 발생하는 다양한 위험 요소를 줄일 수 있죠. 이러한 위험 요소에는 비용뿐만 아니라 기업의 평판, 법적 문제 등이 포함될 수 있으며, 이는 결국 기업의 브랜드 가치와 경쟁력을 약화시킬 수 있기 때문입니다.

 

 

데브섹옵스 모범 사례

데브섹옵스의 필요성에 대해 살펴봤으니, 이제 데브섹옵스를 실현하기 위한 몇 가지 구체적인 모범 사례(best practice)를 알아보겠습니다.

 

1) 시프트 레프트(Shift-Left)

시프트 레프트는 소프트웨어 개발 수명주기 ‘요구사항 분석, 설계, 개발(구현), 테스트, 릴리즈(유지 보수)’ 등 소프트웨어 개발의 초기 단계에서부터 보안 활동을 시작하는 것을 의미합니다. 시프트 레프트를 적용하지 않는다면, 일반적으로는 개발이 완료되고 나서야 모의해킹 등 별도의 보안 진단을 수행하는 것이 대부분이었습니다. 보안 소프트웨어 개발 수명주기 단계를 왼쪽에서 오른쪽으로 정렬했을 때, 수명주기의 초기 단계가 왼쪽에 있기 때문에 시프트 레프트라고 불립니다.

 

<출처: IBM, Relative Cost of Fixing Defects>

 

IBM의 자료에 따르면 소프트웨어 개발 수명주기의 초기 단계인 설계 단계에서 문제를 처리하는 데 드는 비용에 비해, 이후 단계인 개발 단계, 테스트 단계, 릴리즈 단계에서 각각 6.5배, 15배, 100배 더 많은 비용이 발생하는 것으로 나타났습니다. 따라서, 시프트 레프트를 통해, 보안 문제를 더 빠른 시점에 발견하고 해결함으로써 보안 문제 처리 비용을 줄일 수 있습니다.

 

2) 위협 모델링

위협 모델링은 개발 프로세스의 설계 단계에서 보안을 통합하여, 소프트웨어에 대한 잠재적 위협을 파악하고 이를 완화하기 위한 계획을 수립하는 작업입니다. 위협 모델링은 단순히 위협을 파악하는 데만 그치지 않고, 그러한 위협을 실재화하는 공격 시나리오를 분석하여 공격자가 시스템을 어떻게 악용할 수 있는지 이해하는 데에도 초점을 맞춥니다.

 

위협 모델링 결과물을 이용하여, 기업은 위협에 대응하기 위한 보호 대책을 설계 및 구현하여 공격을 방지하거나 완화할 수 있습니다. 위협 모델링은 지속적인 프로세스이며, 새로운 기능이 추가되거나 패치가 적용되는 등 소프트웨어의 변경에 따라 정기적으로 업데이트되어야 합니다.

 

3) 시큐어 코딩

시큐어 코딩은 안전한 소프트웨어 개발을 위한 코딩 기법입니다. 개발 단계부터 보안 취약점을 사전에 제거하고 예방하여, 소프트웨어를 사이버 공격으로부터 보호하는 데 목적이 있습니다. 시큐어 코딩의 주요 내용은 OWASP Top 10, SANS Top 25 등의 주요 위험에 대비하고, SQL 삽입, 버퍼 오버플로우 등의 보안 취약점을 예방하는 코딩 기법을 사용하는 것입니다.

 

행정안전부와 한국인터넷진흥원에서는 프로그래밍 언어별로 시큐어코딩 가이드를 배포하고 있습니다.

 

 

4) 코드 리뷰 및 커밋 자동화

많은 기업에서 데브섹옵스와는 무관하지만 소프트웨어 품질 향상을 위해 코드 리뷰를 실시하고 있는데요. 예를 들어, 한 개발자가 새로운 코드를 추가하여 커밋하면, 다른 개발자가 그 코드를 리뷰하고 코드 저장소에 통합하는 과정을 거칩니다. 통합 개발 환경(IDE)에서 코드 린터(linter) 도구를 활용해, 코드가 정해진 규칙에 따라 작성되었는지 자동으로 확인하기도 합니다. 이러한 기존의 과정에서 위에서 언급한 시큐어 코딩과 같은 보안 측면에도 주목하여 코드의 보안성과 관련된 품질을 높인다면, 보안 취약점을 미리 찾아내고 안전한 소프트웨어 개발이 가능해집니다.

 

또한 코드를 커밋하는 단계에서 패스워드나 토큰, 사용자 개인 정보 등이 커밋에 포함되어 있는지 미리 검사해, 민감한 정보가 외부로 누출되는 위험을 제거할 수 있습니다. 이러한 과정을 자동화하기 위해서는 pre-commit과 같은 프레임워크를 이용하거나, CI/CD 파이프라인에 코드를 검사하는 기능을 통합시켜 구현할 수 있습니다.

 

5) 보안 테스트 자동화

기업은 개발 및 테스트 단계에서 보안 취약점을 검사하는 보안 테스트 과정을 자동화함으로써, 보안 테스트에 필요한 시간과 노력을 줄이는 동시에 테스트 빈도와 적용 범위를 확대할 수 있습니다. 이를 통해 잠재적인 보안 취약점을 빠르게 찾아내고 해결할 수 있습니다.

 

보안 테스트 자동화는 코드 분석을 통해 보안 취약점을 찾는 정적 보안 테스트와 실제 운영 환경에서 테스트하는 동적 보안 테스트 등을 포함하고 있습니다. 이러한 보안 테스트 솔루션을 CI/CD 파이프라인에 통합하여, 개발 단계에 포함시킬 수도 있죠.

 

최근에는 소프트웨어 개발 시 외부 오픈소스 라이브러리를 많이 사용하는 추세인데요. 이에 따라 해당 라이브러리에 이미 알려진 보안 취약점이 있는지 검사하는 소프트웨어 구성 요소(Software Composition Analysis) 도구도 보안 테스트에 포함되고 있습니다. 또한 도커 컨테이너 기술의 발전에 따라, 컨테이너의 구성 요소에서 알려진 취약점을 찾는 컨테이너 보안 검사 도구 등도 계속 발전하고 있습니다.

 

6) 지속적인 모니터링 및 대응 자동화 구현 

기업은 릴리즈 및 운영 단계에서 개발된 애플리케이션과 클라우드를 포함한 인프라에 대한 지속적인 모니터링을 통해, 보안 취약점과 보안 사고를 실시간으로 파악할 수 있습니다. 더욱 중요한 것은 이러한 솔루션 등을 통해 파악된 문제점에 대해 리스크를 분석하고, 전사적인 협업을 통해 보안 패치를 적용하는 보안 대응화 과정을 계획하고 통합해야 합니다.

 

이를 통해 기업은 잠재적 위협에 빠르게 대응하고 보안 사고의 영향을 최소화할 수 있는데요. SIEM(Security Information and Event Management) 도구를 활용하면, 보안 이벤트를 실시간으로 모니터링하고 보안 위협에 대한 대응을 자동화할 수 있습니다. CSPM(Cloud Security Posture Management) 같은 솔루션을 이용하여, 클라우드 기반의 시스템과 인프라를 모니터링할 수도 있습니다.

 

7) 협업, 보안 교육 제공 및 최신 보안 위협 정보 공유

데브섹옵스의 성공을 위해서는 무엇보다 개발, 보안, 운영팀 간의 협업이 중요합니다. 이를 위해서는 C레벨 및 고위 경영진들이 보안에 대한 중요성을 인식하고 조직 내 정보보안 거버넌스를 구축하는 것이 필요합니다.

 

글로벌 정보보안관리체계(ISMS) 표준인 ISO/IEC 27001은 특히 경영진들의 리더십과 참여(commitment)를 강조합니다. 국내 정보보호 및 개인정보보호 관리체계(ISMS-P) 인증기준에서도 가장 첫 번째 항목(1.1.1 경영진의 참여)으로 경영진의 참여를 강조하고 있죠. 이러한 경영진들의 관심과 참여를 바탕으로 정기적인 커뮤니케이션과 협업을 촉진하고, 보안에 대한 공동 책임 문화를 조성하면 보안 관련 문제들을 더 효율적으로 해결할 수 있습니다.

 

평소 개발자, 보안, 운영팀에게 최신 보안 위협에 대한 정보와, 정기적인 모의 훈련 및 보안 교육을 제공해야 하는데요. 이를 통해 개발 프로세스에 참여하는 모든 사람이 보안의 중요성을 이해하고, 보안 문제를 해결하는 데 필요한 지식과 기술을 갖출 수 있습니다. 이로써 향후 발생할 수 있는 보안 문제를 미리 대비하고, 보안 문제가 발생했을 때 신속한 대응이 가능해지는 것이죠.

 

 

오픈소스 데브섹옵스 보안 테스트 자동화 도구

다음으로 데브섹옵스를 실현하기 위해, 소프트웨어 개발 수명주기 상에서 통합하여 활용할 수 있는 보안 테스트 자동화 도구를 살펴보겠습니다. 시중에는 상용 제품을 비롯한 다양한 솔루션이 있지만, 이 글에서는 개발자가 무료로 사용할 수 있는 오픈소스 도구를 소개합니다. 

 

1) 정적 애플리케이션 보안 테스팅

*정적 애플리케이션 보안 테스팅(SAST, Static Application Security Testing) 도구는 소프트웨어의 소스 코드를 분석하고 그 결과를 바탕으로 보안 취약점을 찾아냅니다. 주요 오픈소스 정적 보안 테스팅 도구로는 프로그래밍 언어별로 Bandit(파이썬 코드 검사용), gosec(고 언어 코드 검사용), nodejsscan(자바스크립트 코드 검사용) 등이 있습니다. 

*정적 애플리케이션(application) 보안 테스팅 대신 정적 분석(analysis) 보안 테스팅이라고 혼용해서 사용하기도 한다. 동적 애플리케이션 보안 테스팅도 마찬가지다.

 

소프트웨어의 코드가 위치한 폴더 경로에서 해당 프로그래밍 언어에 맞는 도구를 실행하여 분석 결과를 얻을 수 있습니다. 상용 제품 중에는 다양한 언어를 동시에 검사하는 것들도 있습니다. 각 도구의 설정 옵션을 참조하여 위험도가 높은 결과만 출력한다거나, 특정 코드 패턴에 따라 정상적인 코드를 취약점으로 잘못 탐지하는 오탐(false positive) 문제가 발생하는 검사 규칙을 제외하는 등 사용자가 필요에 맞게 사용할 수 있습니다.

 

2) 동적 애플리케이션 보안 테스팅 

동적 애플리케이션 보안 테스팅(DAST, Dynamic Application Security Testing) 도구는 실제 운영 환경과 유사한 상태에서 소프트웨어에 실제 공격을 시뮬레이션하여 보안 취약점을 찾아냅니다. 예를 들어, 개발 중인 웹 서비스나 API를 통합 테스트 환경 등에서 실행하며, 자동화 테스트를 진행합니다.

 

동적 보안 테스팅 도구 중 가장 널리 알려져 있고 유용한 오픈소스 도구로는 ZAP(Zed Attack Proxy)이 있습니다. ZAP은 자동화를 지원하는 자체 API와 애드온을 제공합니다. 이를 이용해 CI/CD 파이프라인 중에서 테스트 환경을 구축하는 단계에서 ZAP을 통합하여, 웹 서비스나 API의 보안 검사를 쉽게 수행할 수 있습니다.

 

3) 소프트웨어 구성 요소 도구

요즘 대부분의 개발 프로젝트는 오픈소스 라이브러리를 사용합니다. 소프트웨어 구성 요소(Software Composition Analysis) 검사 도구는, 개발 프로젝트에 포함된 오픈소스 라이브러리의 보안 취약점과 라이센스 이슈를 검사하는 도구입니다. 오픈소스 도구로 OWASP Dependency Checkosv.dev 등이 있습니다.

 

최근에는 도커와 같은 컨테이너 기술이 급속도로 발전했는데요. 소프트웨어 구성 요소 검사 도구는 이러한 컨테이너 검사에도 효과적입니다. 컨테이너화된 소프트웨어의 각 구성 요소에 존재하는 알려진 보안 취약점을 찾아내기 때문이죠.

 

4) 개발 주기에서 각 도구의 활용

이러한 도구들을 소프트웨어 개발 주기의 각 단계에 맞게 사용하면, 데브섹옵스를 실현하는 데 도움이 됩니다. 예를 들어, 정적 보안 테스팅 도구와 소프트웨어 구성 요소 도구는 소프트웨어를 빌드하는 단계에서 코드 검사를 위해 사용하고, 동적 보안 테스팅 도구는 코드가 빌드된 후, 테스트 환경이 구축되는 테스트 단계에서 사용할 수 있습니다.

 

이 밖에도 소스 코드에 민감한 정보가 포함되어 있는지 검사하는 도구나, 컨테이너를 검사하는 도구, 모니터링 도구들도 CI/CD 파이프라인에 통합하여 사용할 수 있습니다.

 

 

마치며

결론적으로 데브섹옵스는 개발 운영 과정에서 ‘보안’을 하나의 핵심 요소로 고려해 통합함으로써, 기업이 보안 위협으로 인한 위험과 비용을 줄이고, 해당 기업의 소프트웨어 및 서비스의 보안 수준을 높이는 방법론입니다.

 

개발, 운영, 보안 각 부문에서의 통합 및 협업을 통해 보안 개발 문화를 전사적으로 구축하고, 다양한 보안 테스트 자동화 도구를 CI/CD 파이프라인 등의 개발 단계에 통합해 개발함으로써, 데브섹옵스를 실현할 수 있습니다. 이번 글을 통해 현실적인 ‘데브섹옵스’의 실현 방안을 고민해 볼 수 있길 바랍니다.

 

요즘IT의 모든 콘텐츠는 저작권법의 보호를 받는 바, 무단 전재와 복사, 배포 등을 금합니다.

좋아요

댓글

공유

공유

댓글 0
작가
22
명 알림 받는 중

작가 홈

작가
22
명 알림 받는 중
글로벌 오픈소스 리눅스 및 클라우드 기업에서 사이버 보안 팀 팀리드를 맡고 있습니다. “화이트해커를 위한 웹 해킹의 기술” 도서 저자이며 20년 이상 경력의 보안 전문가로, 침투테스트 및 다양한 보안솔루션 개발 경험을 바탕으로 데브섹옵스(DevSecOps) 소프트웨어 개발 보안과 보안테스트 자동화 관련 연구 개발을 리드하고 있습니다. 어렵게 느껴지는 사이버 보안 분야를 많은 분들에게 쉽게 전달하고 공유하고자 노력하고 있습니다.
함께 스크랩한 콘텐츠
같은 분야를 다룬 콘텐츠
인기 있는 콘텐츠

좋아요

댓글

스크랩

공유

공유

지금 회원가입하고,
요즘IT가 PICK한 뉴스레터를 받아보세요!

회원가입하기
요즘IT의 멤버가 되어주세요! 요즘IT의 멤버가 되어주세요!
요즘IT의 멤버가 되어주세요!
모든 콘텐츠를 편하게 보고 스크랩할 수 있어요.
모든 콘텐츠를 편하게 보고 스크랩 하기
매주 PICK한 콘텐츠를 뉴스레터로 받을 수 있어요.
매주 PICK한 콘텐츠를 뉴스레터로 받기
로그인하고 무료로 사용하기