[정보처리기사 필기] 소프트웨어 개발 보안 구축 - 145. Secure SDLC

1. Secure SDLC의 개요

  • 보안상 안전한 소프트웨어를 개발하기 위해 SDLC에 보안 강화를 위한 프로세스를 포함한 것
  • 소프트웨어의 유지 보수 단계에서 보안 이슈를 해결하기 위해 소모되는 많은 비용을 최소화하기 위해 등장
  • 요구사항 분석, 설계, 구현, 테스트, 유지 보수 등 SDLC 전체 단계에 걸쳐 수행되어야 할 보안 활동 제시
  • Secure SDLC의 대표적인 방법론
    • CLASP
      • Secure Software사에서 개발하였으며, SDLC의 초기 단계에서 보안을 강화하기 위해 개발된 방법론
      • 활동 중심, 역할 기반의 프로세스로 구성
      • 현재 운용 중인 시스템에 적용하기에 적합
    • SDL
      • 마이크로소프트 사에서 안전한 소프트웨어 개발을 위해 기존의 SDLC를 개선한 방법론
      • 전통적인 나선형 모델을 기반으로 함
    • Seven Touchpoints
      • 소프트웨어 보안의 모범사례를 SDLC에 통합한 방법론
      • 설계 및 개발 과정의 모든 산출물에 대해 위험 분석 및 테스트를 수행
      • SDLC의 각 단계에 관련된 7개의 보안 강화 활동을 수행

2. 요구사항 분석 단계에서의 보안 활동

  • 요구사항 분석 단계에서는 보안 항목에 해당하는 요구사항을 식별하는 작업을 수행
  • 전산화되는 정보가 가지고 있는 보안 수준을 보안 요소별로 등급을 구분하여 분류
  • 조직의 정보보호 관련 보안 정책을 참고하여 소프트웨어 개발에 적용할 수 있는 보안 정책 항목들의 출처, 요구 수준, 세부 내용 등을 문서화
  • 보안 요소
    • 소프트웨어 개발에 있어 충족시켜야할 요소 및 요건
    • 보안 3대 요소 : 기밀성, 무결성, 가용성, (인증, 부인 방지)
      • 기밀성
        • 시스템 내의 정보와 자원은 인가된 사용자에게만 접근이 허용
        • 정보가 전송 중에 노출되더라도 데이터를 읽을 수 없음
      • 무결성
        • 시스템 내의 정보는 오직 인가된 사용자만 수정할 수 있음
      • 가용성
        • 인가받은 사용자는 언제라도 사용할 수 있음
      • 인증 
        • 시스템 내의 정보와 자원을 사용하려는 사용자가 합법적인 사용자인지를 확인하는 모든 행위
        • 대표적 방법 : 패스워드, 인증용 카드, 지문 검사 등
      • 부인 방지
        • 데이터를 송수신한 자가 송수신 사실을 부인할 수 없도록 송수신 증거를 제공

3. 설계 단계에서의 보안 활동

  • 식별된 보안 요구사항들을 소프트웨어 설계서에 반영하고, 보안 설계서를 작성
  • 소프트웨어에서 발생할 수 있는 위협을 식별하여 보안대책, 소요예산, 사고 발생 시 영향 범위와 대응책을 수립
  • 환경에 대한 보안통제 기준을 수립
    • 네트워크 : 외부의 사이버 공격으로부터 개발 환경을 보호하기 위해 네트워크를 분리하거나 방화벽을 설치
    • 서버 : 보안이 뛰어난 운영체제를 사용하고 보안 업데이트, 외부 접속에 대한 접근통제 등을 실시
    • 물리적 보안 : 출입통제, 개발 공간 제한, 폐쇄회로 등의 감시설비를 설치
    • 개발 프로그램 : 허가되지 않은 프로그램을 통제, 지속적인 데이터 무결성 검사를 실시

4. 구현 단계에서의 보안 활동

  • 표준 코딩 정의서 및 소프트웨어 개발 보안 가이드를 준수하며, 설계서에 따라 보안 요구사항들을 구현
  • 개발 과정 중에는 지속적인 단위 테스트를 통해 소프트웨어에 발생할 수 있는 보안 취약점 최소화
  • 코드 점검 및 소스 코드 진단 작업을 통해 소스 코드의 안정성을 확보해야 함
  • 시큐어 코딩 (Secure Coding)
    • 소프트웨어의 구현 단계에서 발생할 수 있는 보안 취약점들을 최소화하기 위해 보안 요소들을 고려하며 코딩하는 것을 의미
    • 보안 취약점을 사전에 대응하여 안정성과 신뢰성을 확보하기 위해 사용
    • 보안 정책을 바탕으로 시큐어 코딩 가이드를 작성, 개발 참여자에게는 시큐어 코딩 교육을 실시해야 함

5. 테스트 단계에서의 보안 활동

  • 설계 단계에서 작성한 보안 설계서를 바탕으로 보안 사항들이 정확히 반영되고 동작되는지 점검
  • 동적 분석 도구 또는 모의 침투테스트를 통해 설계 단계에서 식별된 위협들의 해결여부 검증
  • 설계 단계에서 식별된 위협들 외에도 구현 단계에서 추가로 제시된 위협들과 취약점들을 점검할 수 있도록 테스트 계획을 수립하고 시행
  • 테스트 단계에서 수행한 모든 결과는 문서화하여 보존되고 개발자에게 피드백 되어야 함

6. 유지보수 단계에서의 보안 활동

  • 이전 과정을 모두 수행하였음에도 발생할 수 있는 보안사고를 식별
  • 사고 발생 시 이를 해결하고 보안 패치를 실시