dashaun/spring-boot-4-0-sbom
GitHub: dashaun/spring-boot-4-0-sbom
这是一个Spring Boot 4的演示项目,用于教学如何生成、暴露和扫描软件物料清单以增强应用安全性。
Stars: 0 | Forks: 0
# Spring Boot 4 — SBOM 生成、暴露与扫描
这是一个侧重于演示的项目仓库,逐步引导您在构建时生成 CycloneDX 软件物料清单,通过 Spring Boot Actuator 将其暴露,将其分离到独立的管理端口,使用 Spring Security 进行保护,并利用 [Trivy](https://trivy.dev) 进行漏洞扫描。
## 快速开始
```
# JDK 25 + 较新版本的 Maven(wrapper 会处理 Maven)
git clone https://github.com/dashaun/spring-boot-4-sbom
cd spring-boot-4-sbom
cd labs/lab-1-baseline && ./mvnw spring-boot:run
```
## 四个实验
| 实验 | 新增内容 | 应用端口 | 管理端口 |
|---|---|---|---|
| [lab-1-baseline](./labs/lab-1-baseline) | 基础的 Spring Boot 4 Web 应用 | 8081 | — |
| [lab-2-sbom](./labs/lab-2-sbom) | CycloneDX 插件 + `/actuator/sbom` 端点 | 8082 | 8082 (相同) |
| [lab-3-mgmt-port](./labs/lab-3-mgmt-port) | 为 Actuator 提供专用管理端口 | 8083 | 9083 |
| [lab-4-secured](./labs/lab-4-secured) | Spring Security:基于 HTTP Basic 认证及角色的 Actuator 访问控制 | 8084 | 9084 |
每个实验都是一个独立的 Maven 项目。在任一实验目录内运行 `./mvnw spring-boot:run` 即可启动。
## 演示流程
1. **构建** — 从 lab-2 开始,在目录内运行 `./mvnw package` 会将 CycloneDX SBOM 嵌入到 jar 包中(位于 `META-INF/sbom/application.cdx.json`)。
2. **暴露** — `/actuator/sbom` 列出所有嵌入的 SBOM;`/actuator/sbom/application` 返回具体的 JSON 内容。
3. **隔离** — lab-3 将 Actuator 端点移至独立端口(`9083`),便于您配置防火墙规则。
4. **保护** — lab-4 添加了 HTTP Basic 认证,访问 `/actuator/sbom` 需要 `ACTUATOR_ADMIN` 角色。
5. **扫描** — 运行 `./scripts/scan-with-trivy.sh` 脚本,它会拉取受保护的 SBOM 并通过 `trivy sbom -` 管道进行扫描。
```
# Lab 4 — 需要认证
http http://localhost:9084/actuator/sbom # → 401
http --check-status -a admin:changeme --print=b GET \
http://localhost:9084/actuator/sbom/application | trivy sbom -
```
## 运行演示幻灯片
```
jwebserver -d "$(pwd)/docs" -p 8000
# 打开 http://localhost:8000
```
## 演示提示
演示者速查表位于**幻灯片文件本身的演讲者备注中**(在 Reveal.js 中按 `S` 键打开演讲者视图)。标题页包含准备事项和初始设置;每个实验对应的标题页则包含其时间分配和可直接粘贴的演示命令。
## 配套文档
- [`CLAUDE.md`](./CLAUDE.md) — 架构说明与构建命令(供 AI 编程助手使用)
- [`AGENTS.md`](./AGENTS.md) — 每个实验的构建/测试矩阵
标签:CycloneDX, DevSecOps, Java应用, JS文件枚举, Maven构建, SBOM, Spring Boot 4, Spring Boot Actuator, Spring Security, TLS抓取, 上游代理, 人工智能安全, 合规性, 安全配置, 硬件无关, 端口隔离, 管理端口, 网络发现, 认证授权, 资产暴露, 跌倒检测, 软件安全, 软件物料清单