안전한 운영의 삼위일체, DevSecOps

chaning
StealthSolution
Published in
8 min readJan 27, 2022

안녕들 하셨나요? Chaning입니다.

오늘의 보안 키워드는 개발에 관심이 있으시다면 들어보셨을 수도 있습니다.

아홉 번째, DevSecOps입니다.(벌써!!)

DevSecOps가 어떤 이유로 선정 되었을까요?

  • IT 인프라 환경의 변화

약 10년 동안 IT 인프라 환경은 많은 변화가 있었습니다. 클라우드 컴퓨팅 플랫폼, 공유 스토리지와 같은 신속한 인프라 전환은 발전된 애플리케이션과 서비스 사용을 통해 성장을 원하는 조직에게 큰 이득을 가져다 주었습니다.

이것은 DevOps라고 하는 개발 문화의 활성화도 이끌어 냈는데요. DevOps는 개발과 운영을 함께 하여 소프트웨어를 빠르게 개발하고 배포하는 데에 집중합니다. 그러다보니 상대적으로 보안에 대한 요소를 고려하지 못해 보안 취약점이나 *컴플라이언스 준수에는 부족한 경우가 많습니다.

이를 해결하기 위해서는 DevOps에 Security(보안)을 개발부터 운영까지 모든 과정에 포함시켜야 합니다. 그래서 DevSecOps가 중요합니다.

*컴플라이언스: 회사, 공공기관에서 지켜야하는 보안상의 규정

DevSecOps를 이해하기 위해서는 DevOps에 대해 알고 계셔야 이해가 훨씬 수월한데요.

그래서 배경 지식을 차곡차곡 쌓아보는 시간을 갖겠습니다.

배경지식 — DevOps(데브옵스)

  • 소프트웨어 생명주기

소프트웨어의 설계에서부터 개발, 운용, 유지 보수까지의 전 과정을 뜻하는 말입니다. 개발 방법론마다 다른 방식을 가지고 있습니다.

대표적으로 폭포수 모델, Agile(애자일) 등이 있습니다.

  • DevOps란?
DevOps 툴체인

기존에는 개발팀에서 개발이 완료되면 운영팀에 연락하여 배포를 위한 작업을 시작했습니다. 그 과정에서 예상치 못한 오류로 인해 지연이 생기며 배포가 늦어졌습니다. 여기서 문제는 개발팀과 운영팀이 각각 진행한다는 점입니다.

이러한 문제를 해결할 수 있는 것이 DevOps입니다. DevOps는 개발팀과 운영팀 간의 소통, 협업, 통합 및 자동화를 지향합니다. 개발 중간에 필요한 운영 서비스에는 무엇이 있는지 등 자유롭게 소통하면서 개발부터 배포 및 출시까지 모든 과정을 함께합니다.

이 과정에서 빌드, 테스트 및 배포 절차를 자동화하면 작업이 훨씬 빨라지고 결과물을 신속하게 확인할 수 있습니다. DevOps에서 중심적인 역할인 자동화는 CI/CD 파이프라인을 통해 완성합니다.

  • CI/CD 파이프라인(Continuous Integration/Continuous Delivery)

CI(지속적 통합): 자동화된 빌드 및 테스트를 수행하고 개발자가 코드의 변경 사항을 중앙 저장소에 정기적으로 병합하는 개발 방법입니다. 코드가 제대로 작성 됐는지 자동으로 확인하여 오류를 빠르게 찾아냅니다.

CD(지속적 배포): 제품이 출시되기 위한 코드 변경이 자동으로 준비되는 개발 방식입니다. 코드 변경이 파이프라인의 전 과정을 성공적으로 통과하면 변경 사항이 제품에 자동으로 배포되어 빠른 속도로 사용자에게 새로운 기능을 제공할 수 있습니다.

간단히 말해 CI는 수정된 코드를 자동으로 공유 폴더에 저장하는 것이고 CD는 제품 출시를 위한 사전 검수 및 배포를 자동화한 것입니다.

즉, DevOps는 CI와 CD 과정의 자동화를 통해 빠르게 출시하는 것이 목적입니다.

DevSecOps(데브섹옵스)

DevOps를 정리해보자면 개발팀과 운영팀이 원활하게 소통하고 협업하며 개발 시작 단계부터 운영까지 자동화 도구를 통해 자연스럽게 연계되고 개발부터 배포까지의 시간을 단축하는 것입니다.

하지만 이 과정에서 보안은 소프트웨어 개발 최종 단계에 점검합니다. 만약 소프트웨어 보안 점검 중 심각한 보안 결함이 발생했을 경우 최악의 상황에는 전체 개발 소스 코드를 재작성해야 할 수도 있습니다.(소름..)

DevSecOps 툴체인

그래서 DevSecOps가 중요합니다. DevSecOps는 개발팀, 보안팀, 운영팀의 소통, 협업, 통합 및 자동화를 지향합니다. 뭔가 위에 쓴 말을 재탕하는 느낌이신가요? 맞습니다.(ㅋ) DevSecOps는 DevOps를 기반으로 보안을 추가한 것이기 때문이죠.

DevSecOps는 개발과 운영을 동시에 진행하는 DevOps에 보안도 개발 시작부터 배포까지 전 과정에 함께합니다.

  • 장점
  1. 안전성 향상: 개발시 작성된 코드에서 보안 취약점이 있는지, 출시된 소프트웨어를 모니터링 하면서 새롭게 탐지되는 위협은 없는지 조기에 발견할 수 있습니다. 모든 과정에서 보안을 포함하고 있으므로 안전하게 개발하고 배포할 수 있습니다.
  2. 보안 사고 감소: 소프트웨어 개발과 운영 전반에 걸쳐서 자동화 방식을 적용해 보안 사고로 인한 서비스 중단을 줄일 수 있고 외부로부터의 공격을 최소화할 수 있습니다.
  3. 빠른 개발 및 배포: 개발, 배포, 보안 테스트 등 모든 과정에 자동화된 방식을 사용하다보니 속도는 당연히 빠를 수 밖에 없습니다.
  • *Shift Left

*순서도(A→B→C→D)의 형태에서 A방향(초기)에 가까워질수록 Shift Left라고 합니다.

처음부터 보안을 충분히 고려한 소프트웨어 개발 모델을 의미합니다. 기존의 보안은 실제 감사의 형태로 프로세스의 맨 마지막에 오는 경향이 있었습니다. 이는 전반적인 보안 태세에 대한 가시성을 떨어트려 위협이 눈에 띄지 않게 만듭니다.

보안을 최고 수준의 구성 요소로 보는 DevSecOps의 중요한 부분입니다. 개발팀, 운영팀 및 보안팀 간의 협업을 시도하여 모든 관계자가 더 큰 보안 그림에 대해 스스로 생각할 수 있게 합니다. 나아가 보안의 중요성을 제대로 인식하고 개개인이 보안 구현에 책임을 지게 됩니다.

그렇다면 DevSecOps을 구현하기 위한 도구는 어떤 것이 있을까요?

DevSecOps의 보안 도구

대부분의 써드파티 DevSecOps 도구는 취약점이 감지되는 ‘테스트’ 단계에 초점을 맞춥니다. 하지만 훌륭한 보안 도구는 문제가 워크플로우로 전달되지 않도록 프로세스 초기에 교정 및 보안 경고합니다. 또한 Threat Modeling(위협 모델링) 같은 솔루션을 사용할 경우 설계 단계를 통과하기도 전에 잠재된 보안 결함을 찾을 수 있습니다.

DevSecOps 보안 도구 세 가지를 소개하겠습니다. 각각 플랫폼이나 단계에 따라 다른 서비스를 제공합니다. (최고의 도구로 뽑힌 제품들입니다!)

1. Acunetix

  • 7,000개 이상의 등록된 취약점 카탈로그를 사용하여 웹 애플리케이션을 스캔하고 테스트하는 웹 애플리케이션 보안에 중점을 둔 DevSecOps 솔루션입니다. 또한 제품은 소스 코드를 면밀히 조사하는 AcuSensor라는 기능을 사용하여 SQL 인젝션 및 XSS 개방을 포함한 다양한 문제를 감지할 수 있습니다.

2. Aqua Security

  • 앱 보안, IaaS 및 VM/컨테이너 보안을 대상으로 하는 3가지 제품 라인업을 사용하는 클라우드 기반 애플리케이션 보안 플랫폼입니다. 스캐닝 솔루션은 보안 취약점, 멀웨어 존재 및 유출된 기밀을 탐지할 수 있습니다. 또한 우발적인 정책 위반을 방지하기 위해 배포에 대한 유연한 정책을 구성할 수 있습니다.
  • 시스템은 실시간 환경에서 완전한 CI/CD 통합 및 포괄적인 스캐닝을 통해 자동화된 보안을 위해 구축되었습니다. 또한 전체 탐지, 교정, 테스트 및 배포 프로세스를 위한 완전한 취약점 관리 워크플로우를 설정할 수 있습니다.

3. Codacy

  • Codacy는 개발자가 개발 초기에 보안 취약성을 감지할 수 있도록 하는 정적 코드 분석 도구를 특징으로 하는 자동화된 코드 검토 솔루션입니다. 이 기능은 장기적인 보안 결함을 크게 줄이는 데 도움이 되며 스타일 가이드라인 및 중복 문제와 같은 다른 개발 영역을 지원합니다.
  • 이 솔루션은 40개 이상의 언어를 지원하며 유연한 개발을 위해 Git 저장소와 통합할 수 있습니다. 다른 옵션을 사용하면 보안 문제가 감지될 때 경고하는 자동 실시간 코드 검토가 가능합니다. 최상의 보안을 위해 소프트웨어는 모든 기능을 포함하는 방화벽 뒤에서 자체 호스팅되는 동시에 절대적인 보안을 유지할 수도 있습니다.

DevSecOps를 실현하기 위해서는 다양한 도구의 도움이 필요합니다. 개발자나 운영자가 알지 못하는 위협에 대해 매번 보안 전문가가 설명을 해줄 수 없기 때문입니다. DevSecOps 도구를 이용하면 각 단계마다 자동으로 탐지되기 때문에 취약점을 조기에 조치할 수 있습니다. 기반부터 안전에 신경쓴 튼튼한 건물같은 소프트웨어 개발이 가능한 것이죠.(든든)

현재 기업의 모습은 클라우드, VPN을 사용한 원격 근무를 하고 있고 사이버 공격은 매년 큰 폭으로 증가하고 있습니다. 2020년 대비 2021년만 해도 50%나 증가했으니까요.

보안이 더욱 중요해진 만큼 DevSecOps 방식의 서비스 개발이 앞으로 더 활발해질 것으로 보입니다. 앞으로 더 많은 DevSecOps 기반의 서비스를 기대하면서 오늘 포스팅 마치겠습니다.

읽어주셔서 감사합니다.

Chaning이었습니다.(안녕!)

--

--