소프트웨어 개발보안 가이드 (제 2장, 소프트웨어 개발보안)

SOO·2021년 2월 16일
0

소프트웨어 개발보안 필요성

  • 해킹 등 사이버공격의 원인인 보안약점을 SW 개발단계에서 사전에 제거하고 SW개발 생명주기의 각 단계별로 수행하는 일련의 보안활동을 통하여 안전한 SW를 개발, 운영

활동주체별 개발보안 역할

  • 사업자(개발자)

SW 개발 보안 관련 기술수준 및 적용계획 명시
개발인력 대상 SW 개발보안 관련 교육 실시
SW개발보안 가이드를 참조하여 개발
자체적으로 보안약점 진단 및 제거
SW 보안약점 관련 시정요구 이행
SW 보안약점이 제거된 사업결과물 및 증빙서류 등 제출

소프트웨어 개발보안 방법론

1. 소프트웨어 개발 생명주기 이해

  • 소프트웨어 개발 생명주기(SDLC)는 소프트웨어의 생성에서 소멸까지의 과정을 단계별로 나눈 것
  • 일반적으로 정의단계, 개발단계, 유지보수 단계로 나눈다.

대표적 개발생명주기 모델

  1. 개발수정모델 (Build-Fix Model)

    요구사항, 분석/설계 단계 없이 일단 개발에 들어간 후 만족할 때까지 수정작업을 수행

  2. 폭포수 모델 (Waterfall Model)

    순차적으로 소프트웨어를 개발하는 전형적인 개발 모델. 소프트웨어 개발의 전 과정을 나누어 체계적이고 순차적으로 접근

  3. 프로토타입 모델 (Prototyping Model)

    점진적으로 시스템을 개발해 나가는 접근 방식으로 원형(prototype)을 만들어 고객과 사용자가 함께 평가한 후, 개발될 소프트웨어의 요구사항을 정제하여 보다 완전한 요구 명세서를 완성

  4. 나선형 모델 (Spiral Model)

    폭포수 모형과 프로토타입 모델의 장점을 수용하고 위험분석을 추가한 점증적 개발 모델. 프로젝트 수행 시 발생하는 위험을 관리하고 최소화하기 위한 방식

2. 소프트웨어 개발 방법론 이해

  1. 구조적 방법론

    정형화된 분석 절차에 따라 사용자 요구사항을 파악하여 문서화하는 체계적인 방법으로 비즈니스 자동화를 목표로 하는, 프로세스 중심의 개발 방법

    1) 특징: 데이터 흐름 지향, 프로세스 위주의 분석과 설계 방식
    	모듈의 분할과 정복에 의한 하향식 설계 방식
    2) 라이프사이클: 폭포수 모델
    3) 개발 방식: TOP-DOWM
  1. 객체지향 방법론

    분석, 설계 및 개발에 있어서 객체지향 기법을 활용하여 시스템을 구축

    1) 특징: 반복적, 점증적(Iterative and Incremental) 개발 방식
    	 재사용성의 강조
         	 DBMS의 원활한 연계 등 아직 개선의 여지가 많음
    2) 라이프사이클: 반복적 개발
    3) 개발 방식: BOTTOM-UP
  2. CBD 방법론

    재사용이 가능한 컴포넌트의 개발 또는 사용컴포넌트를 조합하여 애플리케이션 개발 생산성과 품질을 높이고, 시스템 유지보수 비용을 최소화 할 수 있는 방법

    1) 특징: 컴포넌트 기반 개발 (*컴포넌트: 독립적인 단위 모듈)
    	반복 점진적 개발프로세스 제공
        	표준화된 산출물 작성, 컴포넌트 제작 기법을 통한 재사용성 향상
    2) 라이프사이클: 반복적 개발
    3) 개발 방식: BOTTOM-UP

3. 소프트웨어 개발 보안 방법론 이해

  • 기존 개발방법론이 적용된 프로젝트에서 안전한 소프트웨어를 만들기 위해 요구되는 보안 활동들을 적용하는 개발 방법을 SW 개발보안 방법론이라고 한다.

Q. 안전한 소프트웨어란?

신뢰성이 위협받는 상황에서도 시스템을 신뢰할 수 있는 상태로 유지할 수 있도록 만들어진 소프트웨어

안전한 SW개발을 위해 SW개발 생명주기에 걸쳐 추가할 보안활동

4. 소프트웨어 개발보안 적용 사례

  1. MS-SDL (Microsoft - Secure Development Lifecycle)

    마이크로소프트사에서 자체수립한 SDL (Secure Development Lifecycle) 방법론을 적용, SDL이 적용된 소프트웨어는 이전 버전에 비해 50% 이상 취약점이 감소

  2. Seven Touchpoints

    실무적으로 검증된 개발보안 방법론 중 하나로 소프트웨어 보안의 모범사례를 소프트웨어 개발 라이프사이클에 통합

  3. CLASP (Comprehensive, Lightweight Application Security Process)

    SDLC 초기단계에 보안 강화를 목적으로 하는 정형화된 프로세스로써, 활동중심ㆍ역할 기반의 프로세스로 구성된 집합체. 이미 운영중인 시스템에 적용하기 좋음
    5가지 관점에 따른 개발보안 프로세스 (개념 관점, 역할기반 관점, 활동평가 관점, 활동구현 관점, 취약성 관점)

5. 소프트웨어 개발보안 적용 효과

  • 취약점이 대폭 감소하여 보안패치와 같은 유지보수 비용이 확연하게 감소

프로젝트 참여 직무별 보안활동

역할별 보안 활동

  1. 프로젝트 관리자 (Project Manager)
    1) 팀 구성원에게 응용프로그램의 보안전략을 알려야 한다.
    2) 보안위험과 비즈니스에 응용 프로그램 보안의 영향을 이해시킨다.

  2. 요구사항 분석가 (Requirement Specifier)
    1) 아키텍트가 고려해야 할 여러 가지 보안관련 비즈니스 요구사항을 자세히 설명할 수 있어야 한다.
    2) 구조를 정의하고 해당 구조에 존재하는 자원에 대한 보안 요구사항이 무엇인지 결정한다.
    3) 유즈케이스에 대한 보안 고려사항을 기반으로 오용사례를 정의할 수 있어야 한다.

  3. 아키텍트 (Architect)
    1) 명백한 보안 오류를 도입하지 않도록 보안 기술의 문제를 이해할 수 있어야 한다.
    2) 시스템에 사용되는 모든 리소스를 가능한 자세히 정의한다.
    3) 각 리소스의 역할에 적절한 보안 요구사항이 적용되도록 한다.
    4) 각 리소스가 시스템 라이프사이클을 통한 서로 간의 상호작용을 이해할 수 있게 해야한다.

  4. 설계자 (Designer)
    1) 특정 기술이 설계보안항목을 만족하는지 확인하고 제대로 그 기술이 사용될 수 있는 방법을 파악해야 한다.
    2) 고가의 수정을 요구하는 위험을 최소화 하기 위해 로드맵을 제공해야 한다.

  5. 구현개발자(Implementer)
    1) 고도로 구조화된 개발 환경에서 프로그램을 구현하기 위해 안전한 코딩표준을 준수하여 개발하여야 한다.
    2) 제 3자가 소프트웨어 안전 여부를 쉽게 판단할 수 있도록 문서화해야 한다.

  6. 테스트 분석가 (Test Analyst)
    1) 요구사항과 구현결과를 반복적으로 테스트한다.
    2) 반드시 보안 전문가일 필요는 없으며 테스트가 가능할 정도의 위험에 대한 학습이나 툴 사용 방법을 숙지하고 있으면 된다.

  7. 보안감사자 (Security Auditor)
    1) 프로젝트의 현재 상태를 검사하고 현재 상태의 보안을 보장한다.
    2) 프로젝트의 전체 단계에서 활동하여야 한다.

[출처] 행정자치부 SW 개발보안 가이드 https://www.mois.go.kr/frt/bbs/type001/commonSelectBoardArticle.do?bbsId=BBSMSTR_000000000015&nttId=57473

0개의 댓글