🔐 소프트웨어 개발 보안 구축 #1 - Secure SDLC

2020. 7. 14. 11:33컴퓨터언어/소프트웨어공학

728x90
반응형

 

👍 Secure SDLC이란?

 

👊 제발 어려운 말 좀 쓰지마!!

이해하기 위한 용어정리 먼저!

Secure : 보안
SDLC(Software Development Life Cycle) : 소프트웨어 개발 생명주기

 

그럼 Secure SDLC는 위의 두 단어를 조합한 것이다.

Secure SDLC : 보안상 안전한 소프트웨어를 개발하기 위해 소프트웨어 개발 생명주기(SDLC)에 보안강화를 위한 프로세스를 포함한 것

 

Secure SDLC는 소프트웨어의 개발을 마치고 유지보수를 하는 단계에서 계속 터지는 보안이슈에 대응할 때 들어가는 막대한 비용을 줄이고자 요구사항분석-설계-구현-테스트-유지보수 전 단계에 걸쳐 수행되어야 할 보안활동을 제시하는 것이다.

 


👊 요구사항분석 단계에서 해야 할 보안활동 - 세션통제

고객의 요구사항들 중에서 보안을 지켜야 하는 항목이 어떤 것들이 있는가 식별하기

전산화되는 정보가 가지고 있는 보안수준을 보안요소별로 구분하여 분류하기

보안정책 항목들의 출처, 요구수준(법령요건), 세부내용 등을 문서화하기

 

❗️보안요소 : 소프트웨어 개발에 있어 충족시켜야 하는 요소 및 요건

기밀성(못읽게) 시스템 내의 정보와 자원은 인가된 사용자에게만 접근이 허용된다
정보가 전송 중에 노출되더라도 데이터를 읽을 수 없다
무결성(못쓰게) 시스템 내의 정보는 오직 인가된 사용자만 수정할 수 있다
가용성(너만써) 인가받은 사용자는 언제라도 사용할 수 있다
인증(로그인) 시스템 내의 정보와 자원을 사용하려는 사용자가 합법적인 사용자인지 확인하는 모든 행위
패스워드, 인증용카드, 지문검사 등
부인방지(기록) 데이터를 송수신한 자가 송수신 사실을 부인할 수 없도록 송수신 증거 제공

👊 설계 단계에서 해야 할 보안활동 - 세션통제

요구사항분석 단계에서 식별된 보안 요구사항들을 소프트웨어 설계서에 반영하고 보안 설계서 작성하기

소프트웨어에서 발생할 수 있는 위협(불법유출/위조/변조/삭제/파손 등 재산상 손해)을 식별하여 보안대책, 소요예산, 사고발생 시 영향범위와 대응책 등 수립하기

다음 분야에 대한 보안통제 기준을 수립하여 설계에 반영하기

  • 네트워크 : 외부의 사이버 공격으로부터 개발 환경을 보호하기 위해 네트워크를 분리하거나 방화벽 설치
  • 서버 : 보안이 뛰어난 운영체제를 사용하고 보안 업데이트, 외부 접속에 대한 접근통제 등 실시
  • 물리적 보안 : 출입통제, 개발공간제한, 폐쇄회로 등 감시 설비 설치
  • 개발 프로그램 : 허가되지 않은 프로그램을 통제하고 지속적인 데이터 무결성 검사 실시

👊 구현 단계에서 해야 할 보안활동 - 세션통제, 입력데이터 검증 및 표현, 보안 기능, 에러 처리, 코드 오류, 캡슐화, API 오용

표준 코딩정의서(다른 개발자나 운영자가 쉽게 접근할 수 있도록 클래스/메소드 등의 네이밍 규칙, 주석 첨부 방식 등을 정의해 둔 문서) 및 소프트웨어 개발보안가이드(정부에서 제작배포)를 준수하며, 설계서에 따라 보안 요구사항 구현하기(시큐어코딩)

개발과정 중에는 지속적인 단위테스트(프로그램을 기능별로 쪼갠 모듈이 정해진 기능을 정확히 수행하는지 검증)를 통해 소프트웨어에 발생할 수 있는 보안 취약점 최소화하기

코드점검 및 소스코드 진단작업을 통해 소스코드의 안정성 확보


👊 테스트 단계에서 해야 할 보안활동

설계 단계에서 작성한 보안 설계서를 바탕으로 보안 사항들이 정확히 반영되고 동작하는지 점검하기

동적분석도구 또는 모의 침투테스트를 통해 설계 단계에서 식별된 위협들의 해결여부 검증하기

구현 단계에서 추가로 제시된 위협들과 취약점들을 점검할 수 있도록 테스트 계획을 수립하고 시행하기

테스트 단계에서 수행한 모든 결과는 문서화하고 개발자에게 피드백하기


👊 유지보수 단계에서 해야 할 보안활동

이전 과정을 모두 수행했음에도 발생할 수 있는 보안사고 식별하기

사고 발생 시 이를 해결하고 보안패치 실시하기

 

728x90
반응형