Files
2nd/10_Wiki/Topics/Security & Quality Engineering.md
T

4.3 KiB

Security & Quality Engineering (보안 및 품질 공학)

📌 Brief Summary

보안 및 품질 공학은 소프트웨어의 신뢰성을 확보하기 위해 개발 전 과정에 걸쳐 자동화된 검증 체계와 거버넌스를 구축하는 학문적/실무적 영역입니다 [1]. 이는 코드 작성 시점부터 배포 이후까지 SAST(정적 분석), DAST(동적 분석), 의존성 스캐닝 등을 통합하여 보안 취약점과 저품질 코드의 유입을 원천 차단하는 **'보안의 좌측 이동(Shift-Left)'**과 '품질 게이트(Quality Gate)' 전략을 핵심으로 합니다 [3, 4].

📖 Core Content

1. 자동화된 보안 테스트 (Security Testing)

  • SAST (Static Application Security Testing): 소스 코드를 실행하지 않고 정적으로 분석하여 OWASP Top 10 취약점, 코드 스멜, 논리적 결함을 식별합니다 [1, 11].
  • DAST (Dynamic Application Security Testing): 실행 중인 애플리케이션에 실제 페이로드를 주입하여 런타임 환경에서의 취약점을 탐지합니다. SAST가 찾지 못하는 환경 설정 오류나 인증 우회 등을 보완합니다 [9].
  • 의존성 스캐닝 (Dependency Scanning): 서드파티 라이브러리의 알려진 취약점(CVE)을 데이터베이스와 대조하여 관리합니다. 단순히 취약점 유무를 넘어 실제 코드 내에서의 도달 가능성(Reachability) 분석이 차세대 기술의 핵심입니다 [3].

2. 품질 게이트 (Quality Gate)

  • 통과/실패 기준 강제: 새로운 코드가 병합되기 전 반드시 충족해야 하는 보안, 커버리지, 복잡도 등의 기준을 설정합니다 [2].
  • 베이스라인 관리: 레거시 시스템 도입 시 기존 부채는 '베이스라인'으로 설정하여 무시하고, '새로운' 코드에 대해서만 엄격한 기준을 적용하여 점진적 개선을 유도합니다 [2, 6].
  • 피드백 루프 단축: CI/CD 파이프라인 및 PR 워크플로우에 직접 통합되어 개발자가 IDE를 벗어나지 않고 즉각적인 수정을 할 수 있도록 돕습니다 [5, 7].

3. 지속적 통합 및 배포 (CI/CD)

  • Pipeline as a Gatekeeper: 품질 및 보안 스캔을 자동화된 파이프라인의 필수 단계로 설정하여, 검증되지 않은 코드가 상용 환경에 노출되는 것을 방지합니다.

⚠️ Trade-offs & Caveats

  • Reachability의 한계: 많은 의존성 스캔 도구가 취약한 라이브러리의 존재 여부만 알릴 뿐, 해당 코드가 실제 실행 경로에 포함되는지(Reachability) 판단하지 못해 과도한 오탐(False Positive)을 발생시킵니다 [3].
  • 알림 피로 (Alert Fatigue): 너무 많은 경고는 개발자의 집중력을 분산시키고 도구에 대한 신뢰를 떨어뜨립니다. '의도 인지' 엔진을 통한 정밀도(Precision) 향상이 필수적입니다.
  • 인덱싱 비용: 대규모 저장소에서 심층적인 보안 분석을 수행할 경우 리소스 소모와 빌드 시간 지연이 발생할 수 있습니다.

🔗 Knowledge Connections

Deeper Research Questions

  • AI가 생성한 코드를 검증하기 위해 기존의 규칙 기반 Quality Gate는 어떤 방식으로 개선되어야 하는가?
  • 런타임 데이터(DAST)와 정적 분석 데이터(SAST)를 결합하여 보안 위협의 우선순위를 자동 결정하는 효과적인 알고리즘은 무엇인가?

Practical Application Contexts

  • Operation: CI/CD 파이프라인에 SonarQube나 Aikido Security를 연동하여 보안 정책 위반 시 배포를 자동 차단합니다 [1, 2].
  • Implementation: 개발자가 IDE 내부에서 OWASP Dependency-Check 등을 활용해 취약한 라이브러리 유입을 사전에 방어합니다 [3].

Last updated: 2026-05-02