본문으로 건너뛰기

보안 게이트

SAST, SCA, DAST, IaC, 시크릿, 라이선스 등 여러 영역에서 스캔을 돌렸는데, 결국 "이 서비스를 배포해도 되는가?"라는 질문에는 어떻게 답해야 할까요? 보안 게이트는 6개 보안 영역의 결과를 OPA 정책 기준으로 종합하여 배포 가능 여부를 한 번에 판정합니다. 게이트 자체는 보안 영역이 아니라 평가 정책 판정입니다.

보안 게이트가 왜 필요한가요?

개별 영역의 스캔 결과만 보면 전체 그림을 놓치기 쉽습니다. SAST는 통과했지만 SCA에 Critical 취약점이 있거나, 시크릿이 노출된 채로 배포가 진행될 수 있습니다. 보안 게이트는 6개 영역의 결과를 하나의 OPA 정책으로 평가하여, 일관된 기준으로 배포 여부를 결정하게 해줍니다.

보안 게이트 판정 결과

개요

  • 역할: 6개 보안 영역(SAST/SCA/DAST/IaC/시크릿/라이선스)의 스캔 결과를 정책 기준으로 종합하여 배포 가능 여부를 판정
  • 정책 판정 지위: 게이트는 보안 영역이 아닌 배포 정책 판정 결과. OPA 평가 후 GS 인증 준비도 산식에서 제외됨.
  • 판정 엔진: OPA (Open Policy Agent)
  • 판정 기준: OPA Rego 정책 (영역별 심각도 임계값)
  • 결과 형식: 영역별 통과/차단 판정 + 게이트 전체 통과 여부 + (warn 모드 시) 위반 정보
보안 게이트는 새 스캔을 실행하지 않습니다

보안 게이트는 SAST/SCA/DAST/IaC/시크릿 등 각 영역에서 이미 수행된 스캔 결과를 모아 평가합니다. 게이트 자체가 코드를 다시 분석하지 않으므로, 게이트를 실행하기 전에 평가 대상 영역의 스캔을 먼저 수행해야 합니다.


OPA란?

OPA(Open Policy Agent)는 정책을 코드로 정의하고 평가하는 범용 정책 엔진입니다. Rego라는 정책 언어로 "어떤 조건이면 통과, 어떤 조건이면 차단"이라는 규칙을 정의합니다.

KIOPS의 보안 게이트는 OPA Rego 정책을 사용하여, 각 보안 영역의 스캔 결과가 정책 임계값을 충족하는지 평가합니다. 예를 들어 "Critical 취약점이 1개라도 있으면 차단"과 같은 규칙이 정책으로 표현됩니다.


Step 1: 보안 게이트 진입

  1. 사이드바의 "보안" 그룹 > [보안 분석] 메뉴를 클릭합니다.
  2. 페이지 상단의 카드 캐러셀에서 평가할 서비스를 선택합니다.
  3. 보안 게이트 탭을 선택합니다.
URL로 바로 진입하기

/security?id={서비스ID}&area=gate URL로 진입하면 해당 서비스의 보안 게이트 탭이 바로 열립니다.


Step 1-1: 차단 정책 설정 (선택)

보안 게이트는 평가 실행과 별개로, 배포 시 게이트 판정을 실제로 강제할지를 제어하는 차단 정책(gate_enforce_mode)을 설정할 수 있습니다.

게이트 탭 또는 [서비스 관리] 페이지에서 다음 중 선택:

  • 정책 미적용 (off): 게이트 평가는 수행되지만 배포에 영향을 주지 않습니다.
  • 경고만 (warn): 게이트 판정이 차단(block)이어도 배포는 진행되며, 사용자에게 위반 정보가 토스트 알림으로 표시됩니다.
  • 배포 차단 (block): 게이트 판정이 차단이면 배포 API가 HTTP 412 Precondition Failed로 요청을 거부합니다.

각 모드는 GateEnforcementBadge로 UI에 표시되어, 사용자가 대시보드·서비스 관리 페이지에서도 정책 활성 여부를 한눈에 확인할 수 있습니다.


Step 2: 게이트 평가 실행

보안 게이트 탭에서 [지금 평가] 버튼을 클릭하면, OPA가 최신 6개 영역의 스캔 결과를 정책과 대조하여 판정합니다.

평가 대상이 되는 6개 영역은 다음과 같습니다. 라이선스 데이터는 SBOM 스캔(license_analysis)에서 수집되지만, 게이트에서는 라이선스가 독립된 평가 영역으로 판정됩니다. SBOM 구성요소 명세 자체는 현재 게이트 정책에서 평가하지 않습니다.

  • SAST (소스 코드 정적 분석)
  • SCA (의존성 취약점)
  • DAST (런타임 취약점)
  • 라이선스 (SBOM 스캔에서 수집된 라이선스 위험)
  • IaC (인프라 설정 오류)
  • 시크릿 (노출된 자격증명)

각 영역에 스캔 결과가 없으면 해당 영역은 평가에서 제외되거나 판정 불가로 표시됩니다.


Step 3: 판정 결과 확인

3.1 판정 결과

OPA 평가 후 다음 중 하나의 판정이 표시됩니다.

  • 허용 (allow): 모든 영역이 정책을 만족합니다.
  • 차단 (block): 1개 이상 영역의 결과가 정책 임계값을 초과했습니다.
  • 경고 (warn): warn 차단 정책이 활성화되고 block 판정인 경우 표시됩니다. 배포는 그대로 진행되나 위반 정보가 사용자에게 전달됩니다.

3.2 영역별 차단 사유

block 판정 시, 어떤 영역의 어떤 취약점이 문제인지 카드 형식으로 표시됩니다. 각 카드는:

  • 영역 명: SAST, SCA, 라이선스 등
  • 문제 항목: Critical·High 취약점 또는 라이선스 위험 카운트
  • 조치 안내: 통과를 위한 조치 방법

3.3 정책 기준 확인

[정책 기준] 섹션에서 적용된 OPA 정책과 severity_thresholds를 확인할 수 있습니다. 정책 관리 권한이 있다면 정책 편집도 가능합니다.

3.4 warn 모드 위반 알림

warn 차단 정책이 활성화되고 게이트 판정이 block인 경우:

  • 배포는 그대로 진행됩니다.
  • 배포 응답의 최상위 레벨에 gate_warning 객체가 동봉됩니다(decision_id, decision(항상 'block'), violations 배열, hint 메시지).
  • 프론트엔드 maybeShowGateWarning 헬퍼가 응답을 자동 감지하여 AntD notification.warning으로 8초간 토스트 알림을 표시합니다.
  • 동일한 decision_id의 알림은 영구적으로 중복 표시되지 않습니다(dedup by Set+LRU 메커니즘으로 최대 100개의 decision 이력 유지). 같은 decision이 반복되어도 처음 한 번만 알림이 표시되며, decision이 100개를 넘으면 가장 오래된 것부터 LRU로 제거됩니다(시간 무관).

게이트 판정 기준

보안 게이트는 영역별 심각도 임계값을 정책(OPA Rego)으로 정의하여 판정합니다.

6개 영역의 평가 기준

OPA Rego 정책은 각 영역별로 다음과 같은 규칙을 정의합니다. 일반적으로:

  • SAST, SCA, DAST, IaC, 시크릿: Critical/High 취약점 수가 임계값을 초과하면 차단
  • 라이선스: strong_copyleft 라이선스(Critical 등급)나 weak_copyleft(High 등급) 수가 임계값을 초과하면 차단

하나의 영역이라도 임계값을 초과하면 게이트 전체가 block 판정입니다.

GS 인증 준비도와의 분리

게이트 판정(block/allow)은 배포 정책 결과이며, GS 인증 준비도(0-100%) 산식에서는 제외됩니다. GS는 6개 영역의 위협만 차감 기준으로 사용합니다:

  • Critical 1건당 -5점
  • High 1건당 -1.5점
  • Medium 1건당 -0.5점
  • 미분석(never) 영역마다 -2.5점
  • 영역별 누적 페널티 ceiling: Critical -30 / High -15 / Medium -10 (한 영역의 극단치가 전체를 덮어쓰지 못하도록 방지)
  • 게이트 block 판정은 GS 계산에 포함되지 않음

결과는 0~100 범위로 제한되며, 위협이 많을수록 GS %가 직관적으로 하락합니다.

차단 판정 시 대응

게이트가 차단으로 판정되면, 차단 원인이 된 영역으로 이동하여:

  1. 취약점을 수정하거나
  2. 확인된 오탐을 false_positive로 분류한 뒤
  3. 해당 영역을 재스캔하고
  4. 게이트를 다시 평가하세요.

warn 모드가 활성화된 경우, 배포는 진행되더라도 [보안 분석] 탭에서 위반을 확인하고 조치하는 것을 권장합니다.


권장 활용 방식

배포 전 최종 점검

배포를 진행하기 전에 보안 게이트로 6개 영역의 결과를 한 번에 점검하세요. 개별 영역을 일일이 확인하지 않아도, 게이트의 allow/block 판정으로 배포 안전성을 빠르게 파악할 수 있습니다. warn 차단 정책이 활성화되면 위반 정보가 배포 응답에 동봉되어 사용자가 즉시 인지할 수 있습니다.

영역별 스캔 선행

게이트는 기존 스캔 결과를 종합하므로, 정확한 판정을 위해서는 평가 대상 영역의 스캔을 먼저 최신 상태로 유지해야 합니다. 코드나 이미지가 변경되었다면 관련 영역을 재스캔한 뒤 게이트를 평가하세요.

정기 점검

새로운 CVE는 계속 발견됩니다. 코드 변경이 없더라도 정기적으로 영역별 재스캔 후 게이트를 다시 평가하면, 시간이 지나며 새로 드러난 위험을 놓치지 않을 수 있습니다.


문제 해결

판정 불가가 많이 표시됨

평가 대상 영역의 스캔 이력이 없으면 판정 불가로 표시됩니다. SAST, SCA, DAST, 라이선스, IaC, 시크릿 등 6개 영역의 스캔을 먼저 수행한 뒤 게이트를 평가하세요.

게이트가 계속 차단됨

차단 원인 상세 내역에서 어떤 영역의 어떤 항목이 임계값을 초과했는지 확인하세요. 해당 영역의 결과 탭에서 취약점을 수정하거나 오탐을 분류한 뒤, 재스캔하고 게이트를 다시 평가합니다.


관련 가이드