망분리를 풀면, 신뢰를 무엇으로 대체하는가¶
검증 가능한 다층보안(MLS) 보상통제를 코드로 — 한 요청이 신원·세분화·인가·암호화·탐지를 전부 통과해야 데이터에 닿고, 막힌다는 사실을 매번 라이브로 증명한다.
라이브 검증 21/21 · 검증가능 커버리지 82.5% · 적대적 검증: CRITICAL 1 발견·수정 · 무료 로컬 $0
여기서 시작 — M0 재구현 (클러스터 불필요·Python만) · 트랙 전체 보기
교육·포트폴리오 목적의 보상통제 설계 레퍼런스다 — 법률/금융 자문도, 공식 FSC 컴플라이언스 매핑도 아니다. 규제 세부(고시·조문·시행일)는 1차 출처 대조가 필요하다.
한국 금융권은 10년간 물리/논리 망분리로 보안을 유지했다. FSC(금융위원회) 「금융분야 망분리 개선 로드맵」(2024-08-13)이 이를 위험기반 다층보안(MLS)으로 전환하면서, "네트워크 위치로 신뢰"가 사라진 자리를 보상통제(compensating controls)로 메워야 한다. 이 프로젝트는 그 보상통제를 하나의 워크로드 위에 코드로 구현하고 21개 통제를 라이브로 검증한 재현 가능한 레퍼런스다. 적대적(LLM) 재검토가 자체 인가 정책에서 실제 우회 취약점을 찾아 수정한 과정까지 포함한다.
왜 중요한가 (the problem)¶
전 — 망분리
안전하지만 SaaS·클라우드·생성형 AI·개발도구가 막혀 경쟁력이 떨어진다.
후 — MLS (망분리 완화)
망을 풀면 그 신뢰를 보상통제로 대체해야 한다 — 바로 이 프로젝트가 구현·검증하는 것.
망분리 완화의 안전성은 보상통제가 실제로 막는지에 달렸다 — 슬라이드가 아니라 실행과 검증으로.
무엇을 한 요청이 통과하는가 (the architecture)¶
flowchart TB
accTitle: 한 요청이 통과하는 통제 계층
accDescr {
요청은 ① 신원(admission 라벨↔SA·SA-use·SPIFFE)을 지나 web으로, ② Cilium L3/L7 default-deny를 지나 api로, ③ Cedar PDP(owner·한도·역할·동결)를 지나 db에 닿는다.
db에서 ⑤⑥ 암호화(WireGuard 전송·etcd 저장)와 ⑦ Tetragon 런타임 셸 SIGKILL로 분기하고, web에서 ④ egress default-deny가 인터넷·메타데이터·API서버를 막는다.
}
R(["요청 / 공격 시도"]) --> ADM
ADM["① 신원: admission 라벨↔SA · SA-use gate · SPIFFE"] --> WEB
WEB["web · 공개 O"] --> L7["② Cilium L3/L4 + L7 (default-deny)"]
L7 --> API["api · 민감 S"]
API --> CEDAR["③ Cedar PDP: owner · 한도 · 역할 · 동결"]
CEDAR --> DB[("db · 기밀 C")]
DB --> ENC["⑤⑥ 암호화: WireGuard 전송 + etcd 저장"]
DB --> RT["⑦ Tetragon eBPF: 런타임 셸 즉시 SIGKILL"]
WEB --> EG["④ egress default-deny: 인터넷·메타데이터·API서버 000"]
classDef ctrl fill:#e8eaf6,stroke:#3f51b5,color:#1a237e;
classDef data fill:#fff3e0,stroke:#e65100,color:#bf360c;
class ADM,L7,CEDAR,RT,EG ctrl;
class DB,ENC data;
거친 통제(RBAC·세분화) → 세밀한 통제(ABAC·per-request)를 순서대로 통과해야 데이터에 닿는다. 같은 네트워크 경로·같은 L7 허용 경로라도 principal이 다르면 결과가 다르다(alice 200 vs bob 403).
기여 (contributions)¶
- 규제 → 통제 매핑 — FSC 망분리 완화/MLS 보상통제 6종을 NIST SP 800-207·ISMS-P·검증 항목에 1:1 매핑. → MLS 매핑
- 검증가능성 기준 + 커버리지 측정 — "각 규제 요구는 시행을 증명하는 실행 테스트에 대응돼야 한다"를 기준으로, MLS 보상통제의 82.5%가 코드로 검증가능함을 정량화(갭 공개). → 평가
- 적대적 검증 — LLM 멀티에이전트 재검토가 자체 SA-use 정책의 실제 우회(CRITICAL)를 발견 → 수정 → 라이브 재검증. 잔여위험 명시.
- 인가 흐름 정렬 + 프런티어 — RBAC+ABAC 하이브리드 · policy-as-code · 지속평가. AI-에이전트 위임(Cedar)·ReBAC(OpenFGA)을 실행 데모로 충족(NHI 생애주기 포함). → 인가 모델
핵심 결과¶
| 항목 | 결과 |
|---|---|
| 검증가능성 커버리지 (정량 헤드라인) | 워크로드 적용가능 MLS 보상통제 sub-requirement의 82.5% (33/40) 가 코드로 검증 — 갭(CONFIGURED 3·NOT-COVERED 4·GOVERNANCE 2)을 정직하게 공개. → 평가 |
| 라이브 방어심층 검증 (기능 회귀 스위트) | 21 / 21 PASS — 차단/허용 enforcement 전부. WireGuard는 api/db를 다른 노드로 강제(podAntiAffinity)하고 tcpdump로 선상 WG 암호문(UDP/51871, 25s 윈도우) + 평문 0 확인(scripts/capture-wg.sh) |
| Cedar 인가 단위테스트 | 8 / 8 (코어) · 17 / 17 AI-에이전트 위임(confused-deputy 차단 + ASI08 위임깊이 cap·홉별 클램프·출처 게이트; P2·P3·P5·P6·P7 mutation으로 반증가능) |
| ReBAC 관계 테스트 (OpenFGA) | 11 / 11 fga model test + 라이브 /check 11/11 — 인가 모델의 ReBAC 갭을 실행으로 충족 |
| 공급망: 이미지 스캔 + SBOM (trivy) | 게이트가 실제 CVE 1건(HIGH) 포착→remediation→green · CycloneDX SBOM 103 컴포넌트 |
| checkov shift-left | 452 pass / 0 fail / 5 documented skip |
| 적대적 검토가 찾은 실제 버그 | CRITICAL 1 (SA-use 우회) + 다수 — 전부 수정·검증 |
| 비용 | $0 (무료 로컬 kind; AWS 경로는 가격대별 가이드) |
어디로 갈 것인가¶
- 직접 익히려면 → 재구현 트랙 M0 — 빈 파일에서 작성하면 자동채점이 판정 (클러스터 불필요)
- 계층-간 정합성 도구 → cross-layer-lint (M7·심화) — Cilium L7 × Cedar PDP가 합성될 때의 shadow/ungated 규칙을 z3로 검사, JSON/SARIF/HTML 출력
- 개념부터 읽으려면 → 읽으며 따라가기: 개념 페이지 6편 (각 페이지가 재구현 모듈과 짝)
- 왜 중요한지 → 금융 망분리 완화 매핑 · 위협 모델
- 운영·클라우드·발표 → 런북 · AWS 경로 · 토크 아웃라인
한계 — 워크로드 보상통제 레이어의 레퍼런스다(인증서가 아니다). 실 데이터스토어 없음, X-User는 미인증 데모 입력, WireGuard는 노드간 암호화, 규제 세부는 1차 출처 대조 필요.