cloudsec/verified by code·커리큘럼

읽지 말고, 직접 다시 만들며 배운다

클라우드 보안 통제 6계층을 빈 골격에서 직접 재구현하고, 이미 만들어 둔 검증 하네스가 PASS/FAIL로 자동채점한다. 정답을 베끼는 게 아니라 — 직접 쓰고, 일부러 부수고, 어디가 왜 막는지 손으로 확인한다.


학습 루프 (모듈마다)

개념 읽기골격에 직접 작성(정답 안 봄)자동채점일부러 부수기(예측→확인)구두문답졸업과제

학습자는 labs/<모듈>/ 만 수정 · 원본은 정답지(졸업 후 diff) · 진도 카운터 N / 7(코어 M0–M6), M7·M8·M9·M10·M11은 졸업 후 심화


모듈 — 무엇을 / 무슨 스택으로 / 얼마나

모듈배우는 것스택소요환경
M0인가 정책을 스펙만 보고 작성 — 소유자·이체한도·역할·동결. 과잉허용 잡기가 핵심Cedar~3–6h무클러스터
M1시프트레프트 triage — 심어둔 16개 위반을 0으로. “0 findings”가 아니라 왜 막는지checkov~1.5–3h무클러스터
M2Cilium이 신뢰하는 app 라벨을 파드의 ServiceAccount에 묶기 — 신원 위조 차단VAP + CEL~30–45m클러스터 · RAM 6–8GB
M3default-deny에서 최소권한 홉(외부→web→api→db)만 열기 + egress 잠그기Cilium L3/L7~30–45m클러스터
M4data tier 셸을 커널에서 SIGKILL — 단 정상 바이너리는 살림. 선택성이 핵심(과잉차단도 결함)Tetragon eBPF~20–35m클러스터
M5전송 중(WireGuard)·저장(etcd) 암호화를 직접 실행하고 암호문을 손으로 확인WireGuard+etcd~30–45m클러스터
M6같은 “위임” 문제를 두 모델로 — (A) Cedar ABAC 교집합(confused-deputy 차단) (B) OpenFGA ReBAC 그래프Cedar+OpenFGA~2–4h무클러스터 · Part B Docker
심화 — 졸업 후 선택 (진도 카운터에 미포함)
M7계층이 합성될 때의 모순 — Cilium L7 × Cedar PDP의 shadow/ungated 규칙 탐지(JSON/SARIF/HTML)z3 (SMT)~1–2h무클러스터
M8탐지 ≠ 차단 경계 — M4 규칙이 어디까지 막고 어디서 새는지 정직하게 측정Tetragon~30–45m클러스터
M9침해 가정 — 공격자가 한 파드를 장악했다 치고, 6계층이 블래스트 반경을 어디까지 봉쇄하는지 측정(제로데이 렌즈)Tetragon · 전 계층~25–40m클러스터
M10GitOps 무결성 — drift 자동교정의 윈도우·admission 교착(fighting controllers)·reconciler=새 신원-TCB를 라이브 측정(B7→B8)ArgoCD~40–60m클러스터
M11exec 허용목록 = LSM — 적재-이미지 신원으로(arg0=rename우회·matchBinaries=caller 함정 회피). kind는 BPF-LSM 없어 SKIP(ED3 불변)Tetragon BPF-LSM~30–50m클러스터

모두 비용 $0(로컬 kind) · 무클러스터 랩(M0·M1·M6·M7)은 Codespaces에서 0설치로 즉시 채점


추천 순서 · 선수지식

워밍업 — 클러스터 없이 기본기 M0 → M1

인가(authz-as-code)와 스캔 triage. Codespaces 0설치 또는 Python만으로. M0 첫 PASS ~5분. Cedar 레퍼런스·연습 →

클러스터 세션 — 한 번 띄워 한 번에 M2 → M3 → M4 → M5

신원·네트워크·런타임·암호화. kind를 up → 네 모듈 진행 → down. RAM ~6–8GB.

인가 심화 — 다시 무클러스터 M6

에이전트 위임 ABAC + ReBAC 그래프. Part B(OpenFGA)만 Docker.

심화 선택 M7 / M8 / M9 / M10 / M11

M7 교차계층 형식검증(무클러스터) · M8 런타임 탐지≠차단 측정(클러스터) · M9 침해 가정 블래스트 반경 봉쇄(클러스터) · M10 GitOps 무결성 통제판(클러스터) · M11 BPF-LSM exec 허용목록(클러스터·BPF-LSM 커널).

공통
Python 3.12 — 모든 채점기의 런타임.
무설치 체험
GitHub Codespaces — 무클러스터 랩(M0·M1·M6·M7)이 0설치로 즉시 채점.
클러스터 트랙
추가로 Docker · kind · kubectl · helm · cilium-cli · terraform, Windows는 Git Bash(.sh 스크립트·채점기).

끝나면 손에 남는 것

방어심층
계층마다 실행 테스트로 증명하는 사고 — 슬라이드가 아니라 재현 가능한 PASS/FAIL.
제로트러스트 네트워킹
default-deny · 최소권한 홉 · egress 차단(Cilium L3/L7, eBPF).
policy-as-code
요청 단위 PDP · ABAC · ReBAC를 직접 작성(Cedar, OpenFGA).
어드미션·신원
라벨↔ServiceAccount 바인딩으로 신원 위조 차단(VAP+CEL, SPIFFE).
런타임 eBPF
커널에서 SIGKILL — 그리고 탐지와 차단의 경계를 직접 체감(Tetragon).
공급망
시프트레프트 triage를 직접(M1·checkov) + 이미지 스캔·SBOM·CVE 게이트·시크릿 스캔이 CI에서 막는 방식(trivy·gitleaks). 이미지 서명은 클러스터/ECR opt-in 경로(직접 모듈 아님).
형식검증
유한도메인으로 계층 간 정합성 확인(z3).
AI-에이전트 인가
위임 깊이 · confused-deputy · OWASP Agentic 위협(Cedar agent).

M0부터 시작 codespaces — 무설치 체험 한 장 소개로