Sh4n3e

DevOps Security == DevSecOps 본문

DevOps/K8S

DevOps Security == DevSecOps

sh4n3e 2023. 2. 5. 01:37

DevOps Security (DevSecOps)

DevSecOps는 소프트웨어 개발 프로세스의 모든 단계에서 보안 테스트를 통합하여 관리하는 것을 의미한다. 여기에는 개발자, 보안 전문가 및 운영 팀 간의 협업을 장려하여 효율적이고 안전한 소프트웨어를 구축할 수 있는 도구와 프로세스가 포함된다.
DevSecOps는 개발, 보안 및 운영을 의미한다. 이는 DevOps 방식의 연장선에 SW 애플리케이션을 구축하는 과정에서 각자가 가지는 역할과 책임을 의미한다.

개발

개발은 응용 프로그램을 계획, 코딩, 빌드 및 테스트하는 프로세스

보안

보안이란 소프트웨어 개발 주기 초기에 보안을 도입하는 것을 의미
예를 들어 프로그래머는 코드에 보안 취약점이 없는지 확인하고 보안 실무자는 회사가 소프트웨어를 출시하기 전에 소프트웨어를 추가로 테스트

운영

운영 팀은 소프트웨어에서 발생하는 모든 문제를 릴리스, 모니터링 및 수정

[DevSecOps가 중요한 이유]

DevSecOps의 목표는 보안 문제를 효율적으로 해결하는데 필요한 자원을 제공한다는 것이다. 기존 소프트웨어 개발 수명 주기(SDLC)에서 보안 테스트는 별개의 프로세스였다. 보안팀은 소프트웨어를 빌드한 후에야 보안 취약사항을 점검해야 했고, 이를 통해 취약사항을 개선하는 프로세스에 들어가는 시간과 복잡도는 올라갈 수 밖에 없었다. 이에 DevSecOps는 소프트웨어 개발 및 제공 프로세스 전반에 걸쳐 취약사항을 점검하여 SDLC를 개선하여 안전한 고품질의 애플리케이션을 제작할 수 있도록 도와준다.

DevSecOps의 이점

소프트웨어 취약성을 조기에 발견, 규제 준수 보장, 보안 인식 문화 조성, 새 기능을 안전하게 개발

소프트웨어 개발 수명 주기(Software Development Life Cycle)

시스템 엔지니어링, 정보 시스템, 또는 소프트웨어 공학에서 정보 시스템을 계획, 개발, 시험, 채용하는 과정을 뜻하는 용어이다. 소프트웨어 개발 생명 주기는 하드웨어부터 소프트웨어까지 넓은 범위에 적용할 수 있다. 대개 요구사항 분석→설계→개발→테스트→운영 단계로 구성되어 있다.


[DevSecOps 접근 방식]

쉬프트 레프트 (Shift Left)

일반적으로 DevSecOps에서 가장 중요하게 여기는 접근 방식으로, 소프트웨어 개발의 초기 단계에서 취약성을 확인하는 프로세스이다. CI(Continuous Integration)/CD(Continuous Deployment) Pipeline을 진행하는 과정에서 소프트웨어으 취약사항을 확인하여, 취약사항이 확인되면 Shift Right(다음단계로 옮겨짐)하는 것이 아닌, Shitf Left(이전단계로 되돌아감)함으로써 테스트/운영 단계로 넘어가기 전에 소프트웨어의 취약사항을 제거하는 방식을 말한다.

자동화된 보안 도구 사용

보안 스캔 도구를 CI/CD 프로세스에 통합해야 한다. 그러면 보안 평가로 인해 개발 속도가 느려지는 것을 방지할 수 있다.

[DevSecOps 도구의 종류]

다음과 같은 DevSecOps 도구를 사용하여 소프트웨어 개발 중에 보안 취약사항을 탐지하고 수정하게 된다.

정적 애플리케이션 보안 테스트 (Static Application Security Testing)

정적 애플리케이션 보안 테스트(SAST) 도구는 소스 코드에서 정적으로 취약점을 식별한다. 이러한 취약점에는 SQL 인젝션 , 버퍼 오버플로, XML 외부 엔터티(XXE) 공격 및 기타 OWASP Top 10 보안 위험이 포함되며, Secret Key의 코드 내 노출 또한 식별한다.
SAST는 소스 코드를 스캔하는 방식으로 진행되기에 오픈 박스 테스트라고 불리며, 컴파일 또는 실행 전에 코드의 보안 취약성을 발견하기 위해 내부에서 소프트웨어 애플리케이션을 스캔한다.
이 접근 방식은 애플리케이션 소스 코드 보안 결함을 조기에 발견하고 이후 개발 단계에 보안 문제를 남기는 것을 방지한다. 이렇게 하면 개발 시간이 단축되고 전반적인 프로그램 보안이 강화된다.

소프트웨어 구성 분석 (Software Composition Analysis)

소프트웨어 구성 분석(SCA)은 위험 관리, 보안 및 라이선스 준수를 목적으로 오픈 소스 소프트웨어(OSS) 사용에 대한 가시성을 자동화하는 프로세스이다. 오픈 소스의 경우 잦은 패치가 이뤄지기도 하고, 소스가 오픈되어 있기에 취약점(CVE 등)이 발견되기 쉬운 구조인데다 발견된 취약점이 Critical한 경우 파급력이 크기 때문이다. 이에 따라 오픈 소스 소프트웨어 사용에 대한 가시성을 확보하는 것은 매우 중요하다고 할 수 있다.
가장 최근 이슈 되었던 오픈 소스의 취약점을 말하자면 Log4J(CVE-2021-44228,CVE-2021-45046, CVE-2021-45105, CVE-2021-4104, CVE-2021-44832)를 들 수 있다.

오픈소스 취약점 대표 사례 : Log4J

동적 애플리케이션 보안 테스트 (Dynamic Application Security Testing)

동적 애플리케이션 보안 테스트(DAST) 도구는 네트워크 외부에서 애플리케이션의 보안을 테스트하여 해커를 모방한다. DAST 테스트는 애플리케이션에 원격으로 침입하려는 악의적인 행위자의 행동을 시뮬레이션한다. DAST는 OWASP Top 10 또는 SANS/CWE 25와 같은 주요 취약성 소스에 대해 소프트웨어 애플리케이션을 실시간으로 스캔하여 보안 결함 또는 공개 취약점을 찾는다.
SAST는 미사용 애플리케이션 코드를 스캔하여 보안 위협을 제기하는 결함이 있는 코드를 발견하는 반면, DAST는 실행 중인 애플리케이션을 테스트하고 해당 소스 코드에 액세스할 수 없다는 차이가 있다.

'DevOps > K8S' 카테고리의 다른 글

SecOps 달성을 위한 고민  (1) 2023.03.04
K8S/Container Security - Aqua Trivy  (0) 2023.02.05
Comments