결재	정보보호 최고책임자	정보보호 관리자
	/	/

개발보안 지침

문서번호 :

원광대학교

개정이력

개정번호	개 정 내 용 요 약	작성자	시행일자
1.0	최초 제정	유영준	2018. 03. 02.

제 1 장 총칙

제1조 (목적)

본 지침은 원광대학교(이하 “본교”라 한다)의 애플리케이션의 개발 및 운영 시 검토되어야 할 정보보호 통제를 정의하고 정보의 손실, 변조, 오용을 예방하여 정보자산을 보안성, 안전성, 신뢰성을 확보함을 목적으로 한다.

제2조 (범위)

본 지침은 본교 내에서 개발되는 모든 애플리케이션의 개발운영 부서 및 직원을 적용 범위 및 대상으로 한다.

제3조 (용어의 정의)

본 지침은 다음 용어 정의를 따른다.

1. 응용프로그램 : 특정업무를 해결하기 위한 목적을 가지고 만들어진 프로그램을 말한다.

2. 형상관리도구 : 애플리케이션 개발 및 유지보수 전 과정에 대한 체계적인 관리(변경 이력 및 버전 관리 등)를 수행할 수 있는 소프트웨어를 말한다.

제 2 장 책임 및 권한

제4조 (개발관리자)

개발관리자는 응용프로그램의 개발업무를 총괄 관리하고 개발보안에 필요한 관리업무를 수행한다.

개발관리자는 개발담당자, 운영담당자, 이관담당자를 지정할 수 있다.

제5조 (개발담당자)

본 지침에서 제시하는 대로 응용프로그램 개발 시 보안 통제를 준수해야 한다.

개발에 사용될 프로그램 및 언어, 데이터 등은 정보보호실무협의회에서 승인 된 도구를 사용하여야 한다.

응용프로그램 개발 시의 주요 보안 통제사항에 대해 관리하고 필요시 정보보호최고책임자에게 보고한다.

프로그램 변경 요청에 대해 타당성 검토를 하고 필요시 정보보호실무협의회에서 프로그램의 수정을 승인 받아야 한다.

제6조 (운영담당자)

본 지침에서 제시하는 대로 응용프로그램 운영 시 보안 통제를 준수해야 한다.

응용프로그램의 원활한 운영을 위한 절차를 수립하고 문제 발생 시 이에 대한 대응이 가능하도록 한다.

응용프로그램 운영 시 필요한 보안사항에 대해 개발담당자에게 추가를 요청할 수 있다.

제7조 (이관담당자)

개발된 응용프로그램에 대한 이관 담당자로서 보안통제를 준수하여야 한다.

운영환경을 고려하여 이관절차를 수립하고 이관 시 발생할 수 있는 문제를 관리한다.

개발담당자 요청에 따라 신규 및 수정된 응용프로그램의 이관 설치의 업무를 수행한다.

제 3 장 응용프로그램 개발 보안관리 절차

제1절 응용프로그램의 환경 구성

제8조 (환경의 분리)

개발 환경은 내부 업무망과는 분리된 독립된 환경으로 구성하여야 한다.

개발 및 테스트 시스템과 운영시스템은 분리하는 것을 원칙으로 한다. 단, 개발 환경이 운영환경에 영향을 주지 않도록 보안 대책이 강구되었을 경우에는 예외로 한다.

컴파일러, 편집기 등과 같이 개발에 필요한 도구는 운영환경에 설치하지 않도록 한다.

제2절 응용프로그램의 개발

제9조 (보안 요구사항 분석)

응용프로그램의 신규 개발 또는 변경을 위한 업무 요구사항에 보안 통제 요구사항도 명시하여야 한다.

응용프로그램에서 요구되는 보안 요구사항과 최신 보안 이슈에 대하여 검토하여야 한다.

특별히 보안성을 요구하는 응용프로그램의 경우 사용자 인증방법(Two Factor 인증, OTP등), 암호화 방법 등과 같은 추가적인 보안 강화 기능을 요구 사항에 포함시킨다.

기존 시스템과의 연동성, 기존 시스템의 정보보호 현황 등을 고려하여 요구사항에 반영시킨다.

제10조 (보안 기능의 설계)

응용프로그램은 개발 시부터 다음과 같은 보안 기능을 고려하여 설계해야 한다.

관리자 및 특수권한은 최소한의 인원에게만 부여하고 권한 부여 시 승인절차를 따라야 한다.

사용자 최대 인증 실패 횟수를 응용프로그램에 따라 적정횟수로 정하여 잠금 기능을 수행하며, 잠금 해제 시에는 본인 확인 절차를 수행한다.

응용프로그램의 사용자 인증 수단 및 보안 속성을 서비스 중요도와 보안 요구 수준에 따라 차별화한다.

응용프로그램 상에 생성되는 사용자의 권한은 사용자별, 업무별로 적절하게 분리되어야 한다.

모든 입력 데이터에 대하여 유효성 점검이 수행되어야 한다.

사용자 화면상에 개인정보(주민등록번호), 패스워드와 같은 민감한 데이터가 평문으로 보이지 않도록 한다.

주요정보 및 개인정보에 대한 접근은 허가된 취급자만이 가능하도록 하며 고객 비밀번호와 같은 중요한 정보는 암호화하여 저장하여야 한다.

중요한 응용프로그램의 경우 관리자와 사용자의 중요한 활동에 대한 감사 로그를 생성하여 사고 발생 시 증거자료로 활용한다.

가. 사용자 및 관리자의 접속기록

나. 사용자 권한부여, 변경, 말소기록

다. 정보시스템 시작 및 중지

라. 주요업무 관련 행위에 대한 로그

응용프로그램 설계 시 보안로그를 보호하기 위해 접근통제 정책을 마련하여야 한다.

응용프로그램 사용자 계정에 다음 각 호의 보안 기능이 적용될 수 있도록 한다.

가. 패스워드 최소길이 통제

나. 패스워드 최소/최대 사용기간 지정

다. 이전 사용 패스워드의 재사용 제한 기능

라. 동일사용자 동시접속 제한

마. 사용자 인증 시 패스워드의 화면 표시 금지 기능

바. 사용자 패스워드의 암호화 저장

사. 추측 가능하거나 취약한 패스워드를 방지하는 기능

개발담당자는 응용프로그램 설계 또는 테스트 단계에서 정보보호관리자와 적용해야 하는 보안 기능에 대하여 협의하여야 한다.

제11조 (안전한 프로그래밍)

개발담당자는 응용프로그램 개발의 보안성을 고려하고, 각 개발언어의 보안상 알려진 취약점에 대한 안전한 코딩을 구현한다.

응용프로그램 개발 시 고려해야 할 사항은 다음과 같다.

취약한 함수의 사용은 제한되어야 한다.

프로그램 소스 내부에 보안에 위협을 줄 수 있는 악성 코드의 삽입을 금지해야 한다.

시스템 기능을 호출하는 함수의 사용에 주의해야 한다.

외부 프로그램 호출 시 절대 경로를 사용하도록 한다.

필요한 환경변수는 지정된 것만 허가해야 한다

실행 프로그램 사용 시 최소 모듈에 최소 시간동안 최소 권한만이 부여되도록 한다.

setuid, setgid 등은 가급적 사용을 지양한다.

응용프로그램 운영을 위해서는 nobody와 같은 제한된 권한의 사용자를 이용한다.

제한된 위치에 존재하는 설정파일을 이용하며 코드 내에 중요 정보를 포함하지 않는다.

개발에 필요한 보안 요구사항을 관련법률 (정보통신망법, 개인정보보호법)의 기준을 따르고 구현 시에는 한국인터넷진흥원 “소프트웨어 개발보안 가이드”를 참고한다.

제12조 (암호화 원칙)

개발 시 고유식별정보(주민등록번호, 운전면허번호, 여권번호, 외국인등록번호), 주요정보(계좌번호, 카드번호)를 저장 및 전송할 때는 암호화하여야 한다.

암호화 알고리즘 및 방법에 대해서는 “암호관리 지침”을 따른다.

제3절 응용프로그램의 테스트 및 설치

제13조 (응용프로그램의 테스트)

응용프로그램을 테스트할 때는 임의의 테스트 데이터를 생성하여 활용하거나 운영 데이터를 가공하여 사용하도록 하며 실제 운영 데이터의 사용은 금한다.

입력/출력데이터의 유효성 점검 기능에 대하여 테스트 수행 시 다음과 같은 내용이 포함되어야 한다.

한계값을 넘는 값의 입력

데이터 영역에 잘못된 문자의 입력

불완전한 데이터의 입력

데이터의 크기가 메모리 할당 범위를 벗어난 입력

출력 데이터의 타당성

출력 데이터의 정확성

테스트 시 개발담당자는 테스트 데이터를 보호하고 통제하여야 하며 테스트 완료 후 해당 데이터를 삭제하여야 한다.

제14조 (응용프로그램의 이관)

이관담당자는 개발관리자의 승인을 득한 응용프로그램을 운영환경에 적용한다.

이관담당자는 응용프로그램의 적용 이전에 기존 운영 환경 전체를 백업한다.

이관담당자는 응용프로그램을 적용한 후, 기존의 운영 환경에 미치는 영향을 분석하고, 이상이 발생할 경우 즉시 원위치로 복원한다.

응용프로그램을 운영 환경에 적용하는 것은 ‘제4절 응용프로그램의 변경관리’와 동일한 절차를 따른다.

제15조 (보안성 검토)

개발담당자는 응용프로그램을 운영 단계로 이관하기 전에 보안요구사항을 점검하여야 한다.

개발담당자는 응용프로그램에 존재하는 보안 취약점을 제거한 후 운영 환경으로 이관담당자에게 이관요청을 해야한다.

개발담당자는 취약점의 점검 수행을 위해 정보보호관리자에게 지원을 요청할 수 있다.

정보보호관리자는 필요 시 취약점 점검을 실시할 수 있고, 개발담당자는 적극적으로 협조하여야 한다.

제4절 응용프로그램의 변경 관리

제16조 (변경의 요청)

응용프로그램의 변경은 업무 담당 부서에서 운영담당자에게 요청할 수 있다.

기존의 시스템의 개선을 위해 변경할 사유가 발생하는 경우 [서식 1] 응용프로그램 변경신청서를 작성하여 해당 부서장의 승인을 득한 후 개발담당자에 프로그램 변경을 요청한다.

제17조 (변경의 수행)

개발담당자는 변경작업을 [서식 2] 응용프로그램 변경계획서 에 따라 수행한다.

변경을 위한 개발 시에는 ‘제2절 응용프로그램의 개발’ 부문을 준용하도록 한다.

변경을 위한 테스트 및 설치 시에는 ‘제3절 응용프로그램의 테스트 및 설치’ 부문을 준용하도록 한다.

제18조 (긴급 변경)

개발관리자의 부재 또는 일과시간 종료 후에 발생한 긴급한 상황 하에서 프로그램의 변경이 필요한 경우에는 정해진 일련의 승인절차를 생략하고 프로그램을 변경할 수 있다.

긴급한 경우의 프로그램 변경 시에는 변경일자, 변경사유, 변경담당자 등을 포함하는 작업내용을 기록, 관리한다.

긴급한 프로그램 변경의 경우는 사후에 반드시 개발관리자의 승인을 득하여야 한다.

제5절 응용프로그램의 접근 통제

제19조 (형상관리 접근 통제)

형상관리관리자를 지정하여  접근통제에 대한 책임과 권한을 관리한다.

운영 중인 시스템에는 소스프로그램을 저장하는 것을 금한다.

개발담당자를 포함한 모든 사용자가 프로그램 소스에 접근하는 것을 적절히 통제하고 접근 기록을 남긴다.

개발 중이거나 유지보수 중인 프로그램은 운영 중인 프로그램의 소스와는 분리하여 관리한다.

[부칙]

제1조 (시행일자)

본 지침은 2018년 03월 02일부터 시행한다.

[서식 1] 응용프로그램  변경신청서

응용프로그램 변경신청서

신청내역
신청자	소속						연락처
	성명	(인 또는 서명)
	신청일시
신청제목
신청시스템명					신청업무구분
응용프로그램명
변경사유
변경내용
변경 후 기대효과
접수내역
운영담당자	소속
	성명
	처리구분			개인정보 포함여부					긴급여부
	신청사항 검토내용

[서식 2] 응용프로그램 변경계획서

응용프로그램 변경계획서

운영담당자 : O O O
신청제목
예상소요시간
작업참여자
개발담당자			DB담당자			이관담당자
작업 후 점검사항
개발담당자 : O O O
작업내용
작업소요시간					작업완료일시
테스트데이터 신청내역	사용기간
	이관요청 테이블목록
DB담당자 : O O O
테스트데이터 이관내역	이관일시
	데이터 변조방법	성명 : 가운데 “*” 처리 예) 홍길동 -> 홍*동
	이관완료 테이블목록

[서식 3] 응용프로그램 테스트결과 보고서

응용프로그램 테스트결과 보고서

운영담당자 : O O O
신청제목
테스트 결과내역
테스트일자		테스트완료여부
신청자 : O O O
테스트 결과내역
테스트일자		테스트완료여부
이관담당자 : O O O
테스트 결과내역
테스트일자		테스트완료여부

【체크리스트】

분류	번호	항목구분	점검 항목	검토결과 (Y, N)
권한/계정 관리	AA-01	권한 차등 부여	업무별(역할별) 개인정보처리권한(조회/수정/삭제/다운로드/권한부여 등) 차등 부여 기능을 제공 하는가?
	AA-02	메뉴 차등 부여	부여된 권한(그룹)에 따라서 처리되는 개인정보나 메뉴가 다르도록 설계 하였는가? ex) 상담원A : 조회메뉴, 상담원B : 조회/수정 메뉴, 관리자A : 조회/수정/삭제, 관리자B : 조회/수정/삭제/다운로드
	AA-03	관리자 계정명 설정	관리자 계정 설정 시 "admin, administrator, root, master, manager, leader, 회사명 등"의 일반적인 계정명은 사용하지 않도록 하였는가?
	AA-04	Default 계정 사용금지	Default 계정(밴더 계정 등)은 변경하여 사용하거나, 변경 불가시, 삭제 또는 잠금(Lock)기능을 적용할 수 있는가?
	AA-05	테스트 계정 사용금지	운영환경으로 이관 후 개발자(테스트) 계정을 삭제하였는가 ?
	AA-06	계정 비활성화 기능	일정기간 미사용 계정을 자동으로 LOCK(비활성화)시키도록 하였는가?
	AA-07	계정정보 노출금지	소스코드 내 시스템접속을 위한 ID/PW(DB접속 계정 등)가 하드코딩 되어 있는가?
접속 통제	AA-08	사용자 인증 강화	개인정보취급자 및 관리자는 ID/PW 이외에 추가인증(공인인증, OTP, HP본인확인 등)을 적용 하였는가?
	AA-09	디바이스 인증	주요 개인정보취급자/관리자는 사전에 허가된(등록된) 단말기만 접속을 허용하도록 하였는가?
	AA-10	이중 로그인 제한	주요 개인정보취급자 및 관리자는 동시 이중 로그인을 제한 하도록 하였는가?
	AA-11	중요정보 변경 시 본인 확인	PW 등 중요 정보 변경 시 본인확인 절차(PW재입력 등)를 적용하도록 하였는가?
	AA-12	단말기에 인증 정보 자동저장 금지	인증정보가 포함된 토큰이 접근가능한 위치(디바이스 등)에 저장되지 않도록 하였는가?
	AA-13	자동 로그아웃(Session Timeout)	Login 후 일정시간 사용하지 않을 경우 자동 로그아웃 되도록 설계하였는가?
	AA-14	로그인 실패정보 표시 제한	Login 실패시, 원인을 사용자에게 피드백하지 않는가?
	AA-15	이전 접속정보 표시	관리자 계정으로 로그인시에는 이전 접속 일시(시간) 등 접속정보를 표시하도록 설계하여, 관리자가 계정 유출에 대해 인지할 수 있도록 하였는가?
패스워드 관리	AA-16	패스워드 음영처리	입력된 패스워드는 화면에서 읽을 수 없도록 음영(별표)처리 하였는가?
	AA-17	패스워드 자동저장 기능제거	자동로그인 되지 않도록 ID/PW 저장 기능이 포함되지 않았는가?
	AA-18	초기 패스워드 강제 변경	부여된 패스워드는 사용자가 최초 접속 시에 강제적으로 변경하도록 되어 있는가?
	AA-19	주기적 패스워드 변경 설정	패스워드 변경 주기 설정이 적용되도록 하였는가?
	AA-20	주기적 패스워드 변경 자동 공지	로그인 시 패스워드 변경 주기에 맞추어 변경 알림 기능(공지)을 제공 하는가?
	AA-21	패스워드 복잡도 설정	패스워드는 영문자와 숫자를 조합하여 10자리 또는 영문자, 숫자, 특수문자를 조합하여 최소 8자리 이상으로 구성되도록 PW복잡도 적용이 가능한가?
	AA-22	패스워드 재사용 금지	최근 직전 PW 2개이상은 재 사용하지 못하도록 설정할 수 있는가?
	AA-23	패스워드 입력횟수 제한	일정 횟수 이상 패스워드 오류 시 일시적 중지/차단할 수 있는가?
	AA-24	패스워드 분실시 초기화 및 재설정 기능	패스워드 분실 시 임시PW발행 및 설정 후 반드 시 재 설정하도록 하는가?
암호 통제	AA-25	통신구간 암호화 전송	개인정보 등 주요정보 전송 시 통신구간 암호화 적용하도록 설계 하였는가?
	AA-26	주요정보 저장시 암호화	개인정보 등 주요정보 저장 시 안전한 암호화 방식을 적용하였는가?
	AA-27	패스워드 암호화	패스워드 저장 시 안전한 일방향암호화 적용하도록 하였는가?
입출력 통제	AA-28	개인정보 화면출력 통제	개인정보 검색 시 Like 검색을 제한하며, 다수의 개인정보를 화면에 출력 시 마스킹 조치를 취하였는가?
	AA-29	개인정보 수집방지 기능	화면상(웹페이지상) 보이는 개인정보 수집 방지 (텍스트 및 그림을 마우스로 드래그하여 복사(Ctrl+C) 및 붙여넣기(Ctrl+V) 등 복사방지 기능, 오른쪽 마우스버튼 사용을 제한하고 있는가?
	AA-30	개인정보 다운로드 통제	인쇄(프린트) 및 저장 기능을 통한 파일 다운로드가 불가능하도록 하였는가?
로그 관리	AA-31	접속기록(Log) 보관	사용자의 응용시스템 접속기록 및 접속행위를 로그파일에 기록하도록 하는가?
	AA-32	접속기록 항목의 적합성	권한부여 및 개인정보처리행위를 추적할 수 있도록 접속식별자/접속시간/접속위치/접속행위(조회/수정/삭제/다운로드/권한부여 등)가 로그에 포함되도록 하였는가?
	AA-33	접속기록 위변조 방지	로그가 위변조의 위험으로부터 안전하게 보관될 수 있도록 접근통제 및 저장장치 관리를 통제하도록 하였는가?
	AA-34	개인정보 유효기간제 적용 기능	1년이상 서비스 이용 기록이 없는 고객의 개인정보를 삭제 또는 별도 분리 저장 시 사전 고지하고 자동 분리되도록 하였는가?
	AA-35	접근권한부여 기록 보관	관리자 계정 활동 내역을 로깅하여 접근권한을 부여하거나(계정등록), 변경, 삭제한 기록을 남기도록 설계하고 있는가? 계정(ID) 및 권한(조회, 다운로드, 출력 등)의 생성 및 변경 이력을 남기도록 하는가?
기타	AA-36	소스보안	소스에 주요정보(개인정보, 계정정보 등)을 포함하지 않도록 설계하고 있는가?

[서식 4] 응용프로그램 변경결과 보고서

응용프로그램 변경결과 보고서

운영담당자 : O O O
신청제목
변경결과 보고내용
완료일시		완료여부
이관담당자 : O O O
작업내용
백업일자		백업여부
이관일자		이관여부