> ## Documentation Index
> Fetch the complete documentation index at: https://docs.marketplace.bsggo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 시스템 아키텍처

> 데이터 수집부터 대시보드 시각화까지의 전체 시스템 흐름을 설명합니다.

## 전체 데이터 흐름

<Info>
  **매일 02:00 KST** → 자동 스캔 시작 → 계정별 병렬 수집 → 데이터 변환 → 대시보드 반영
</Info>

| 단계           | 역할                                            |
| ------------ | --------------------------------------------- |
| 1. 스케줄 트리거   | 매일 02:00 KST에 스캔을 자동 시작                       |
| 2. 스캔 실행 관리  | 전체 스캔 과정을 순서대로 실행하고 오류 시 재시도                  |
| 3. 데이터 수집    | 컴플라이언스 스캔, Security Hub, CloudTrail 3종을 병렬 수집 |
| 4. 원본 저장     | 수집된 원본 데이터 저장 (90일 보존)                        |
| 5. 데이터 변환    | 원본 데이터를 분석용 형식으로 변환, 일일 변경 분석                 |
| 6. 분석 데이터 저장 | 변환된 분석용 데이터 저장 (영구 보존)                        |
| 7. 분석 쿼리     | 사전 구성된 분석 뷰를 통해 데이터 조회                        |
| 8. 대시보드 시각화  | 새로고침 시 항상 최신 수집 데이터 표시                        |

## 주요 처리 단계

### 스캔 스케줄

| 항목    | 값                                                   |
| ----- | --------------------------------------------------- |
| 기본 설정 | 매일 02:00 KST                                        |
| 변경 방법 | [스캔 스케줄 설정](/isms-p-dashboard/settings/schedule) 참고 |

<Info>
  **왜 새벽 2시인가:** 전날 발생한 보안 이벤트가 AWS 서비스에 모두 반영된 이후 수집하기 위함입니다. CloudTrail과 Security Hub 모두 이벤트 전파에 수 시간이 걸릴 수 있습니다.
</Info>

### 스캔 실행 과정

| 순서 | 단계            | 설명                                  |
| -- | ------------- | ----------------------------------- |
| 1  | 계정 목록 로드      | 등록된 스캔 대상 계정 목록 확인                  |
| 2  | 스캔 역할 확인 및 생성 | 대상 계정의 스캔 역할 존재 여부 확인. 없으면 자동 생성    |
| 3  | 계정별 병렬 스캔     | 최대 5개 계정 동시 처리, 각 계정에서 3개 수집기 동시 실행 |
| 4  | 데이터 변환        | 원본 데이터를 분석용 형식으로 변환                 |
| 5  | 완료            | 전체 타임아웃: 2시간                        |

<Info>
  각 스캔 작업은 실패 시 최대 2회 재시도됩니다 (30초 시작, 재시도마다 간격 2배 증가). 전체 실행이 실패하면 [알림](/isms-p-dashboard/settings/alerts)이 발송됩니다.
</Info>

### 데이터 수집

3개의 수집기가 각 계정에서 **병렬로** 실행됩니다.

| 수집기             | 수집 대상                        | 소요 시간    |
| --------------- | ---------------------------- | -------- |
| 컴플라이언스 스캔       | ISMS-P 보안 점검 결과 (PASS/FAIL)  | 5-10분/계정 |
| Security Hub 수집 | GuardDuty, Inspector 등 탐지 결과 | 2-5분/계정  |
| CloudTrail 수집   | 보안 관련 API 호출 이력              | 2-5분/계정  |

모든 수집기는 대상 계정의 스캔 역할을 위임받아 **읽기 전용**으로 데이터를 수집합니다. 대상 계정의 리소스를 수정하지 않습니다.

### 데이터 변환

수집된 원본 데이터를 분석에 최적화된 형식으로 변환합니다.

**변환 내용:**

* 중첩된 데이터 구조를 평면화하여 조회 성능 최적화
* 날짜/계정별 분류 적용
* **일일 변경 분석:** 전일 대비 신규(NEW), 해결(FIXED), 재발(REGRESSION) 항목 자동 분류

### 대시보드 표시

* **분석 뷰:** 사전 구성된 분석 뷰를 통해 대시보드에 필요한 데이터를 자동 조회
* **시각화:** 별도 캐시 없이 항상 최신 데이터를 표시하며, 브라우저 새로고침만으로 즉시 반영

## 크로스 계정 접근 방식

<Info>
  대시보드는 **중앙 계정**에 설치되며, **대상 계정**의 데이터를 읽기 전용으로 수집합니다. 대상 계정에 필요한 스캔 역할(`ISMS-P-ScanRole`)은 계정 추가 시 자동으로 생성됩니다.
</Info>

| 항목    | 설명                            |
| ----- | ----------------------------- |
| 접근 방식 | 중앙 계정에서 대상 계정의 스캔 역할을 위임받아 접근 |
| 보안 장치 | ExternalId를 사용하여 비인가 접근 방지    |
| 역할 이름 | `ISMS-P-ScanRole` (변경 가능)     |
| 권한    | 읽기 전용. 대상 계정의 리소스를 수정하지 않음    |

## 데이터 보존 기간

| 데이터 유형 | 설명            | 보존 기간 |
| ------ | ------------- | ----- |
| 원본 데이터 | 수집된 그대로의 원본   | 90일   |
| 분석 데이터 | 변환된 대시보드용 데이터 | 영구 보존 |
| 계정 설정  | 스캔 대상 계정 목록   | -     |
| 쿼리 캐시  | 분석 쿼리 임시 결과   | 7일    |
