dsaedsae/cloudsec-policy-stack

GitHub: dsaedsae/cloudsec-policy-stack

一个在本地 kind 集群上实现的 Kubernetes 防御纵深安全栈,结合自动评分的重构学习路线,帮助开发者通过亲手实现多层安全控制来学习云原生安全策略。

Stars: 0 | Forks: 0

# cloudsec-policy-stack [![ci](https://github.com/dsaedsae/cloudsec-policy-stack/actions/workflows/ci.yml/badge.svg)](https://github.com/dsaedsae/cloudsec-policy-stack/actions/workflows/ci.yml) [![license: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Open in GitHub Codespaces](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/417a79ee07155931.svg)](https://codespaces.new/dsaedsae/cloudsec-policy-stack) 这是一个运行在免费本地 `kind` 集群上的防御纵深(defense-in-depth)Kubernetes 安全栈,以及一个通过亲手重新实现每一项控制来进行自我评估的学习路线。它是**教育与作品集参考**,而非生产级部署;它既不是法律/金融建议,也不是正式的 FSC 合规性映射。 单个请求将依次通过网络 -> HTTP -> 应用授权 -> 运行时的独立策略层,每一层都由你亲自运行的脚本执行和验证。 ``` a single request: web ──▶ api ──▶ (resource) ───────────────────────────────────────────────────────────────────────── Terraform │ kind cluster + Cilium (CNI), as code │ IaC Identity │ RBAC + label↔SA admission + SPIFFE mutual auth │ who is web/api Cilium L3 │ default-deny in+out; only web→api→db; egress locked │ no exfil Cilium L7 │ only GET/POST on /accounts/* reach api (Envoy) │ path/method Cedar │ api PDP authorizes every call: owner? limit? role? │ authz-as-code Tetragon │ eBPF runtime: SIGKILLs ALL exec in the db pod (0-exec)│ detect+prevent Data │ WireGuard in-transit + Secret encryption at-rest │ protect the data ───────────────────────────────────────────────────────────────────────── checkov │ shift-left scan of Terraform + K8s (CI gate, 0 fail) │ + gitleaks ``` ## 亲自动手实现 这是本 repo 的核心。每一项控制都附带可执行的验证,而[重构路线](labs/README.md)将验证器翻转为**自动评分器**:它将某项控制留作一个空白骨架,你仅根据规范重新编写它,现有的测试框架就会通过 PASS/FAIL 进行评分。这不是在抄写标准答案,而是亲手编写并检查哪里出了错。 核心路线为 **M0–M6**,进阶为 **M7–M11**。无集群模块(M0·M1·M6·M7)仅需 Python;集群模块(M2–M5·M8·M9·M10·M11)通过 `up` -> `down` 一次会话启动本地栈来运行。 | 模块 | 控制 | 集群 | |------|------|----------| | M0 | Cedar 授权:所有者 / 限制 / 角色 / 冻结 | 不需要 | | M1 | 左移扫描分类(triage) | 不需要 | | M2 | 身份:标签 <-> ServiceAccount admission | 需要 | | M3 | 网络:Cilium L3/L7/egress | 需要 | | M4 | 运行时:Tetragon 拦截 shell (eBPF) | 需要 | | M5 | 加密:WireGuard + etcd 静态加密 | 需要 | | M6 | 代理委托 + ReBAC 图 | 不需要 | | M7 (进阶) | 跨层一致性 (formal, z3) | 不需要 | | M8 (进阶) | 运行时 kill 边界 (detection!=prevention) | 需要 | | M9 (进阶) | 假设泄露 · 爆炸半径封锁 (零日视角) | 需要 | | M10 (进阶) | GitOps 完整性: drift 自动修正 · reconciler=新身份-TCB | 需要 | | M11 (进阶) | BPF-LSM exec 允许列表:加载时镜像身份 (arg0/caller 陷阱) | 需要 | 请从[环境准备 (SETUP)](labs/SETUP.md)开始查看并进入 [M0](labs/m0/README.md) —— 从空白的 Cedar 策略到**首次评分约需 5 分钟**,完成 M0(11/11)需要 **~3–6h**,且不需要集群。如果你想先从概念读起,[概念实验室](docs/)会优先讲解相同的控制。 ## 技术栈构成 - **IaC** — 使用声明式 Terraform 管理集群和 Cilium CNI。在 CI 中执行 `terraform validate`。 - **零信任网络 (Cilium / eBPF)** — 默认拒绝 ingress·egress,仅允许最小权限的跳板。`web->api` 使用 L7 (Envoy),因此只有账户 API 能够到达,egress 被锁定到下一跳 + DNS,从而防止被攻陷的 pod 接触互联网·云元数据·API server。 - **授权即代码 (Cedar)** — `api` 是一个在每个请求上调用 Cedar 的 PDP:所有者检查、转账限制、拒绝冻结账户 (forbid)、角色层级。可移植到 Amazon Verified Permissions。 - **运行时 (Tetragon / eBPF)** — 在内核中对 db 层的*所有* exec 执行 SIGKILL 的 **zero-exec** `TracingPolicy`(数据存储层完全不需要执行 exec — 仅保留 PID1)。在 M4·M8 实验中,你将亲手编写和测量可选的 shell-kill 原语及其绕过->zero-exec 的过程。 - **身份** — 每层独立的 ServiceAccount,将 `app` 标签绑定到 SA 的 `ValidatingAdmissionPolicy`,以及作为工作负载身份标准的 SPIFFE 双向认证(这是一种手动验证的 configured 状态,而非持续运行的套件)。 - **数据** — WireGuard pod 间传输中加密 + etcd 内 Secret 静态加密。 - **CI 门控** — GitHub Actions 运行 Cedar 测试·checkov·`terraform validate`·gitleaks,而 kind 作业启动该栈以重新执行实时验证。 ## 快速开始 **免安装(浏览器):** GitHub **Code ▸ Codespaces ▸ Create** — 无集群实验(M0/M1/M6/M7)将实现 0 安装即时评分(使用 `make progress` 查看进度)。如用于企业内部培训,请参阅[培训指南](docs/using-for-training.md)。 前置条件(本地):Python 3.12。集群路径还需要 Docker、`kind`、`kubectl`、`helm`、`cilium-cli`、`terraform`,以及 Git for Windows(.sh 脚本·评分器是在 Git Bash 中运行,而不是在 PowerShell 中)。 ``` # Windows (PowerShell) python -m venv .venv .venv\Scripts\python.exe -m pip install -r requirements-dev.txt .venv\Scripts\python.exe cedar\authz.py # 인가 단위테스트, 클러스터 불필요 -> 8/8 powershell -File scripts\up.ps1 # kind + Cilium 프로비저닝, api 빌드, 배포 bash scripts/verify.sh # (Git Bash) 계층들을 라이브로 증명 powershell -File scripts\down.ps1 # 정리 ``` ``` # Linux / macOS / CI python -m venv .venv && ./.venv/bin/python -m pip install -r requirements-dev.txt ./.venv/bin/python cedar/authz.py bash scripts/up.sh && bash scripts/verify.sh && bash scripts/down.sh ``` ## 工具 — `cross-layer-lint` 它超越了单独验证 6 个层级的做法,旨在查看**当各层级组合在一起时**,策略是否会相互矛盾。它通过 z3 有限域模型对 Cilium L7(哪些路径是*可达*的)和 Cedar PDP(哪些行为是*已授权*的)进行交叉检查,从而分类出两种缺陷: - **shadowed(dead) 规则** — Cedar 允许,但 L7 阻止了该路径,导致通过 `web->api` 无法到达的 permit(这是有意的带外策略,还是意外造成的?— 需要审查) - **ungated 路径** — 可通过 L7 到达,但没有 Cedar 门控的实际缺口 -> **exit 1** 输入:Cedar 判定来自 `cedar/`(cedarpy,实时),路由级门控来自 `app/api/main.py` AST(实时)。L7 可达性是**手动转译** `k8s/netpol.yaml` 中 HTTP 块的规则 — 它不会解析文件本身(诚实范围:hand-translation,非实时数据平面)。 ``` make report # -> outputs/cross-layer/report.{html,json,sarif} python formal/cross_layer.py # 텍스트 리포트 (ungated일 때만 exit 1) python formal/cross_layer.py --sarif x.sarif # GitHub code scanning용 SARIF 2.1.0 python formal/cross_layer.py --open-auditlogs # 반증: L7 경로를 열면 shadow가 사라진다 ``` 输出 3 种格式 — **HTML** 用于人类阅读的报告,**JSON** 用于程序集成,**SARIF 2.1.0** 用于上传至 GitHub code scanning。(`make site` 也将 HTML 报告包含在部署包中。) | 工具 | 检查内容 | 关系 | |------|---------|------| | kubescape · trivy | misconfig · CVE · RBAC 图 | 单一层级 — 被本工具补充 | | kubesplaining | RBAC 权限图 | 〃 | | **cross-layer-lint** | L7 可达性 × Cedar 授权的**组合** | 跨层 shadow/ungated | **诚实范围:** 当前域是对演示 3 个动作的**有限域检查**,因此 z3 仅*演示了该技术*,它并不是针对任意集群的通用扫描器。Cedar 判定是具体值(cedarpy),而无限域扩展则是 [cedar-policy-symcc](https://github.com/cedar-policy/cedar)(编译为 SMT 的 Cedar 符号编译器)的正统方法(路线图)。它揭示的不是 CVE,而是*需要验证的层级间交互* — 由于单/双层验证已是公开技术,其贡献度诚实地处于其下。 ## 状态 - `scripts/verify.sh` — 在 kind + Cilium + Tetragon 上进行实时验证 21/21(本地·CI 通用)。 - Cedar — 核心授权 8/8,代理委托 17/17(confused-deputy + ASI08 委托深度 cap·逐跳 clamp·来源门控)。ReBAC — 11/11 (`fga model test`)。 - checkov — 452 pass / 0 fail / 5 项已记录的 skip。 - MLS 可验证性覆盖率 — 82.5% (33/40);缺口在 [`docs/mls-coverage.csv`](docs/mls-coverage.csv) 中公开。 各层级的详细信息·验证说明·路线图可在 [`docs/`](docs/) 中找到(在本地通过 `pip install -r requirements-docs.txt && mkdocs serve` 也可作为网站查看)。 ## 结构 ``` terraform/ kind + Cilium + Tetragon (helm) app/api/ FastAPI Cedar PDP (api 이미지) cedar/ schema + policies + 단위테스트 k8s/ app, netpol, tracingpolicy, probes labs/ 재구현 트랙 (M0–M11) docs/ 개념 랩 + 매핑 scripts/ up / verify / scan / down (.ps1+.sh) .github/ CI 워크플로 + kind 설정 ``` ## 注意事项 由于是本地 `kind` 集群,因此没有云成本。Cedar 策略可移植到 Amazon Verified Permissions,Cilium 策略可移植到任意 Cilium 集群(EKS / GKE / AKS)。`X-User` 身份是未经验证的演示输入(带有防止注入的字符集检查),在实际系统中,principal 将从已验证的 JWT `sub` 中派生。实体是预烧录至镜像中的静态 fixture。许可证:[MIT](LICENSE)。 商标声明:Cilium·Hubble·Tetragon(Isovalent/CNCF)、Cedar·Amazon Verified Permissions·AWS(Amazon)、Kyverno·OpenFGA·SPIFFE(CNCF)、WireGuard(Jason A. Donenfeld)等本文中提及的第三方产品·商标均为各自所有者的资产。本项目作为学习用作品集,与它们没有任何隶属关系,也不存在任何保证或赞助关系。
标签:Docker镜像, JSONLines, 后端开发, 子域名突变, 教学实验, 纵深防御, 请求拦截, 逆向工具, 零信任