콘텐츠로 이동

보안 대시보드

/observability/security/dashboard admin devops developer

조직의 모든 스택 · 모든 앱의 보안 스캔 결과를 한 화면에서 봅니다. 사이드바의 관측성 › 보안 › 보안 대시보드에 있고, /observability/security 로 들어와도 이 화면으로 옵니다.

스택별로 묶은 앱 보안 상태와 오른쪽 상세 패널 스택별로 묶은 앱 보안 상태와 오른쪽 상세 패널

두 탭 — 앱과 설치 OSS

성격이 다른 두 결과를 탭으로 가르고 숫자를 합치지 않습니다.

탭 무엇 성격
앱 파이프라인의 보안 단계 넷 — 시크릿 · 의존성 · SAST · 이미지 게이트 — 배포를 막는다
설치 OSS 스택이 설치한 GitLab · Harbor · Argo CD 같은 OSS 이미지의 취약점 보고 — 설치 · 배포를 막지 않는다

설치 OSS 이미지 하나가 CRITICAL 수십 건을 갖는 일이 흔해서, 합치면 앱 쪽 숫자가 묻힙니다. 고칠 사람도 다릅니다 — 앱은 개발자가, 설치 OSS 는 스택 운영자가 업그레이드로 고칩니다(설치 OSS CVE 대응).

설치 OSS 탭은 admin · devops 에게만 보입니다. developer 에게는 탭과 다섯 번째 KPI 카드가 없고, 화면이 그 API 를 부르지도 않습니다.

쓰는 법

  1. 위쪽 클러스터 · 스택 에서 범위를 좁힙니다. 기본은 전체 — 조직 전체입니다. 스택이 없는 앱(직접 배포 · 스택이 지워진 앱)은 스택 없음 으로 고릅니다.
  2. 앱 이름 검색 으로 앱을 찾습니다.
  3. 문제 있는 것만 은 기본으로 켜져 있습니다. 끄면 통과한 앱과 보안 단계가 없는 앱도 보입니다. 표 아래 문제 없는 앱 N개를 숨겼습니다 의 모두 보기 도 같습니다.
  4. 행을 누르면 오른쪽에 단계별 요약이 열립니다.

KPI 카드는 범위 필터(클러스터 · 스택 · 검색)만 따릅니다. 문제 있는 것만 을 켜고 꺼도 카드 숫자는 그대로입니다.

KPI 카드

카드는 취약점 건수가 아니라 조치해야 할 대상 수를 셉니다. 같은 베이스 이미지의 CVE 가 앱마다 겹쳐 세지고, 이미지 스캔과 의존성 스캔은 앱 의존성 구간이 겹치기 때문입니다. 건수는 표의 칸에서 봅니다.

카드 세는 것 할 일
차단된 앱 보안 단계 하나라도 차단 인 앱 / 보안 단계가 있는 앱 배포가 멈춰 있다 — 막힌 단계를 고친다
시크릿 탐지 앱 시크릿 탐지가 차단 또는 경고 인 앱. 경고 정책이어도 센다 즉시 폐기 · 회전
CRITICAL 보유 앱 이미지 또는 의존성 스캔에 CRITICAL 이 있는 앱(스택 정책 기준) 의존성 · 베이스 이미지 갱신
판정 불가 앱 단계 하나라도 판정 불가 또는 기록 없음 인 앱 스캐너 · 러너 · 리포트 경로 점검
설치 OSS 조치 대상 수정판 있는 CRITICAL 을 가진 설치 이미지 수(A + B 등급). 외부 노출(A) 수와 스캔하지 않는 스택 수를 함께 적는다 OSS 업그레이드

\"정책 기준\" 이란

스택의 스캔 정책이 수정판 없는 취약점을 빼도록(기본값) 돼 있으면, 건수도 수정판이 있는 것만 셉니다. 게이트가 본 것과 화면의 숫자가 같아야 하기 때문입니다.

앱 탭 읽는 법

행은 앱(파이프라인) 하나이고, 열은 파이프라인 단계 순서대로 시크릿 → 의존성 → SAST → 이미지 입니다. 열 머리의 SAST 4/9 는 앱 9개 중 4개에 그 단계가 있다는 뜻입니다.

스택이 여럿이면 앱을 스택별로 묶고, 묶음 머리에 클러스터와 차단 · 시크릿 · CRITICAL · 판정 불가 수를 적습니다. 문제가 없는 묶음은 접혀서 열립니다. 스택 하나를 고르면 묶음 없이 평평한 표가 됩니다.

칸의 상태

상태 뜻
통과 게이트를 지났다
경고 정책이 경고로 통과시켰다
차단 게이트가 막았다
판정 불가 스캐너 장애나 리포트 누락 — 통과가 아니다
기록 없음 단계는 있는데 main 의 결과가 아직 없다
— (미적용) 파이프라인에 그 단계가 없다. 시크릿 탐지는 스택 정책이 off 여도
대상 없음 의존성 스캔이 검사할 락파일을 찾지 못하고 통과했다 — 초록으로 보이지 않는다

칸 안의 숫자는 시크릿이 탐지 건수, 의존성 · 이미지가 C3 H5(CRITICAL · HIGH), SAST 가 취약 · 핫스팟 수입니다. 취약점 DB 가 30일을 넘으면 DB 34일 배지가 붙습니다.

칸은 그 단계의 가장 최근 결과입니다. 앞 단계가 막으면 뒤 단계는 돌지 않으므로 칸마다 실행이 다를 수 있습니다 — 최근 실행이 아닌 칸에는 #41 처럼 실행 번호가 흐리게 붙습니다.

행 순서

위험한 앱이 위로 옵니다.

  1. 시크릿이 탐지됐다(차단 · 경고) — 커밋을 지워도 이미 유출이다
  2. 차단된 단계가 있다
  3. 판정 불가 · 기록 없음
  4. 경고
  5. 모두 통과
  6. 보안 단계가 없다

같은 순위 안에서는 CRITICAL 이 많은 앱, 최근에 돈 앱, 이름 순입니다. 문제 있는 것만 은 1~4 만 보입니다.

상세 패널

행을 누르면 오른쪽에 단계별 판정 · 실행 번호 · 건수와 리포트(CI 산출물) · SonarQube 링크가 나옵니다. 시크릿이 탐지됐으면 폐기 · 회전 경고가 먼저 보입니다. 비밀값은 어디에도 나오지 않습니다 — 리포트는 CI 에서부터 값을 가립니다.

상세는 이 화면에 다시 만들지 않았습니다. 실행 기록 열기 가 CI/CD 목록의 그 앱 실행 기록 탭을 바로 엽니다. 실행 기록에는 이미지 스캔 · SAST 옆에 의존성 · 시크릿 탐지 요약도 함께 나옵니다.

설치 OSS 탭

스택별 설치 OSS 이미지 취약점 요약 스택별 설치 OSS 이미지 취약점 요약

스택 한 줄에 설치 이미지 수, 등급별 이미지 수, 수정판 있는 CRITICAL · HIGH, 가장 심각한 이미지, 마지막 스캔과 취약점 DB 나이가 나옵니다. 등급은 설치 OSS CVE 대응의 등급을 이미지 단위로 센 것입니다.

열 세는 이미지
A 수정판 있는 CRITICAL 이 있고 클러스터 밖에 노출된 이미지
B 수정판 있는 CRITICAL 이 있는 내부 이미지
C 수정판 있는 CRITICAL 은 없고 수정판 있는 HIGH 가 있는 이미지
  • 스캐너(Trivy)를 고르지 않은 스택은 스캔 안 함 · 스캐너 미설치 로, 0 이 아니라 — 로 보입니다.
  • 에어갭 스택은 에어갭 표시와 함께 DB 나이를 반입 기준으로 적습니다. 반입 뒤에 공개된 CVE 는 다음 번들을 반입해야 보입니다.
  • 행을 누르면 스택 목록의 그 스택 이미지 취약점 탭이 열립니다.

결과는 어디서 오나

결과 들어오는 길 갱신
앱 4종 실행 기록 동기화가 CI 산출물(리포트)을 읽어 남긴다 10분 주기 + CI/CD 실행 기록 화면을 열 때
설치 OSS 스택 Trivy 서버로 설치 이미지를 스캔한다 설치 직후 + 24시간 주기
  • 앱 결과는 main 기준입니다. 다른 브랜치의 실행은 읽지 않습니다.
  • 의존성 · 시크릿 탐지 결과는 이 화면과 함께 저장되기 시작했습니다. 그전 실행은 기록 없음 으로 보입니다 — 다음 실행부터 채워집니다.

호출하는 API

GET /api/v1/observability/security/apps?cluster_id=&stack_id=&q=&problem_only=true
GET /api/v1/observability/security/stacks?cluster_id=&stack_id=        # admin · devops

stack_id=none 은 스택 없는 앱입니다. 조직은 로그인 주체에서 정합니다. /security/stacks 는 관측성 그룹 안에서 유일하게 역할을 보는 경로로, developer 는 403 을 받습니다(권한 표).