A.8.29
개발 및 인수 단계 보안 시험
기술적 통제확인사항 6증적 6사례 6
통제 목적
개발하거나 도입하는 시스템/애플리케이션이 운영 환경에 반영되기 전에 정의된 보안 요구사항을 실제로 충족하는지 시험으로 확인하기 위한 통제입니다. 보안 시험은 개발 생명주기 전반에 걸쳐 계획적으로 수행되어야 하며, 인수(운영 이관/구매 도입) 단계에서는 사전에 정한 합격 기준에 따라 결과를 검증하고 승인해야 합니다. 이렇게 하여 취약점이 운영 환경에 유입되기 전에 발견/제거되고 시험 결과가 릴리스 승인의 근거가 되도록 합니다.
주요 확인사항
- 개발/도입 대상에 대해 보안 시험의 범위, 방법, 시점, 책임자를 사전에 계획하고 문서화하는가?
- 시험이 A.8.26에서 정의한 보안 요구사항을 기준으로 설계되고, 요구사항과 시험 항목 간 추적성이 확보되는가?
- 정적/동적 분석, 취약점 점검, 침투 시험 등 시스템 위험 수준에 맞는 보안 시험 기법이 적용되는가?
- 인수(운영 이관/구매 제품 도입) 단계에서 합격 기준을 사전에 정하고, 그 기준에 따라 시험 결과를 검증하여 승인하는가?
- 발견된 취약점/결함이 위험도에 따라 조치/재시험되고, 잔여 위험이 릴리스 승인 시 반영되는가?
- 보안 시험 데이터의 민감도와 사용 근거를 확인하고, 운영 데이터 예외를 승인/보호하며 시험 기록을 보존하는가?
이행 지침
- 개발 생명주기(A.8.25)와 연계하여 보안 시험 계획을 수립하고, 시스템의 위험 등급/노출 환경에 따라 시험 범위와 깊이(코드 검토, 취약점 점검, 침투 시험 등)를 차등 적용합니다.
- A.8.26의 보안 요구사항 및 A.8.27의 아키텍처/엔지니어링 원칙을 시험 케이스로 구체화하고, 요구사항 ID와 시험 항목을 연결하여 누락 없이 검증되도록 추적성을 확보합니다.
- 개발 단계에서는 정적 분석(SAST), 소프트웨어 구성 분석(SCA/의존성 취약점 점검), 시크릿 스캔 등을 CI 파이프라인에 통합해 조기에 결함을 탐지하고, 실행 환경에 대한 동적 분석(DAST)/퍼징을 병행합니다.
- 인수 단계에서는 합격/불합격 기준(허용 가능한 잔여 위험, 심각도별 조치 기준)을 사전에 정의하고, 인수 시험(보안 구성 점검, 침투 시험 결과 확인)을 통과한 경우에만 운영 이관을 승인합니다.
- 구매/외부 도입(SaaS 포함) 제품은 공급자가 제출한 보안 시험/인증 결과를 검토하고, 필요 시 독립적인 취약점 점검을 수행하여 도입 요건 충족 여부를 확인합니다. 연계 통제는 A.5.20과 A.5.21이며, SaaS는 A.5.23, 맞춤형 외주 개발 산출물은 A.8.30입니다.
- 합성/가공 데이터를 우선 사용하고 재식별과 원본 노출 위험을 검증합니다(A.8.11, A.8.33). 실제 데이터가 꼭 필요한 시험에는 적법한 근거, 책임자 승인, 최소 범위와 기간, 접근 제한을 적용하고, 취약점 조치/재시험 및 잔여 위험 승인 기록을 보존합니다.
증적자료
- 보안 시험 계획서(범위/방법/시점/책임자) 및 요구사항과 시험 항목의 추적성 매트릭스
- 정적/동적 분석, 취약점 점검, 침투 시험 결과 보고서 및 CI 파이프라인 보안 검사 로그
- 인수 시험 합격 기준 및 인수/운영 이관 승인 기록
- 발견 취약점 조치 내역, 재시험 결과, 잔여 위험 수용 승인 문서
- 구매/도입 제품에 대한 공급자 보안 시험/인증 결과 검토 및 도입 승인 문서
- 시험 데이터 통제(가명/합성 데이터 사용) 및 시험 기록 보존 내역
부적합 사례
- 보안 시험 계획 없이 기능 시험만 수행하고 운영에 이관한 경우
- 보안 요구사항과 연계된 시험 항목이 없어 요구사항이 검증되지 않은 채 릴리스된 경우
- 시험에서 발견된 고위험 결함이 승인 기준에 맞게 조치/재시험되지 않았고, 권한 있는 예외 승인과 필요한 보완통제도 없이 운영에 반영된 경우
- 인수(운영 이관) 단계의 합격 기준이 사전에 정의되지 않아 승인 판단이 자의적으로 이루어진 경우
- 구매/외부 도입 제품의 보안 시험 결과를 검토하지 않고 도입한 경우
- 보안 시험에 실제 운영/개인정보 데이터를 통제 없이 사용한 경우