소프트웨어 개발 보안 구축
SW개발 보안 설계
- Secure SDLC 개념과 SDLC 단계별 보안활동에 대한 이해
- 입력데이터 검증 및 표현, 보안기능, 에러처리, 세션통제 보안 점검의 개념 이해
- 각각의 보안 약점 및 방지 방법 이해
용어사전
-
Security Elements 보안요소
- 소프트웨어 개발에 있어 충족시켜야 할 요소 및 요건을 의미하며, 주요 보안요소에는 기밀성, 무결성, 가용성이 있으며 그 외에 인증, 부인방지가 포함됨
-
Session Control 세션통제
- 세션은 서버와 클라이언트의 연결을 의미하고 세션통제는 세션의 연결과 연결로 인해 발생하는 정보를 관리하는 것
Secure SDLC(Software Development Life Cycle) 개념
- 보안상 안전한 소프트웨어를 개발하기 위해 소프트웨어 개발 생명주기에 보안 강화를 위한 프로세스를 포함한 것
- 소프트웨어 유지 보수 단계에서 보안 이슈를 해결하기 위해 소모되는 많은 비용을 최소화하기 위해 등장
- 요구사항 분석, 설계, 구현, 테스트, 유지보수 등 SDLC 전체 단계에 걸쳐 수행되어야 할 보안 활동을 제시
Secure SDLC 단계별 활동
1.요구사항 분석 단계에서의 보안 활동
- 보안 항목에 해당하는 요구사항을 식별하는 작업을 수행
- 전산화되는 정보가 가지고 있는 보안 수준을 보안 요소별로 등급을 구분하여 분류
- 보안정책항목들의 출처, 요구수준, 세부내용을 문서화
- 보안요소
- 기밀성
- 시스템 내의 정보와 자원은 인가된 사용자에게만 접근 허용
- 무결성
- 시스템 내의 저보는 오직 인가된 사용자만 수정가능
- 가용성
- 인가 받은 사용자는 언제든지 사용 가능
- 인증
- 시스템 내 정보와 자원을 사용하려는 자가 합법적인 사용자인지 확인
- 부인방지
- 데이터를 송/수신한 자가 송/수신 사실을 부인할 수 없도록 증거 제공
- 기밀성
2. 설계 단계에서의 보안 활동
- 식별된 보안 요구사항들을 소프트웨어 설계서에 반영하고, 보안 설계서를 작성
- 소프트웨어에서 발생할 수 있는 위협을 식별하여 보안대책, 소요예산, 사고발생 시 영향범위와 대응책 수립
- 환경에 대한 보안 통제 기준 수립 및 설계 반영
- 네트워크
- 외부의 사이버 공격으로부터 개발 환경을 보호하기 위해 네트워크를 분리하거나 방화벽 설치
- 서버
- 보안이 뛰어난 운영체제를 사용하고 보안 업데이트, 외부접속에 대한 접근통제 실시
- 물리적 보안
- 출입통제, 개발 공간 제한, 폐쇄회로
- 개발프로그램
- 허가 되지 않은 프로그램을 통제하고 지속적인 데이터 무결성 검사 실시
- 네트워크
3. 구현 단계에서의 보안 활동
- 표준 코딩 정의서 및 소프트웨어 개발 보안 가이드를 준수하며, 설계서에 따라 보안 요구사항들을 구현
- 갭라 과정 중에는 지속적인 단위 테스트를 통해 소프트웨어에 발생할 수 있는 보안 취약점을 최소화
- 단위 테스트
- 프로그램의 단위기능을 구현하는 모듈이 정해진 기능을 정확히 수행하는지 검증
- 단위 테스트
- 코드 점검 및 소스 코드 진단 작업을 통해 소스 코드의 안정성 확보
4. 테스트 단계에서의 보안 활동
- 설계 단계에서 작성한 보안 설계서를 바탕으로 보안 사항들이 정확히 반영되고 동작하는지 점검
- 동적 분석 도구 또는 모의 침투테스트를 통해 설계 단계에서 식별된 위협들의 해결 여부 검증
- 구현 단계에서 추가로 제시된 위협들과 취약점들을 점검할 수 있도록 테스트 계획을 수립하고 시행
- 테스트 단계에서 수행한 모든 결과는 문서화, 개발자에게 피드백
5. 유지보수 단계에서의 보안 활동
- 이전 과정을 모두 수행했음에도 발생할 수 있는 보안사고들을 식별
- 사고 발생 시 이를 해결하고 보안 패치를 설치
- 보안 이슈는 유지보수 단계