본문으로 건너뛰기

보안 분석

소프트웨어 보안, 어디서부터 시작해야 할지 막막하신가요? KIOPS의 DevSecOps 보안 분석 기능을 활용하면 소스 코드부터 실행 중인 애플리케이션, 인프라 설정까지 전 단계에 걸쳐 보안 취약점을 자동으로 탐지할 수 있습니다.

보안 분석이 왜 중요한가요?

보안 취약점은 개발 후반부에 발견될수록 수정 비용이 기하급수적으로 증가합니다. 코드 작성 시점부터 배포 후까지 지속적으로 보안을 점검하면 비용을 절감하고 안전한 소프트웨어를 제공할 수 있습니다.

보안 분석 페이지 접근 방법

보안 분석은 KIOPS의 독립 페이지입니다. 사이드바의 "보안" 그룹 > [보안 분석] 메뉴를 클릭하면 진입합니다 (경로 /security).

진입 후 사용 흐름은 다음과 같습니다.

  1. 페이지 상단의 서비스 선택 카드 캐러셀에서 분석할 서비스를 선택합니다. 검색창으로 서비스 이름이나 Git URL을 필터링할 수 있습니다.
  2. 선택한 서비스에 대해 11개 탭이 나타납니다. 원하는 보안 영역 탭으로 이동하여 스캔을 실행하거나 결과를 확인합니다.
  3. 스캔 이력이 없는 서비스를 선택하면 개요 탭이 먼저 노출되어, 어떤 분석을 어떤 순서로 실행하면 되는지 안내합니다.
보안 분석은 독립 페이지입니다

이전에는 서비스 상세 페이지의 소스/빌드 카드 안에서 코드 분석/이미지 분석에 접근했지만, 현재는 [보안 분석] 메뉴로 재편되었습니다. 모든 보안 영역은 "[보안 분석] 메뉴 > 서비스 선택 > 해당 탭" 경로로 접근합니다.

보안 분석 개요 화면 — 서비스 선택 후 영역별 보안 상태

URL 직접 진입

보안 분석 페이지는 URL 쿼리 파라미터로 특정 서비스와 탭을 바로 열 수 있습니다.

  • ?id={서비스ID}: 선택할 서비스를 지정합니다.
  • ?area={탭키}: 진입 시 자동으로 선택할 탭을 지정합니다 (sast, sca, dast, sbom, iac, secrets, gate, quality, reports, settings, overview).

예) /security?id=12&area=sast 는 12번 서비스의 SAST 탭을 바로 엽니다.


11개 탭 구성

선택한 서비스의 보안 분석은 11개 탭으로 구성됩니다.

역할사용 도구
개요7개 보안 영역 카탈로그. 스캔 이력이 없으면 자동 노출-
SAST소스 코드 정적 분석Semgrep + OpenGrep (순차 실행, 합집합 통합)
SCA이미지 / 의존성 취약점(CVE) 분석Trivy + Dependency-Check (동시 실행)
DAST실행 중인 앱 동적 분석ZAP + Nuclei (동시 실행)
SBOM / 라이선스구성요소 명세 및 라이선스 분석Syft · ScanCode Toolkit (탭 내 독립 스캔으로 직접 실행)
IaC인프라 정의 코드 설정 오류 검사Checkov
시크릿코드 / 커밋 이력의 노출된 키 · 토큰 탐지Gitleaks
보안 게이트게이트를 제외한 6개 영역 결과를 종합한 배포 가능 여부 판정OPA
품질보안 종합 상태 + DORA 메트릭 + DORA 30일 추세 + 파이프라인 메트릭 + 최근 장애-
문서 발급GS 인증 문서 발급 (스캔 충족 여부 표시)-
설정SAST / IaC / 시크릿 공통 Git URL · 브랜치 · 토큰 설정-

품질 탭 구성

품질 탭은 서비스의 보안·배포 건강 상태를 한 화면에서 보여줍니다. 위에서 아래로 다음 카드 섹션이 차례로 표시됩니다.

품질 탭 — 보안 종합 상태와 DORA·파이프라인 메트릭

  • 보안 종합 상태: 선택한 서비스의 보안 분석 전체를 요약합니다.
    • GS 인증 준비도 (0~100%): 보안 영역 충족 정도를 백분율로 보여줍니다. 90% 이상이면 안정, 50% 미만이면 주의가 필요한 상태로 색상이 달라집니다.
    • 치명(Critical) · 심각(High) 건수: 모든 영역의 Critical/High 취약점을 합산한 건수입니다.
    • 영역별 상태 라벨: SAST · SCA · DAST · SBOM · IaC · 시크릿 · 게이트 각 영역의 상태를 태그로 표시합니다. 라벨을 클릭하면 해당 보안 영역 탭으로 바로 이동합니다.
  • DORA 메트릭: 4개 카드(배포 빈도, 리드 타임, MTTR, 변경 실패율)와 각 지표 등급, 그리고 종합 등급·Health Score를 표시합니다. 상세 의미는 DORA 메트릭 문서를 참고하세요.
  • DORA 메트릭 30일 추세: 일별 스냅샷을 기반으로 최근 30일간 DORA 지표 변화를 시계열 그래프로 보여줍니다. 스냅샷 적재가 시작된 이후의 데이터만 누적되므로, 초기에는 데이터가 적게 표시될 수 있습니다.
  • 파이프라인 메트릭 (30일): DORA 4지표가 다루지 않는 일상적 빌드/배포 운영 지표입니다.
    • 총·성공·실패·성공률 카드: 최근 30일간 실행된 파이프라인 건수와 성공률을 보여줍니다.
    • 빌드 · 배포 단계별 시간: 각 단계의 평균 · 최대 · 최소 소요 시간을 표시합니다.
  • 최근 장애: 등록된 장애 이력 목록입니다. 장애를 직접 등록하거나 조회할 수 있습니다.

7개 보안 영역 소개

SAST (정적 코드 분석)

소스 코드를 빌드 없이 패턴 기반으로 검사하여 취약한 코드를 찾습니다. KIOPS는 Semgrep을 먼저 실행하고 성공하면 이어서 OpenGrep을 실행한 뒤 두 결과를 합집합으로 통합합니다. 도구 선택 토글은 없습니다.

  • SQL Injection (CWE-89), XSS (CWE-79), Command Injection (CWE-78)
  • Hardcoded Credentials (CWE-798), Path Traversal (CWE-22)

상세: SAST 스캔

SCA (의존성 분석)

빌드된 컨테이너 이미지의 OS 패키지와 라이브러리 의존성에서 알려진 CVE 취약점을 찾습니다. KIOPS는 Trivy와 Dependency-Check를 동시에 실행하고 결과를 합집합으로 통합합니다.

상세: SCA 스캔

DAST (동적 분석)

배포되어 실행 중인 웹 애플리케이션에 외부에서 요청을 보내며 런타임 취약점을 찾습니다. ZAP와 Nuclei를 같은 대상 도메인에 대해 동시에 실행하며, 결과는 한 행으로 통합되어 표시됩니다.

상세: DAST 스캔

SBOM / 라이선스 (구성요소 명세)

소프트웨어 구성요소 명세서(SBOM)입니다. SAST/SCA와는 별개의 독립 스캔으로, SBOM / 라이선스 탭에서 직접 실행합니다. SBOM은 Syft, 소스 라이선스는 ScanCode로 생성되며 CycloneDX 1.6 형식으로 출력됩니다. 라이선스 정보도 함께 식별됩니다.

상세: SBOM 생성

IaC (인프라 코드 분석)

Dockerfile, Kubernetes 매니페스트, Terraform 등 인프라 정의 코드의 보안 설정 오류를 검사합니다. Checkov를 사용합니다.

상세: IaC 스캔

시크릿 (자격증명 탐지)

Git 저장소 코드와 커밋 이력 전체에서 노출된 API 키, 토큰, 비밀번호를 탐지합니다. Gitleaks를 사용합니다.

상세: 시크릿 스캔

보안 게이트 (배포 판정)

게이트를 제외한 6개 보안 영역(SAST·SCA·DAST·라이선스·IaC·시크릿)의 스캔 결과를 정책 기준으로 종합 평가하여 배포 가능 여부를 판정합니다. 라이선스 위험은 SBOM 스캔에서 수집되며, SBOM 구성요소 명세 자체는 게이트 평가 대상이 아닙니다. OPA(Open Policy Agent) 정책을 사용합니다.

상세: 보안 게이트


보안 용어 쉽게 이해하기

처음 보는 용어들이 많으시죠? 하나씩 설명해 드릴게요.

  • SAST (Static Application Security Testing): 소스 코드를 실행하지 않고 코드 자체를 분석하여 보안 취약점을 찾습니다.
  • SCA (Software Composition Analysis): 프로젝트에서 사용하는 외부 라이브러리와 패키지에 알려진 보안 취약점이 있는지 확인합니다.
  • DAST (Dynamic Application Security Testing): 실제로 실행 중인 애플리케이션에 HTTP 요청을 보내 취약점을 찾습니다.
  • SBOM (Software Bill of Materials): 소프트웨어에 포함된 모든 구성요소의 목록입니다.
  • IaC (Infrastructure as Code): 인프라를 코드로 정의한 것입니다. Dockerfile, K8s 매니페스트, Terraform 등이 해당합니다.
  • CVE (Common Vulnerabilities and Exposures): 공개적으로 알려진 보안 취약점에 부여되는 고유 식별자입니다.

심각도 분류 및 대응 가이드

CVSS 기반 심각도

CVSS(Common Vulnerability Scoring System)는 취약점의 심각도를 0-10점으로 표준화한 점수 체계입니다.

  • Critical (CVSS 9.0-10.0): 즉시 대응이 필요합니다.
  • High (CVSS 7.0-8.9): 24-48시간 내 대응이 필요합니다.
  • Medium (CVSS 4.0-6.9): 1-2주 내 대응이 필요합니다.
  • Low (CVSS 0.1-3.9): 다음 릴리스에 대응합니다.
  • Info (N/A): 선택적 대응입니다. 참고용 정보입니다.
Critical/High 취약점 발견 시

Critical이나 High 심각도의 취약점이 발견되면 즉시 조치가 필요합니다. 특히 프로덕션 환경에서는 해당 취약점이 악용될 위험이 있으므로 빠른 패치나 임시 대응 방안을 마련하세요.


빠른 시작: 전체 보안 분석 흐름

처음이시라면 아래 단계를 따라 전체 보안 분석을 경험해보세요.

  1. 사이드바에서 [보안 분석] 메뉴를 클릭합니다.
  2. 상단 카드 캐러셀에서 분석할 서비스를 선택합니다.
  3. 개요 탭에서 7개 영역의 도구와 사전조건을 먼저 확인합니다.
  4. 설정 탭에서 Git URL, 브랜치, 토큰을 등록합니다 (SAST/IaC/시크릿 공통).
  5. SAST 탭에서 소스 코드 정적 분석을 실행합니다.
  6. SCA 탭에서 빌드된 이미지의 CVE를 분석합니다.
    • SBOM/라이선스는 SAST·SCA와 별개의 독립 스캔입니다. 필요하면 SBOM / 라이선스 탭에서 직접 실행합니다.
  7. IaC시크릿 탭에서 인프라 설정 오류와 노출된 자격증명을 점검합니다.
  8. 서비스 배포 후 DAST 탭에서 런타임 취약점을 분석합니다.
  9. 보안 게이트 탭에서 6개 영역 결과를 종합한 배포 판정을 확인합니다.

보안 분석 베스트 프랙티스

Shift-Left Security

"Shift-Left"란 보안 점검을 개발 프로세스 초기(왼쪽)로 옮기는 것을 의미합니다.

  1. 개발 초기부터 SAST 실행: 코드 작성 시점에서 취약점을 탐지하면 수정이 쉽습니다.
  2. 의존성 추가 시 SCA 확인: 새 패키지를 도입하기 전에 알려진 취약점이 없는지 확인하세요.
  3. 시크릿 정기 점검: 노출된 키/토큰은 빠르게 폐기하고 교체하세요.

취약점 관리

  1. Critical/High 우선 처리
  2. 오탐 관리: 확인된 오탐은 false_positive로, 인지된 미수정 항목은 accepted_risk(위험 수용)로 분류
  3. 정기적 재스캔: 새로운 CVE가 계속 발견되므로 정기적으로 재스캔하세요.
  4. 보안 게이트 활용: 배포 전 6개 영역 결과를 종합 점검하세요.

관련 기능