KatsaounisThanasis/secure-supply-chain
GitHub: KatsaounisThanasis/secure-supply-chain
一个端到端的安全软件供应链参考实现,从代码检查到 Kubernetes 运行时准入控制,提供零信任制品完整性的自动化纵深防御。
Stars: 0 | Forks: 0
安全软件供应链 🛡️
一个经过强化的端到端 CI/CD 流水线,展示了从提交到运行时的零信任制品完整性。
目录
- [架构](#architecture) - [演示内容](#what-this-demonstrates) - [流水线概览](#pipeline-at-a-glance) - [快速开始](#quickstart) - [验证已签名的镜像(无需安装)](#verify-a-signed-image-no-setup) - [运行本地扫描](#run-the-local-scan) - [运行时强制执行演示(kind 上的 Kyverno)](#demo-runtime-enforcement-kyverno-on-kind) - [威胁模型](#threat-model) - [技术栈](#tech-stack) - [仓库布局](#repository-layout) - [路线图 / 未来工作](#roadmap--future-work) - [作者](#author) - [许可证](#license)
### 运行时强制执行作业:已签名准入 + 未签名拒绝,均在 CI 中得到证明
### GitHub Container Registry 上的已签名镜像
### 原始文本输出(签名、注解、变异的摘要、拒绝错误)
请参阅 [`docs/DEMO_OUTPUT.md`](docs/DEMO_OUTPUT.md) 以获取本地端到端运行的完整捕获终端输出,包括 cosign 验证详细信息、Kyverno `verify-images: pass` 注解和准入拒绝错误消息。
### 其他实时链接
- **GitHub Code Scanning**(Trivy SARIF 发现):[/security/code-scanning](https://github.com/KatsaounisThanasis/secure-supply-chain/security/code-scanning)
- `commit 55fe507` 的 **Sigstore Rekor 透明日志条目**:[search.sigstore.dev?logIndex=1473402910](https://search.sigstore.dev/?logIndex=1473402910)
## 威胁模型
| 威胁 | 缓解措施 | 阶段 | 类型 |
| :--- | :--- | :--- | :--- |
| **依赖项 CVE** | Trivy 扫描 + 强制执行关卡 | 扫描/关卡 | 侦探/预防 |
| **存在漏洞的基础镜像** | 固定基础镜像 + Trivy 扫描 | 构建/扫描 | 预防 |
| **构建时篡改** | SHA 固定的 Actions,临时的 OIDC | 全部 | 预防 |
| **机密信息泄露** | Gitleaks 构建前扫描 | 代码检查 | 侦探/预防 |
| **Dockerfile 反模式** | Hadolint | 代码检查 | 侦探 |
| **镜像仓库受损 / 镜像替换** | Cosign 无密钥签名 + Rekor 透明度 | 签名/验证 | 加密 |
| **身份欺骗** | 身份正则表达式 (Issuer/Subject) | 验证/运行时 | 加密 |
| **未签名镜像执行** | Kyverno 准入控制 | 运行时 | 预防 |
## 技术栈
| 类别 | 工具 |
| :--- | :--- |
| **语言** | Go (应用程序),Bash (脚本) |
| **CI/CD** | GitHub Actions,GitHub Container Registry (GHCR) |
| **容器化** | Docker,kind (Docker 中的 Kubernetes) |
| **安全扫描** | Trivy (CVE/SBOM),Hadolint (Dockerfile),Gitleaks (机密信息) |
| **签名与来源** | Cosign,Sigstore (Fulcio, Rekor) |
| **运行时安全** | Kyverno |
## 仓库布局
```
.
├── .github/
│ └── workflows/
│ └── security.yml # Full CI/CD pipeline definition
├── app/
│ ├── Dockerfile # Multi-stage optimized Dockerfile
│ ├── go.mod # Go dependencies
│ ├── main.go # Application code
│ └── main_test.go # Unit tests
├── docs/
│ └── SECURITY_DESIGN.md # In-depth architectural security documentation
├── k8s/
│ ├── demos/
│ │ ├── fail-unsigned.yaml # Demo manifest (gets rejected)
│ │ └── pass-signed.yaml # Demo manifest (gets admitted)
│ ├── kyverno-policy.yaml # Kyverno ClusterPolicy for signature verification
│ └── namespace.yaml # Target namespace configuration
├── scripts/
│ ├── kind-config.yaml # Local cluster configuration
│ ├── scan.sh # Local linting and scanning wrapper
│ ├── verify-image.sh # Local script to run cosign verifications
│ └── verify.sh # CI verification test script
├── LICENSE # MIT License
├── Makefile # Targets for local builds and the kyverno-demo
└── README.md # This document
```
## 路线图 / 未来工作
* **SLSA Level 3 来源:** 集成 `slsa-github-generator` 以提供完全不可伪造的构建来源证明。
* **摘要固定的基础镜像:** 从标签固定(`golang:1.26.2-alpine`,`alpine:3.20`)过渡到摘要固定(`@sha256:...`)的基础镜像,以实现完全不可变的构建。
* **变更策略:** 实现带有 `mutateDigest` 的 Kyverno 策略,以便在准入时自动将镜像标签解析为摘要。
* **Policy Controller 替代方案:** 评估并配置 Sigstore `policy-controller` 作为 Kyverno 签名验证的替代方案。
* **可观测性:** 引入 Grafana 仪表板,用于历史 Trivy SARIF 数据和集群策略违规情况。
## 作者
由 Thanasis Katsaounis 构建并维护。在 [GitHub](https://github.com/KatsaounisThanasis) 上找到我。
## 许可证
本项目基于 [MIT 许可证](LICENSE) 授权。标签:Chrome Headless, CI/CD安全, Cosign, CycloneDX, DevSecOps, Docker, GHCR, GitHub Actions, gitleaks, Go语言, hadolint, Kubernetes安全, Llama, SARIF, SBOM, Sigstore, SLSA, Web截图, 上游代理, 代码审查, 参考架构, 安全合规, 安全工程, 安全防御评估, 完整性验证, 容器安全, 应用安全, 日志审计, 硬件无关, 程序破解, 结构化查询, 网络代理, 自动化安全, 自动笔记, 请求拦截, 软件供应链安全, 远程方法调用, 镜像签名, 防御深度, 零信任安全