MLS 보상통제를 코드로. 한 요청이 신원·세분화·인가·암호화·탐지를 통과해야 데이터에 닿고,
막는다는 사실을 매번 라이브로 재현한다.
coverage82.5%33/40 — 검증가능-as-codeverify21/21라이브, 전 계층 enforcementcedar8/8·17/17인가 + 에이전트 위임 (반증가능)rebac11/11OpenFGA 관계 테스트checkov452/0shift-left · 실 CVE 1건 포착→수정
// 21/21은 기능 회귀 스위트(분모 없는 측정 아님) · 갭 17.5%(CONFIGURED 3·NOT-COVERED 4; GOVERNANCE 2는 40 분모 밖)는 행 단위 공개.
identity→segmentation→authz→encrypt→runtime
같은 경로·다른 신원 · alice GET acct-alice 200 bob 같은 경로 403 db /bin/sh 137 · id 137(zero-exec)
"안전하다"가 아니라 — 갭을 공개한다.
재현 증거
감사자가 부작용 없는 dry-run으로 직접 거부/허용을 확인.
명시된 갭
미검증 17.5%를 행 단위로 공개 — 두루뭉술하지 않다.
정직성
요청자 JWT 행을 증명 전엔 CONFIGURED로 낮춰 뒀다가 라이브로 강제를 증명해 VERIFIED로 올렸다 — 편한 숫자가 아니라 참값.
읽었으면 — 직접 다시 만들어 본다.
시작점
M0 · Cedar 인가 — 빈 파일에서 정책을 재구현해 채점기 11/11. 클러스터 불필요, 노트북에서 python만.
첫 채점
클론 후 한 번만 python -m venv .venv → .venv\Scripts\python.exe -m pip install -r requirements-dev.txt. 그 뒤 .venv\Scripts\python.exe labs\m0\grade.py → 빈 정책도 5/8(default-deny로 Deny가 공짜)에서 출발하는 게 첫 교훈. 첫 PASS ~5분.
트랙
무클러스터 M0·M1·M6·M7은 Codespaces 0설치로 즉시 채점 · 클러스터 M2–M5·M8·M9·M10·M11은 한 세션(RAM 6–10GB). 코어 7 + 심화 5.