# 소프트웨어안전 확보를 위한 지침

제1장  총  칙


제1조(목적) 본 지침은 「소프트웨어 진흥법」제30조제2항에 따라 소프트웨어안전을 확보하기 위하여 소프트웨어 개발, 운영 등의 활동에 있어 필요한 사항을 정함을 목적으로 한다.


제2조(정의) 본 지침에서 사용하는 용어의 뜻은 다음과 같다.
  1. "안전관리 대상 소프트웨어”란 소프트웨어 오작동 및 안전기능 미비 등으로 생명, 신체 또는 재산에 위험을 초래하거나 영향을 미칠 수 있는 소프트웨어로서, 해당 소프트웨어를 개발하거나 운영하는 공공기관이 안전관리 대상으로 지정한 소프트웨어를 말한다.
  2. "공공기관”이란 다음 각 목의 기관을 말한다.  가. 중앙행정기관 및 그 소속기관 나. 지방자치단체 다. 「공공기관의 운영에 관한 법률」 제4조에 따른 공공기관 라. 「지방공기업법」에 따른 지방공기업
  3. "개발”이란 사용자 요구사항을 소프트웨어로 제작하기 위한 소프트웨어 위험원 분석, 안전 요구사항 수립, 소프트웨어 설계·구현·시험 등의 개발 전반에 관한 활동을 말한다.
  4. "운영”이란 소프트웨어 설치, 운영, 개선 및 폐기 등의 운영 전반에 관한 활동을 말한다.
  5. "안전사고”란 소프트웨어나 시스템 장애로 생명, 신체 또는 재산에 피해가 발생하는 사고를 말한다. 
  6. "위험원”이란 생명, 신체 또는 재산에 피해를 발생시키거나 시스템 손실을 초래할 수 있는 소프트웨어의 원인을 말한다. 
  7. "안전 요구사항”이란 소프트웨어 안전사고를 예방하고 소프트웨어의 안전을 확보하는 데 필요한 안전기능 및 안전 활동에 관한 요구사항을 말한다. 
  8. "장애”란 소프트웨어의 오류 및 성능저하, 하드웨어 고장 등으로 사용자가 소프트웨어를 사용할 수 없거나 활용이 어려운 상태를 말한다.
  9. "변경”이란 소프트웨어나 시스템의 기존 구성요소를 추가, 교체, 증설, 이동, 제거하는 모든 작업을 말한다.
  10. "연계 시스템”이란 소프트웨어가 운영되기 위해 연계되어 동작하여야 하는 다른 시스템을 말한다.


제3조(적용 범위) ① 본 지침은 공공기관이 안전 확보가 필요한 소프트웨어를 개발하거나 운영하는 경우에 적용할 수 있다.
  ② 소프트웨어의 개발 또는 운영과 관련하여 특별한 관련 지침이나 규정이 별도로 존재하는 경우에는 해당 지침을 따를 수 있다.


제4조(업무 및 담당자) ① 공공기관은 안전관리 대상 소프트웨어의 안전 확보를 위해 다음 각 호의 업무를 수행하여야 한다. 
  1. 안전관리 대상 소프트웨어 지정
  2. 소프트웨어 개발 및 운영 단계에서의 안전관리
  3. 소프트웨어 안전관리 이행 점검
  ② 공공기관은 제1항의 업무를 효율적으로 수행하기 위해 소프트웨어 안전 총괄 담당자를 지정할 수 있다.


제5조(안전관리 대상 소프트웨어 지정) ① 공공기관은 개발 예정이거나 운영 하고 있는 소프트웨어 중 다음 각 호의 사항을 고려하여 안전관리 대상 소프트웨어를 지정하여야 한다.
  1. 소프트웨어가 수행하거나 지원하는 업무의 국가 사회적 중요성
  2. 타 소프트웨어 또는 시스템과의 상호연계성
  3. 소프트웨어 안전사고 발생 시 예상 피해규모 및 범위 
  4. 소프트웨어 안전사고나 장애의 발생가능성 또는 그 복구의 용이성
  ② 공공기관은 제1항에 따라 안전관리 대상 소프트웨어를 지정할 경우 과학기술정보통신부에서 별도로 안내하는 기준을 참고할 수 있다.
  ③ 공공기관은 제1항에 따른 안전관리 대상 소프트웨어 지정 사유가 변경될 시 그 지정을 취소할 수 있다. 
  ④ 안전관리 대상 소프트웨어의 지정 및 취소 등을 위해 보안상의 문제가 없는 경우에 한해, 외부 전문가를 포함하여 회의를 개최할 수 있다.


제2장  소프트웨어 개발 단계에서의 안전 확보


제6조(안전 요구사항의 정의) ① 공공기관은 안전관리 대상 소프트웨어의 요구사항 정의 시 다음 각 호를 포함하여야 한다.
  1. 안전을 확보하기 위해 필요한 소프트웨어 안전기능
  2. 계획, 설계, 구현, 검증 등 개발 단계별 안전 활동
  ② 공공기관은 안전관리 대상 소프트웨어 개발 시 적용하여야 할 안전 표준이나 가이드라인이 있는지 확인하고 필요 시 이를 요구사항에 반영하여야 한다.


제7조(소프트웨어 위험원 분석) ① 공공기관은 제6조의 소프트웨어 안전 요구사항을 정의하기 위해 안전관리 대상 소프트웨어의 위험원을 분석하여야 한다.
  ② 공공기관은 제1항의 위험원 분석 시 다음 각 호를 고려하여야 한다. 
  1. 업무와 관련된 소프트웨어의 운영 목적 및 소프트웨어의 필수 기능
  2. 소프트웨어의 운영환경
  3. 소프트웨어 운영 담당자 및 운영과 관련된 업무의 수행 절차
  4. 소프트웨어 장애 사례 및 운영 이력
  5. 그 밖에 소프트웨어 운영에 영향을 미치는 요인
  ③ 공공기관은 위험원 분석을 위해 필요 시 외부 전문가나 별도의 사업을 발주하여 활용할 수 있다. 
  ④ 공공기관은 안전관리 대상 소프트웨어를 개발하는 자(이하 "소프트웨어 개발자”라 한다) 선정 후 소프트웨어 개발자에게 소프트웨어 안전 요구사항을 구체화하기 위한 상세 위험원 분석을 요청할 수 있으며, 소프트웨어 개발자와 협의하여 소프트웨어 안전 요구사항 등을 조정할 수 있다.


제8조(소프트웨어 설계 및 구현) ① 공공기관은 소프트웨어 개발자에게 제6조의 소프트웨어 안전 요구사항(제7조에 따라 조정된 사항을 포함한다)이 안전관리 대상 소프트웨어의 설계 및 구현 시 반영되도록 요구할 수 있다.
  ② 공공기관은 소프트웨어 개발자에게 안전관리 대상 소프트웨어 설계 시 기술적 안전 조치(예: 오류 검출, 상황 식별, 다중화, 복구 등)를 마련하도록 요구할 수 있으며 적용된 기술적 안전 조치에 대한 자료 및 설명을 요청할 수 있다. 
  ③ 공공기관은 안전관리 대상 소프트웨어의 구현 언어, 구현 지침(예: 코딩 규칙) 준수를 요구한 경우, 소프트웨어 개발자에게 관련 자료를 요청할 수 있다. 
  ④ 공공기관은 소프트웨어 개발자에게 소프트웨어 안전 요구사항이 적절히 구현되었음을 확인하기 위한 시험을 요청할 수 있다.


제9조(소프트웨어 검증) ① 공공기관은 안전관리 대상 소프트웨어가 안전 요구사항에 따라 적절하게 개발되었음을 확인하여야 한다. 
  ② 공공기관은 소프트웨어 개발자에게 개발 단계별 활동을 확인하기 위한 검증 자료 및 상세한 소프트웨어 시험 결과를 요청할 수 있으며, 필요 시 추가적인 시험 수행을 요청할 수 있다.


제3장  소프트웨어 운영 단계에서의 안전 확보


제10조(소프트웨어 운영관리 계획) ① 공공기관은 안전관리 대상 소프트웨어의 운영을 위해 다음 각 호의 사항을 포함하는 운영관리 계획을 주기적으로 수립하여야 한다.
  1. 운영조직의 역할과 책임
  2. 소프트웨어 안전점검 
  3. 소프트웨어 변경관리·장애관리에 관한 기준과 절차
  4. 운영담당자 등에 대한 교육훈련   
  5. 그 밖에 소프트웨어의 안전한 운영에 필요한 사항
  ② 공공기관은 제1항에 따른 운영관리 계획의 이행 여부를 주기적으로 확인하여야 한다.


제11조(운영위험분석) ① 공공기관은 제10조의 운영관리 계획 수립 시 운영 중인 시스템에 장애나 안전사고 등의 문제를 유발하는 요인은 없는지, 현재의 운영관리는 적정한지 등을 확인하여야 한다. 
  ② 공공기관은 제1항을 위해 다음 각 호를 검토하여야 한다. 
  1. 소프트웨어 안전점검 결과
  2. 소프트웨어 장애 이력 
  3. 소프트웨어 운영환경이나 연계 시스템의 변경 여부 
  4. 소프트웨어 운영절차의 적절성
  5. 그 밖에 소프트웨어 운영상의 안전을 저해할 수 있는 위험원 등


제12조(소프트웨어 안전점검) ① 공공기관은 제10조 제1항 제2호에 따른 안전점검 계획 수립 시 다음 각 호를 고려할 수 있다.
  1. 점검주기, 점검항목, 점검방법, 담당자 등 점검 세부사항
  2. 점검 사후조치 
  ② 공공기관은 안전관리 대상 소프트웨어에 대한 안전점검을 실시하고 점검결과를 검토하여 미비한 사항을 확인한 경우, 이를 개선하기 위한 조치를 하여야 한다.


제13조(소프트웨어 변경관리) ① 공공기관은 운영 중인 안전관리 대상 소프트웨어 변경 또는 운영환경 변경 시에는 변경사항이 안전에 미치는 영향을 검토하여야 한다.
  ② 제1항에 따른 소프트웨어 운영환경의 변경 범위는 다음 각 호와 같다. 
  1. 운영체제 변경 및 패치
  2. 하드웨어 변경 및 추가
  3. 연계 시스템의 변경
  4. 운영에 영향을 미치는 소프트웨어 설정 및 데이터의 변경
  5. 운영조직·담당자, 운영방식의 변경 
  6. 그 밖에 운영관리에 영향을 미치는 변경
  ③ 공공기관은 제1항의 분석 결과에 따라 필요한 경우 제6조 내지 제9조의 활동을 수행하여야 한다. 
  ④ 공공기관은 안전관리 대상 소프트웨어 또는 그 운영환경을 변경하고자 하는 경우 반드시 소프트웨어 책임자의 승인을 얻어 추진한다.


제14조(장애관리) ① 공공기관은 안전관리 대상 소프트웨어의 장애를 발견한 경우 제10조 제1항 제3호의 장애관리 기준 및 절차에 따라 조치하여 장애로 인한 피해가 확산되지 않도록 노력하여야 한다. 
  ② 공공기관은 안전관리 대상 소프트웨어에 장애가 발생했거나 장애 발생 가능성을 인지한 경우, 원인 분석을 통해 장애 발생 또는 재발을 방지하도록 노력하여야 한다.
  ③ 공공기관은 소프트웨어 장애방지를 위해 모의훈련, 운영 및 장애처리 이력의 관리 등을 수행할 수 있다. 
  ④ 공공기관은 소프트웨어 장애복구를 위해 백업, 이중화 등의 대책을 마련하여야 한다. 
  ⑤ 안전관리 대상 소프트웨어의 장애로 인해 안전사고가 발생한 경우에는 사고 수습 및 복구가 완료된 후 다음 각 호의 사항을 포함한 원인분석 결과서를 작성하여 관리하여야 한다.
  1. 소프트웨어 안전사고의 조사경위 및 내용
  2. 소프트웨어 안전사고의 원인분석
  3. 소프트웨어 안전사고에 대한 대책 등


제4장  그 외 소프트웨어 안전 확보를 위한 사항


제15조(정보공유) ① 공공기관은 안전관리 대상 소프트웨어의 중대한 장애나 안전사고가 발생한 경우 해당 공공기관 내의 유사 시스템 담당자에게 장애 및 안전사고 정보를 공유하여야 한다. 
  ② 공공기관은 안전관리 대상 소프트웨어의 안전사고 예방을 위하여 유사 시스템을 운영하는 타 공공기관과 다음 각 호의 정보를 공유할 수 있다. 
  1. 소프트웨어 안전사고의 개요
  2. 소프트웨어 안전사고를 유발한 소프트웨어 위험원과 발생경로
  3. 소프트웨어 안전사고로 인한 피해 양상
  4. 위험원 제거를 위해 사용된 기술적 방법 및 도구
  5. 재발 방지를 위한 기술적·관리적 대책 등
  ③ 공공기관은 정보를 공유하는 경우 각급 기관의 보안관리 규정에 어긋나지 않아야 한다.


제16조(기반확보) ① 공공기관은 안전관리 대상 소프트웨어의 안전을 위해 필요한 인력과 예산을 확보하도록 노력하여야 한다. 
  ② 공공기관은 안전관리 대상 소프트웨어의 개발 및 운영을 위해 과학기술정보통신부의 소프트웨어 안전 사업을 활용할 수 있다.


제17조(기타사항) ① 공공기관은 기관의 업무 특성이나 운영 환경 등을 고려하여 본 지침 세부사항의 적용을 가감할 수 있다.
  ② 본 지침에 규정되지 아니한 사항에 대해서는 국가표준 또는 국제표준을 참조하거나 별도로 지침을 정하여 적용할 수 있다.


제18조(재검토기한) 과학기술정보통신부장관은 「훈령·예규 등의 발령 및 관리에 관한 규정」에 따라 이 고시에 대하여 2021년 1월 1일 기준으로 매 3년이 되는 시점(매3년째의 12월 31일까지를 말한다)마다 그 타당성을 검토하여 개선 등의 조치를 하여야 한다.