질문 정리

Secure SDLC이란 무엇일까?

five2week 2024. 7. 3. 21:41

Secure SDLC

Secure SDLC는 보안상 안전한 소프트웨어를 개발하기 위해 SDLC에 보안을 위한 프로세스를 추가한 것을 말합니다. SDLC는 소프트웨어 개발 생명주기를 줄인 말로, 소프트웨어를 개발하기 위한 모든 과정(요구사항 분석, 설계, 구현, 테스트, 유지보수 등)을 단계별로 나눈 것입니다.

 

Secure SDLC의 대표적인 방법론

  • CLASP(Comprehensive, Lightweight Application Security Process)
    • CLASP는 Comprehensive, Lightweight Application Security Process의 약자로, 소프트웨어 개발 초기 단계에서 보안을 강화하기 위해 개발된 방법론입니다. 개발 초기에 보안을 고려하는 것을 중요시하며, 다양한 보안 활동을 소프트웨어 개발 생명주기에 통합하여 적용합니다.
  • SDL(Security Development Lifecycle)
    • SDL은 마이크로소프트 사에서 개발한 안전한 소프트웨어 개발을 위한 방법론입니다. SDL은 소프트웨어의 보안 취약점을 줄이고, 신뢰성 있는 소프트웨어를 개발하기 위해 각 단계에서 보안을 고려하도록 설계되었습니다.
  • Seven Touchpoints
    • Seven Touchpoints는 소프트웨어 보안 모범 사례를 SDLC에 통합하여 보안 측면에서 개발을 강화하는 방법론입니다. 개발 단계에서 일곱 가지 핵심 보안 활동을 포함하여 보안을 체계적으로 고려하도록 지원합니다.

 

SDLC 단계별로 할 수 있는 보안 활동

  1. 요구사항 분석 단계
    • 보안 요구사항 식별: 소프트웨어가 충분히 보호될 수 있도록 필요한 보안 요구사항을 정의하고 문서화합니다.
    • 위협 모델링: 시스템이나 애플리케이션에 영향을 미칠 수 있는 보안 위협을 식별하고 분석합니다.
  2. 설계 단계
    • 보안 설계서 작성: 요구사항 분석 단계에서 식별된 보안 요구사항들을 기반으로 소프트웨어 설계서에 보안 기능을 통합합니다.
    • 접근 제어 및 권한 관리 설계: 시스템 접근 권한을 관리하고 데이터에 대한 접근을 제어하는 설계를 수립합니다.
  3. 구현 단계
    • 보안 코딩 가이드 준수: 표준 코딩 정의서와 소프트웨어 개발 보안 가이드라인을 준수하여 보안 취약점을 최소화하고 안전한 코드를 작성합니다.
    • 취약점 분석 및 해결: 보안 테스트 결과에 따라 발견된 취약점을 분석하고 적절한 조치를 취하여 보완합니다.
  4. 테스트 단계
    • 보안 테스트 수행: 설계 단계에서 작성한 보안 설계서를 기반으로 보안 테스트를 수행하여 시스템이 예상대로 작동하고 보안 사항이 충분히 반영되었는지를 검증합니다.
    • 취약점 스캐닝 및 페너트레이션 테스트: 시스템에 존재하는 취약점을 발견하고 평가하여 보완하기 위한 추가적인 보안 테스트를 수행합니다.
  5. 유지보수 단계
    • 보안 패치 관리: 소프트웨어가 운영되는 동안 발생할 수 있는 보안 취약점을 해결하기 위한 패치를 관리하고 적용합니다.
    • 사고 대응 및 복구: 보안 사고가 발생한 경우 이를 신속하게 대응하고 시스템을 복구하는 방안을 마련합니다.

 

소프트웨어 개발 보안 요소

소프트웨어 개발에 있어 충족시켜야 할 요소들을 의미하며, 기밀성, 무결성, 가용성을 보안의 3대 요소라고 합니다.

  • 기밀성 (Confidentiality)
    • 정의: 기밀성은 시스템 내의 정보와 자원이 오직 인가된 사용자나 시스템에게만 접근이 허용되어야 함을 의미합니다.
    • 목표: 기밀성을 유지함으로써, 민감한 데이터가 무단으로 접근되거나 유출되는 것을 방지합니다. 데이터가 전송되는 동안에도 데이터가 읽히지 않도록 보호하는 것이 포함됩니다.
  • 무결성 (Integrity)
    • 정의: 무결성은 시스템 내의 정보가 인가된 사용자만 수정할 수 있어야 함을 의미합니다.
    • 목표: 무결성을 유지함으로써 데이터가 무단으로 변경되거나 변조되는 것을 방지합니다. 오직 인가된 사용자나 프로세스만이 데이터를 수정할 수 있어야 합니다.
  • 가용성 (Availability)
    • 정의: 가용성은 인가받은 사용자가 필요할 때 시스템 내의 정보와 자원에 접근할 수 있어야 함을 의미합니다.
    • 목표: 가용성을 보장함으로써 시스템의 서비스나 기능이 계속해서 사용 가능하고 접근 가능하도록 합니다. 이는 서비스 거부 공격(DoS)과 같은 공격으로부터 시스템을 보호하는 데 중요합니다.
  • 인증 (Authentication)
    • 정의: 인증은 시스템 내의 정보와 자원을 사용하려는 사용자가 실제로 합법적인 사용자인지를 확인하는 과정을 의미합니다.
    • 목표: 인증을 통해 사용자의 신원을 확인하고, 사용자에게 적절한 접근 권한을 부여하여 불법적인 접근을 방지합니다. 비밀번호, 바이오메트릭스, 토큰 등 다양한 방법을 통해 인증을 수행할 수 있습니다.
  • 부인 방지 (Non-Repudiation)
    • 정의: 부인 방지는 데이터를 송수신한 사람이 그 작업을 부인할 수 없도록 증거를 제공하는 것을 의미합니다.
    • 목표: 부인 방지를 통해 데이터 전송이나 트랜잭션이 발생할 때 발신자와 수신자가 그 과정을 부인하지 못하도록 증거를 남깁니다. 이는 법적 분쟁이나 규제 준수를 위해 중요합니다.

 

시큐어 코딩(Secure Coding)

구현 단계에서 발생할 수 있는 보안 취약점들을 최소화하기 위해서 보안 요소들을 고려하며 코딩하는 것을 의미하며, 보안 정책을 바탕으로 시큐어 코딩 가이드를 작성하고, 개발 참여자에게는 시큐어 코딩 교육을 실시해야합니다.