소프트웨어 개발에 중점을 둔 보안 보증 프로세스. 2004년부터 진행하는 모든 개발 프로젝트에 필수 정책으로 사용되고 있다.
기존의 소프트웨어 개발 주기인 SDLC(Software Development Lifecycle)에 보안을 고려한 SDL(Security Development Lifecycle) 모델을
별도로 구성해 기존 개발 주기에 소프트웨어 보안 및 개인정보 보호 기능을 통합시켰다.
SW 개발 보안의 중요성을 뒷받침하는 대표적인 사례. 자체적으로 개발한 개발생명주기를 제품 개발 전 과정에 적용토록 하여
보안 취약점의 원인을 제거하도록 했다. 개발 과정에서 MS-SDL을 적용한 운영체제 및 DB서버의 보안 취약점이 감소하는 효과가 있다.
1. Pre-SDL
소프트웨어 개발팀의 구성원들이 보안의 기초와 최신 보안 동향에 대한 정보를 매년 1회 교육을 받을 수 있도록 한다.
순번 |
보안 교육이 포함해야 하는 내용 |
1 |
시큐어 설계 |
2 |
위협 모델링 |
3 |
시큐어 코딩 |
4 |
보안 테스팅 |
5 | 프라이버시 |
2. 요구사항
신뢰성 있는 소프트웨어를 구축하기 위해 기본 보안 요구사항, 프라이버시 요구사항을 정의한다.
순번 |
필수 항목 |
1 |
SDL 방법론 적용 여부 결정 |
2 |
보안 책임자(Security Advisor) 선정 |
3 |
보안 팀(Security Champion) 선정 |
4 |
버그 리포팅 도구 정의 |
5 |
보안 버그 경계(Security bug bar) 정의 |
6 |
보안 위험 평가 |
7 |
보안 계획서 작성 |
8 |
버그 추적 시스템 정의 |
3. 설계
구현에서부터 배포에 이르는 동안 수행해야 하는 작업 계획을 수립하는 단계이다.
순번 |
항목 |
1 |
보안 설계 검토 |
2 |
방화벽 정책 준수 |
3 |
위협 모델링 |
4 |
위협 모델 품질 보증 |
5 |
위협모델 검토 및 승인 |
6 |
보안 설계서 문서 작성 |
7 |
보단 디폴트 인스톨 실행 |
8 |
모든 샘플 코드의 보안 검토 수행 |
9 |
안전하지 않은 함수와 코딩 패턴 알림 |
10 | 설계 변화 요구에 관한 보안 관련 사항 문서화 |
11 | 위협 모델을 통해 찾아진 취약성을 위한 작업 목록 작성 |
* 공격 표면(Attack Surface) 계획 수립
- 공격 표면이라는 개념적으로 정보 및 금융 자산, 지적 재산, 또는 비즈니스 수행 역량에 존재하는 잠재적 공격 지점을 확인하는 과정의 의미.
위협 모델링에서 공격 표면 관리는 일종의 네트워크, 애플리케이션, 시스템 등 공격자들이 데이터나 정보를 수집하는 지점을 확인하고 공격을 예방하는 것
4. 구현
보안 및 프라이버시 문제점을 발견하고 제거하기 위해 개발 Best Practice를 수립하고 따르도록 한다.
순번 |
항목 |
1 |
최신 버전의 빌드 도구 사용 |
2 |
금지된 API 사용 회피 |
3 |
'Execute' 허가를 통한 SQL 안전하게 사용 |
4 |
저장된 프로시저에서의 SQL 사용 |
5 |
안전하게 소프트웨어를 사용하기 위해 필요한 사용자 정보 식별 |
6 |
사용자 중심의 보안 문서 계획 |
7 |
보안 형상 관리에 관한 정보 생성 |
8 |
자동화된 금지 API 변환 실행 |
9 |
프로젝트 팀 전체와 모든 모범 사례와 정책에 대해 정의, 문서화, 토론 등 |
5. 검증
코드가 이전 단계에서 설정한 보안과 프라이버시를 지키는지, 보안 및 프라이버시 테스팅과 보안 푸쉬(Security Push), 문서 리뷰를 통해 확인한다.
보안 푸쉬는 팀 전체에 걸쳐 위협 모델 갱신, 코드 리뷰, 테스팅에 초점을 맞춘 작업이다.
순번 |
항목 |
1 |
커널-모드 드라이버를 위한 테스팅 완료 |
2 |
COM 객체 테스팅 수행 |
3 |
인증된 사이트 크로스 도메인 스크립팅을 위한 테스팅 |
4 |
애플리케이션 검증 테스트 수행 |
5 |
파일 Fuzzing 수행 |
6 |
위협 모델 검토 및 수정 등 |
7 |
보안 테스팅 계획 완료 |
8 |
침투 테스팅 수행 |
9 |
시큐어 코드 검토 |
10 | 보안 푸쉬를 시작하기 전 모든 코드에 대한 우선 순위 결정 |
11 | 보안 문서 계획서 검토 등 |
'개발지식 > 그 외' 카테고리의 다른 글
아키텍쳐 (Architecture) (0) | 2016.11.07 |
---|---|
Web :: Web Server vs Web Application Server(WAS) - 아파치 톰캣과 톰캣의 차이 (0) | 2016.09.28 |