
isms-builder v1.37.2
自托管的信息安全管理体系 — ISO 27001、NIS2、GDPR/DSGVO、BSI IT-Grundschutz

ISMS Builder
自托管信息安全管理体系 — 开源,无需云端
⚠️ 安全警告:假冒仓库与分发恶意软件的副本
ISMS Builder 没有任何打包的"发行版"、安装程序或可下载的 ZIP 文件 — 唯一 合法的来源是本仓库,即以纯源代码形式直接从 GitHub 克隆或下载。 我们已知至少有一个冒充本项目的恶意仓库(伪造 README、伪造"下载"按钮指向伪装成截图的 ZIP,其中包含 Windows 恶意软件加载器 —
.cmd→.exe→ Lua-DLL 载荷链)。 请勿从本仓库以外的任何地方下载或运行任何 "isms_builder" ZIP/安装程序/exe。 如果您发现冒充本项目的可疑仓库或网站,请提交 issue 或发起 discussion,以便我们进行标记。
状态:积极开发中 — 尚未完工。 核心模块已可正常使用并投入实际运行,但部分功能尚不完整, 平台仍在持续发展。非常欢迎贡献、反馈和真实环境测试 — 这正是本项目开源的原因。
什么是 ISMS Builder?
ISMS Builder 是一个用于管理信息安全管理体系(ISMS)的自托管 Web 平台。 它覆盖完整的合规生命周期 — 从方针编写到审核证据 — 适用于 ISO 27001:2022、NIS2、 GDPR/DSGVO、BSI IT-Grundschutz 及其他框架。
无需云端。无 SaaS 费用。您的数据保留在您自己的服务器上。
专为需要真正 ISMS 工具、又不想签五位数厂商合同的中小企业、IT 团队和顾问而设计。
预期用途与范围
本项目最初是为一位置身实际工作的 ISMS 从业者打造的工作工具,并由此发展而来。它之所以 开源,是因为这项工作可能对他人有用 — 而不是因为它是一个伪装成开源产品的商业项目。 把这一点讲清楚,有助于您判断它是否适合您的情况。
**它的设计目标。**一个规模较小的 ISMS 团队 — 通常只有一个人,有时也就几个人 — 负责编写 和维护管理体系的文档:方针、风险、资产、控制措施、证据。需要账号的人数预计会一直很少。 无需账号也能触达大量受众:方针确认以基于令牌的链接发送,收件人无需登录即可阅读和确认文档, 也不会出现在任何用户列表中。
**它对你的要求。**ISMS Builder 是自托管的,由此带来的一切都归您负责:部署、TLS、加固、 备份、更新、访问控制,以及您在其中存储任何数据所对应的数据保护义务。本项目提供一套合理的 默认配置,而不是托管服务。
**它不是什么。**没有托管式 SaaS 服务,没有商业支持合同,也没有服务水平协议。它不是多租户 托管产品。它不会让您获得任何标准的认证,也不是法律建议 — 它帮助您组织和证明相关工作, 但评估仍由您和您的审核员负责。
**谁在维护它。**一个人,利用全职工作之余的时间。Issue 和讨论都会被阅读并回复,通常几天 之内;安全报告会被优先处理。功能请求非常欢迎,并确实会影响路线图,但它们要与有限的业余 时间竞争。如果您的组织依赖固定的时间表或保证的响应,那么商业厂商是诚实的建议 — 这不是 回避本项目的理由,只是需要现实地做好规划。
截图
| 登录 | 仪表盘 |
|---|---|
![]() | ![]() |
| 适用性声明 | 风险管理 |
|---|---|
![]() | ![]() |
| GDPR 与数据保护 | 资产管理 |
|---|---|
![]() | ![]() |
| 指南与文档 | 报告 |
|---|---|
![]() | ![]() |
运行
npm start并打开https://localhost:3000,即可在本地探索完整的演示数据集。
功能概览
| 模块 | 描述 | 适用标准 |
|---|---|---|
| 方针管理 | 模板增删改查、版本管理、生命周期(草稿 → 评审 → 已批准 → 已归档)、空间层级、附件 | ISO 27001 §5 |
| 适用性声明 | 8 个框架、313 项控制措施,支持内联编辑、差距分析、交叉映射 | ISO 27001 A / BSI / NIS2 / EUCS / EUAI / ISO 9001 / CRA |
| 风险管理 | 风险登记册、处理计划、审核员角色 | ISO 27001 §6.1 |
| 安全目标 | 带进度条的 KPI 跟踪、日历集成 | ISO 27001 §6.2 |
| GDPR 与隐私 | VVT(处理活动目录)、AV 合同(委托处理协议)、DSFA(数据保护影响评估)、TOMs(技术与组织措施)、DSAR 队列、72 小时计时器、带邮件提醒的删除日志 | DSGVO Art. 13–35 |
| 资产管理 | 资产登记册、可编辑资产类型、保护目标(CIA + 真实性)及依赖继承、分级分类、EoL(生命周期结束)跟踪 | ISO 27001 A.5.9–5.12 |
| BCM / BCP | 业务影响分析、连续性计划、演练 | ISO 27001 A.5.29–5.30 / NIS2 |
| 培训记录 | 培训目录、完成情况跟踪、证书上传 | ISO 27001 A.6.3 |
| 供应商管理 | 供应商登记册、审核排程、风险评估 | ISO 27001 A.5.19–5.22 |
| 法律与合同 | 合同、保密协议(NDA)、隐私政策、到期日历 | |
| 事件收件箱 | CISO 收件箱 + 公开举报表单(无需登录) | NIS2 / BSI |
| 治理 | 管理评审、行动跟踪 | ISO 27001 §9.3 |
| 报告 | 合规矩阵(控制措施 × 实体)、差距报告、评审周期、CSV 导出 | |
| 审核发现 | 发现登记册(IST→SOLL→风险→建议)、行动计划、严重性/状态跟踪、FIND-YYYY-NNNN 引用 | ISO 27001 §9.2 |
| 可追溯性 | 每条记录均链接到 SoA 控制措施与方针文档 — 双向关联 | |
| 语义搜索 | 通过 Ollama(nomic-embed-text)进行本地 AI 语义搜索,并提供关键词搜索回退 | |
| 多实体 | 企业结构树、控制措施与方针的按实体适用性 | |
| 多语言界面与演示数据 | 完整界面与演示内容支持 🇩🇪 德语 / 🇬🇧 英语 / 🇫🇷 法语 / 🇳🇱 荷兰语;管理员可配置可用语言 |
⚠ 重要:ISO 控制措施需要管理员手动安装
ISO 27001:2022、ISO 9000:2015 和 ISO 9001:2015 是国际标准化组织(ISO,© ISO)发布的 受版权保护的标准。其控制措施定义(标题、描述、要求文本)未包含在本软件中,未经有效的 ISO 许可不得重新分发。
这在实践中意味着什么: ISO 27001、ISO 9000 和 ISO 9001 的 SoA 模块在交付时不包含控制措施内容。 管理员在启用这些框架之前必须手动导入控制措施:
- 从 iso.org 或授权的国家标准机构获取标准的有许可副本
- 准备一个包含控制措施定义的 JSON 文件(格式见
scripts/import-iso-controls.sh文档) - 运行导入脚本:
bash scripts/import-iso-controls.sh path/to/iso-controls.json - 重启 ISMS Builder 服务器
开箱即用的框架(无需 ISO 许可): BSI IT-Grundschutz、欧盟 NIS2、EUCS、欧盟《人工智能法案》和 CRA 基于公开可用的 欧盟立法和德国联邦出版物,已完整预装。
在未获得相应标准有效许可的情况下运行 ISO 框架模块,其全部责任由运营者承担。 ISMS Builder 项目及其贡献者不对未经许可使用受 ISO 保护的内容承担任何责任。
快速开始
git clone https://github.com/coolstartnow/isms-builder.git
cd isms-builder
npm install
cp .env.example .env # set JWT_SECRET to a long random string
npm start # http://localhost:3000
使用 [email protected] / adminpass 登录。首次登录时,系统会提示您选择演示数据语言
(🇩🇪 德语 / 🇬🇧 英语 / 🇫🇷 法语 / 🇳🇱 荷兰语)或从空系统开始。请立即修改管理员密码。
用于 HTTPS 生产环境:
# .env
JWT_SECRET=your-very-long-random-secret
STORAGE_BACKEND=json
SSL_CERT_FILE=/etc/ssl/certs/your.crt
SSL_KEY_FILE=/etc/ssl/private/your.key
**用演示数据评估完后准备上线?**请运行交互式生产准备工具,而不是全新安装 — 它会按模块 (或一次性)清除演示/测试内容,因此您已经录入的真实数据(如风险、资产)无需重新录入:
bash stop.sh
node scripts/prepare-production.js
bash start.sh
在任何更改之前,它始终会创建备份(data.bak.<timestamp>/,位于您的 data/ 目录旁边),
并且绝不会修改 STORAGE_BACKEND — 这与应用内的"演示重置"管理员操作不同,后者面向演示实例,
并且出于历史原因仍会切换到 sqlite(参见 Issue #42)。
Docker
docker compose up -d --build
# App runs at http://localhost:3000
系统要求
- Node.js 18+(已测试:18、20、22)
- npm 9+
- (可选)Docker + Docker Compose
- (可选)Ollama 用于本地 AI 语义搜索
配置(.env)
| 变量 | 默认值 | 说明 |
|---|---|---|
JWT_SECRET | (必填) | JWT 签名密钥 — 请使用 32 个以上随机字符 |
PORT | 3000 | HTTP/HTTPS 监听端口 |
STORAGE_BACKEND | json | json(开发/演示)或 sqlite(生产) |
SSL_CERT_FILE | — | TLS 证书路径 → 启用 HTTPS |
SSL_KEY_FILE | — | TLS 私钥路径 |
DATA_DIR | ./data | 覆盖数据目录(Docker 卷) |
SMTP_HOST | — | 用于邮件提醒的 SMTP 服务器 |
SMTP_PORT | 587 | SMTP 端口 |
SMTP_USER | — | SMTP 用户名 |
SMTP_PASS | — | SMTP 密码 |
SMTP_FROM | — | 通知的发件人地址 |
架构
server/
index.js — Express app setup, router mounts
auth.js — JWT auth, RBAC ranks, session
routes/ — 17 Express route modules (one per domain)
db/ — Data stores (jsonStore / sqliteStore / orgSettingsStore / …)
ai/ — Semantic search (embedder, embeddingStore, lexicalSearch)
reports.js — Report generation logic
ui/
index.html — SPA shell (Atlassian Dark Theme)
app.js — All render functions, ~6000 lines vanilla JS
style.css — CSS variables, dark theme
data/ — JSON files / SQLite DB (gitignored)
docs/
ISMS-build-documentation.md — Full architecture reference
architecture/ — C4 diagrams, data model, OpenAPI 3.0.3 spec
tests/ — Jest + Supertest (176 tests, --runInBand)
- **认证:**JWT Cookie(
sm_session)、bcrypt 密码、TOTP 双重认证(可在全组织强制启用) - RBAC:
reader→editor/dept_head→contentowner/auditor→admin - **持久化:**JSON 文件(默认/演示)或通过
better-sqlite3使用 SQLite - **AI:**可选的本地 Ollama(nomic-embed-text);始终提供关键词搜索作为回退方案
- **审计日志:**记录所有创建/更新/删除/登录操作,可筛选、可导出
有关 C4 图、完整数据模型和 OpenAPI 3.0.3 规范(80+ 端点),请参阅 docs/architecture/。
运行测试
注意:
tests/目录下的测试套件是作者个人的开发测试,随项目一起发布以保证透明度。 它不是应用程序本身的组成部分,也不是运行应用所必需的。测试覆盖内部 API 行为,并使用 仅存在于隔离测试环境中的硬编码测试凭据 — 它们与任何生产或演示数据无关。
npm test # runs all 423 tests
npm run preflight # exactly what CI gates on (tests + pinning + audit)
npm test -- --verbose # with test names
测试使用隔离的临时目录 — 不会触碰生产数据。
参与贡献
非常欢迎贡献!请参阅 CONTRIBUTING.md 了解:
- 开发环境搭建(5 分钟即可运行首个测试)
- 代码风格与约定
- 如何提交高质量的 issue 或 PR
**发现了安全问题?**请勿公开提交 issue — 请使用 私有漏洞报告。 SECURITY.md 描述了范围、安全港条款以及您可以合理预期的内容。
适合新手的议题在问题跟踪器中标记为 good first issue。
路线图
| 状态 | 功能 |
|---|---|
| ✅ 已完成 | 语义搜索(Ollama / nomic-embed-text) |
| ✅ 已完成 | SQLite 后端、Docker、CI/CD |
| ✅ 已完成 | GDPR 删除日志邮件提醒 |
| ✅ 已完成 | 多语言演示包(德语 / 英语 / 法语 / 荷兰语) |
| ✅ 已完成 | 带行动计划的审核发现模块(V 1.37.2.0) |
| ✅ 已完成 | 法语/荷兰语指南翻译 + 管理员语言配置(V 1.37.2.0) |
| ✅ 已完成 | MariaDB/MySQL 后端(STORAGE_BACKEND=mariadb,V 1.37.2.1) |
| ✅ 已完成 | 扫描器 → 风险草稿(Greenbone/OpenVAS XML + PDF 导入,V 1.37.2.0) |
| ✅ 已完成 | 方针确认 — 员工以数字方式确认方针并保留审计追踪(V 1.37.2.0) |
| ✅ 已完成 | 指南增删改查 — 创建、编辑和上传自己的文档(V 1.37.2.0) |
| ✅ 已完成 | 指南搜索 — 跨类别全文搜索并显示摘要(V 1.37.2.0) |
| ✅ 已完成 | 资产保护目标 — CIA + 真实性(1–4)、依赖关系及 BSI 最大原则继承(V 1.37.2.0) |
| ✅ 已完成 | NIS2 第 21 条治理检查清单(30 项)及第 23 条报告截止日期自动提醒(V 1.37.2.0) |
| 🔜 下一步 | AI 方针助手 — Ollama 根据标题 + 框架起草方针内容 |
| 🔜 下一步 | 定时报告 — 通过邮件发送每周/每月合规报告 |
| 🔜 下一步 | PostgreSQL 后端 |
| 🔜 下一步 | 审计日志异常检测(LLM 批处理) |
| 🚀 后续 | 定量风险评分(€ 数值,受 FAIR 启发) |
| 🚀 后续 | 审核员协作门户 — 为审核员提供外部只读访问 |
| 🚀 后续 | ownCloud / Nextcloud 集成 |
| 🚀 后续 | 方针差距分析(LLM) |
| 🏁 V 2.x | 可配置的指南类别 — 管理员可定义自定义类别(例如工作流、组织文档) |
关于作者
Claude Hecker 在 IT 领域工作了 35 年以上。在担任 CIO 约 15 年后,他转任 CISO 和数据保护官 (DSO/DSB)。在其职业生涯中,他曾为一家欧洲大型企业设计和实施了企业级 IT 基础设施和广域网连接 (VPN、MPLS)— 负责跨多个站点和司法管辖区的可靠、安全运营。
ISMS Builder 正是直接源于这段经历:在真实世界中、经历真实审核、承受真实监管压力的情况下构建和 维护合规的 ISMS。这个工具反映的是从业者的实际需求 — 而不是产品经理臆想的需求。
为什么开源? 中小企业理应无需五位数的许可证费用即可使用合适的 ISMS 平台。无论您选择哪种工具,上手成本都 客观存在 — 但这一成本不应再叠加供应商锁定或数据离开自有基础设施的代价。本项目代表着软件自由, 以及"您的合规数据属于您自己"这一原则。
标准引用声明
本软件引用已发布标准中的控制措施标识符和简短标题,仅用于互操作性和合规管理目的。
- ISO/IEC 27001、ISO 9000、ISO 9001 是国际标准化组织(ISO)发布的标准。这些标准的
控制措施定义未包含在本软件发行版中 — ISO 版权不允许重新分发控制措施文本。用户必须
自行提供 JSON 文件(参见上文和
scripts/import-iso-controls.sh)。标准文本必须从 ISO 或授权的国家分销商处获取。 - BSI IT-Grundschutz 材料由德国联邦信息安全办公室(BSI)发布,可在 bsi.bund.de 免费获取。
- **NIS2、CRA、EUCS、欧盟《人工智能法案》**是欧盟立法法案,可通过 eur-lex.europa.eu 公开获取。
许可证
Copyright (C) 2026 Claude Hecker
本程序是自由软件,采用 GNU Affero 通用公共许可证 v3.0 授权。
如果您以网络服务形式运行修改版本,必须向该服务的用户提供完整源代码(AGPL §13)。
本项目包含采用 MIT、BSD-2-Clause 和 Apache-2.0 许可证的第三方组件。有关完整的署名和许可证 文本,请参阅 THIRD-PARTY-LICENSES.md。






