보안상 안전한 소프트웨어를 개발하기 위해 SDLC(Software Development Life Cycle)에 보안 강화를 위한 프로세스를 포함한 것.
소프트웨어의 유지보수 단계에서 보안 이슈를 해결하기 위해 소모되는 비용을 최소화하기 위해 등장했다.
요구사항 분석, 설계, 구현, 테스트, 유지보수 등 SDLC 전체 단계에 걸쳐 수행되어야 할 보안 활동들을 제시한다.
대표적 방법론들 -
이제 SDLC의 각 단계별 보안 활동을 자세히 알아보쟈
보안 항목에 해당하는 요구사항을 식별하는 작업을 수행한다.
전산화되는 정보가 가지고 있는 보안 수준을 보안 요소별로 등급을 구분하여 분류한다.
조직의 정보보호 관련 보안 정책을 참고하여 소프트웨어 개발에 적용할 수 있는 보안 정책 항목들의 출처, 요구 수준(필수?선택?), 세부 내용 등을 문서화한다.
식별된 보안 요구사항들을 소프트웨어 설계서에 반영하고, 보안 설계서를 작성한다.
발생 가능한 위험들을 식별하여 보안 대책, 소요 예산, 사고 발생 시 영향 범위, 대응책 등을 수립한다.
네트워크, 서버, 물리적 보안, 개발 프로그램 등 환경에 대한 보안통제 기준을 수립하여 설계에 반영한다.
표준 코딩 정의서, 소프트웨어 개발 보안 가이드를 준수하며, 설계서에 따라 보안 요구사항들을 구현한다.
지속적인 Unit Test를 통해 보안 취약점을 최소화한다.
코드 점검, 소스코드 진단 작업을 통해 안정성을 확보한다.
설계 단계에서 작성한 보안 설계서를 바탕으로 보안 사항들이 정확히 반영되고 동작되는지 점검한다.
동적 분석 도구, 모의 침투테스트를 통해 설계 단계에서 식별된 위협들의 해결여부를 검증한다.
설계 단계에서 식별된 위험들 외에도 구현 단계에서 추가로 제시된 위협들과 취약점들을 점검할 수 있도록 테스트 계획을 수립하고 시행한다.
테스트 결과는 모두 문서화하여 보관하고, 개발자에게 피드백 되어야 한다.
이전 과정을 모두 수행하였음에도 발생할 수 있는 보안사고들을 식별하고, 사고 발생 시 이를 해결하고 보안 패치를 실시한다.
⭐보안 요소⭐
- 기밀성 Confidentialily
시스템 내의 정보와 자원은 인가된 사용자에게만 접근이 허용된다.
정보가 전송 중에 노출되더라도 데이터를 읽을 수 없다.- 무결성 Integrity
시스템 내의 정보는 오직 인가된 사용자만 수정할 수 있다.- 가용성 Availability
인가받은 사용자는 언제라도 사용할 수 있다.- 인증 Authentication
시스템 내의 정보와 자원을 사용하려는 사용자가 합법적인 사용자인지를 확인해야 한다.
Ex) 패스워드, 지문 검사, 인증 카드- 부인 방지 NonRepudiation
데이터를 송/수신한 자가 송/수신 사실을 부인할 수 없도록 증거를 제공한다.