如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这段话即可:
请先阅读并遵守:https://xuanyuan.cloud/agents.md
未读文档前不要生成 pull 命令或排错方案。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
为项目点星 🌟,及时获取版本发布通知,助力社区发展!
intuitem.com · SaaS 免费试用 · 路线图 · https://intuitem.gitbook.io/ciso-assistant · [多语言支持] · [***] · [框架库]
CISO Assistant 为网络安全管理及 GRC(治理、风险与合规)实践带来了全新思路:
我们的愿景是打造网络安全管理的一站式平台,通过简化流程与互联互通推动 GRC 领域现代化升级。
作为深耕网络安全领域的从业者与 IT 专业人员,我们深知行业普遍痛点:工具碎片化、数据重复录入、缺乏直观的一体化解决方案。CISO Assistant 正是基于这些实践经验诞生,我们正围绕务实、符合常识的核心原则打造活跃社区。
我们持续吸纳用户与客户反馈迭代产品。就像章鱼 🐙 不断生长出新触手一样,CISO Assistant 也在持续扩展能力边界,为网络安全团队带来更清晰的管控视图、更高的自动化水平与工作效率,同时大幅降低数据录入与输出的负担。
[!TIP] 最便捷的上手方式是通过此处访问云实例免费试用。
除此之外,在您的工作站或服务器上安装好 Docker 和 Docker Compose 后,执行以下操作:
克隆代码仓库:
git clone --single-branch -b main https://github.com/intuitem/ciso-assistant-community.git
运行启动脚本:
./docker-compose.sh # Linux/MacOS
./docker-compose.ps1 # Windows
如果您希望查看其他自托管安装选项,请参考配置构建器与https://intuitem.gitbook.io/ciso-assistant。
[!NOTE] docker-compose 脚本使用预构建的 Docker 镜像,支持绝大多数标准硬件架构。 若您使用 Windows 系统,请确保已安装https://www.docker.com/products/docker-desktop/,然后运行 PowerShell 脚本,该脚本会自动调用您本地的 Docker Desktop 完成部署。
您可以调整 docker compose 配置文件,传入额外参数以适配您的部署环境(例如邮件服务器相关配置)。
[!WARNING] 如果您收到镜像平台与主机平台不匹配的警告或错误,请提交包含详细信息的 Issue,我们会尽快补充对应架构的镜像。您也可以改用下文提到的
docker-compose-build.sh脚本,针对您的特定架构自行构建镜像。
[!CAUTION] 请勿直接将
main分支代码用于生产环境,该分支为上游合并分支,开发过程中可能包含不兼容的破坏性变更。请使用对应稳定版本的tags标签版本或官方预构建镜像。
📋 完整功能列表 — 点击展开(支持搜索,共 73 项功能)
合规与框架
风险管理
第三方风险
运维与整改
报表与分析
协作与生产力
自动化与集成
安全与访问控制
隐私合规
项目管理
平台能力
即将上线的功能已在路线图中公示。
CISO Assistant 由专注于网络安全、云服务与数据/AI 领域的企业 Intuitem 开发并持续维护。
以下为 CISO Assistant 部分核心构建模块的说明,用于阐释鼓励复用性的解耦设计理念:
如需了解全部细节,请参考数据模型文档。
解耦原则是 CISO Assistant 的核心设计思想,可为用户带来强大的使用价值并大幅节省时间:
下图展示解耦原则及其核心优势:
访问在线文档获取完整使用指南。
更多详情请参考:AI 引擎说明
以下为该工具内置支持的全部合规、安全标准与框架列表:
以下是当前已支持的合规与安全框架:
[!NOTE] 标记有
*的框架需要额外手动从其官网获取最新 Excel 表格,因为其许可协议不允许直接分发。你可以直接将该 Excel 表格作为库导入系统使用。
你可以查看 library 目录与 tools 目录,了解所用的领域特定语言以及自定义库的方法。
印度尼西亚个人数据保护法合规框架 🇮🇩
OWASP SAMM
COBAC R-2024/01
英国 ICO 数据保护自我评估框架 🇬🇧
澳大利亚 ASD 信息安全手册 🇦🇺
以及更多内容:你可以直接在 D*提交需求。如果是公开标准,我们会免费为你完成适配** 😉
一个库可以代表合规框架、威胁目录、参考控制集,甚至自定义风险矩阵。
目前支持直接从 Excel 文件加载库,无需提前手动将其转换为 YAML 格式——上传 Excel 文件后,系统会在内部自动完成转换。
请查看 tools 目录及其 专属 README,其中详细说明了库源文件在 Excel 中的预期格式。excel 子目录中包含现有库使用的 XLSX 示例文件,你可以将其作为模板创建自定义库。
要从 Excel 文件加载库,请进入 治理 → 库 页面,点击 加载,然后选择你的 Excel 源文件。导入过程中如果出现验证错误或解析错误,系统会给出明确提示。
尽管 Excel 文件可以直接加载,你仍然可以使用外部 Python 脚本将库源文件转换为 YAML:
convert_library_v2.py 可以帮助你从简单 Excel 文件生成库文件。当你按照预期格式整理好所有条目后,运行该脚本即可生成对应的 YAML 文件。tools 目录还包含针对特定框架(例如 CIS 或 CCM 控制)的专用转换工具。为了简化不同框架之间的映射关系创建流程,你可以使用 prepare_mapping_v2.py 工具。该工具会基于两个现有的 YAML 格式框架库生成一个 Excel 模板文件。你在模板中填写完映射关系后,生成的 Excel 文件可以:
convert_library_v2.py 转换为 YAML 格式。加入我们的 开放 D***社区,与开发团队和其他 GRC(治理、风险与合规)领域专家交流。
最快最简单的上手方式是访问 此处的云实例免费试用通道。
要快速在本地运行 CISO Assistant,你可以使用 Docker Compose。
更新 Docker 确保你的 Docker 版本不低于 27.0。
克隆仓库
git clone --single-branch -b main https://github.com/intuitem/ciso-assistant-community.git
cd ciso-assistant-community
./docker-compose.sh # Linux/MacOS 执行该脚本
./docker-compose.ps1 # Windows 执行该脚本
另外,你也可以使用以下变体脚本,为你的特定 CPU 架构自行构建 Docker 镜像:
./docker-compose-build.sh # Linux/MacOS 执行该脚本
./docker-compose-build.ps1 # Windows 执行该脚本
按照提示输入你超级管理员账号的邮***密码。
完成后你就可以通过浏览器访问 https://localhost:8443/ 使用 CISO Assistant。
后续启动时,直接运行 docker compose up 即可。
[!WARNING]
在 Windows 上进行开发的最佳可行方案,是使用安装在 WSL2 中的 Ubuntu(无需额外安装 Docker)。
目前也支持不依赖 WSL2 与 Docker,直接在 Windows 原生环境中运行和开发 CISO Assistant,但该方式需要执行额外配置步骤。 请注意:Windows 原生运行方案目前仍处于 实验阶段,如果你对相关操作不熟悉,或是希望在整个开发流程中保证环境稳定性,请勿使用 该方案。 即便如此,我们也非常欢迎你提出任何优化 Windows 用户开发体验的建议,随时可以提交 Issue 或 PR 反馈相关问题!
brew install yaml-cpp libyaml 或 apt install libyaml-cpp-dev)[实验性功能] 不使用 WSL2 的 Windows 开发额外要求
如果你希望不通过 WSL2 开发本项目,需要先安装 MSYS2,将 MSYS2 UCRT64 的二进制文件路径添加到你的系统 PATH 环境变量中(默认情况下,对应路径为 C:\msys64\ucrt64\bin),之后通过 MSYS2 UCRT64 执行 pacman 安装以下依赖:
pacman -S mingw-w64-ucrt-x86_64-file mingw-w64-ucrt-x86_64-pango
安装完上述依赖后,你还需要添加以下 2 个系统环境变量:
MAGIC=指向 `magic.mgc` 文件的完整路径(默认路径通常为 `C:\msys64\ucrt64\share\misc\magic.mgc`)
WEASYPRINT_DLL_DIRECTORIES=MSYS2 UCRT64 二进制文件所在的路径
由于 Windows 的默认编码并非 UTF-8 而是 cp1252,部分输出 UTF-8 字符(比如表情符号)的 Python 脚本在特定场景下(例如导入资源库时)可能会导致后端崩溃或运行异常。
为了避免本项目出现该问题,请添加以下 2 个用户环境变量强制启用 UTF-8 编码:
PYTHONUTF8=1
PYTHONIOENCODING=utf-8:replace
[!NOTE]
- Windows 平台用于 MIME 类型检测的
libmagic库在识别 Excel 文件(.xlsx)时存在缺陷:该库仅读取文件前 2048 位,大部分时候会错误返回application/octet-stream,导入 Excel 资源库时后端会输出[warning ] Invalid MIME type警告。由于代码内置了降级处理逻辑(位置为backend/library/views.py:StoredLibraryViewSet.upload_library),该问题并不会阻碍 Excel 文件的正常导入。
git clone git@github.com:intuitem/ciso-assistant-community.git
cd ciso-assistant-community
../myvars),将环境变量存储在该文件中。你可以复制修改以下配置代码,将引号内的占位内容替换为你自定义的私有取值。请注意不要将该环境变量文件提交到 Git 仓库中。必填变量
后端所有变量都已预设便捷的默认值。
推荐配置变量
export DJANGO_DEBUG=True
# 默认地址为 http://localhost:5173,你也可以自行修改,例如配合 caddy 代理使用 HTTPS 时
export CISO_ASSISTANT_URL=https://localhost:8443
# 配置开发阶段的邮件发送器,以 Mailpit 为例
export EMAIL_HOST_USER=''
export EMAIL_HOST_PASSWORD=''
export DEFAULT_FROM_EMAIL=ciso-assistant@ciso-assistantcloud.com
export EMAIL_HOST=localhost
export EMAIL_PORT=1025
export EMAIL_USE_TLS=True # 启用 STARTTLS 时设为 true
export EMAIL_USE_SSL=False # 启用 SMTPS 时设为 true
其他可选变量
# CISO Assistant 默认使用 SQLite 数据库,你也可以通过声明以下变量配置 PostgreSQL
export POSTGRES_NAME=ciso-assistant
export POSTGRES_USER=ciso-assistantuser
export POSTGRES_PASSWORD=
export POSTGRES_PASSWORD_FILE= # 另一种指定数据库密码的方式
export DB_HOST=localhost
export DB_PORT=5432 # 可选,默认值为 5432
# CISO Assistant 默认使用文件系统作为存储后端
# 同一时间仅能启用一种云存储后端,USE_S3 和 USE_AZURE 配置互斥
# --- AWS S3 存储 ---
# 你可以通过声明以下变量使用 S3 存储桶
# S3 存储桶必须在启动 CISO Assistant 之前预先创建完成
export USE_S3=True
export AWS_STORAGE_BUCKET_NAME=
export AWS_S3_REGION_NAME= # 可选,例如 us-east-1
# S3 认证方式 1:访问密钥(适用于独立部署场景或兼容 S3 协议的第三方存储服务)
export AWS_ACCESS_KEY_ID=
export AWS_SECRET_ACCESS_KEY=
export AWS_S3_ENDPOINT_URL= # 兼容 S3 协议的第三方服务(例如 MinIO)必须配置该参数
# S3 认证方式 2:IRSA(适用于 Kubernetes/EKS 部署场景)
# 当在已开启 IAM 服务账号角色(IRSA)的 EKS 集群上运行时,
# 以下环境变量会由 Pod 关联的服务账号自动注入。
# 无需额外显式配置,只需确保 USE_S3=True 和 AWS_STORAGE_BUCKET_NAME 已正确设置即可。
# export AWS_WEB_IDENTITY_TOKEN_FILE=/var/run/secrets/eks.amazonaws.com/serviceaccount/token
# export AWS_ROLE_ARN=arn:aws:iam::123456789012:role/ciso-assistant-s3-role
# --- Azure Blob 存储 ---
# 你可以使用 Azure Blob 存储容器替代 S3 存储
# 该存储容器必须在启动 CISO Assistant 之前预先创建完成
# export USE_AZURE=True
# export AZURE_CONTAINER= # 默认值:ciso-assistant-container
# export AZURE_CUSTOM_DOMAIN= # 可选,例如 cdn.example.com
# export AZURE_LOCATION= # 可选,容器内的路径前缀(例如 "media")
# Azure 认证方式 1:账户密钥
# export AZURE_ACCOUNT_NAME=
# export AZURE_ACCOUNT_KEY=
# Azure 认证方式 2:连接字符串
# export AZURE_CONNECTION_STRING=
# Azure 认证方式 3:托管身份(适用于 Azure 托管部署场景)
# 需要配置 AZURE_ACCOUNT_NAME,Pod 或虚拟机绑定的托管身份会被自动使用
# export AZURE_ACCOUNT_NAME=
# export AZURE_USE_MANAGED_IDENTITY=True
# 配置备用第二邮件发送器(该配置将被弃用,不再推荐使用)
export EMAIL_HOST_RESCUE=
export EMAIL_PORT_RESCUE=587
export EMAIL_HOST_USER_RESCUE=
export EMAIL_HOST_PASSWORD_RESCUE=
export EMAIL_USE_TLS_RESCUE=True
export EMAIL_USE_SSL_RESCUE=False
# 你可以预设首个超级用户的邮箱地址,便于自动化部署场景使用,系统会向该邮箱发送密码初始化邮件
export CISO_SUPERUSER_EMAIL=
# 默认情况下,Django 密钥会在 CISO Assistant 每次启动时随机生成,该配置适用于快速测试场景
# 但不推荐在生产环境使用,因为随机密钥会破坏用户会话有效性(可参考该[主题](https://stackoverflow.com/questions/15170637/effects-of-changing-djangos-secret-key)了解更多细节)
# 如需设置固定密钥,请通过 DJANGO_SECRET_KEY 环境变量进行配置
export DJANGO_SECRET_KEY=...
[!WARNING] 生产环境必须启用沙盒机制
# 可选,生产环境(DJANGO_DEBUG=False)默认值为 True,开发环境(DJANGO_DEBUG=True)默认值为 False
export ENABLE_SANDBOX=True
export LOG_LEVEL=INFO # 可选,默认值为 INFO,可选选项:DEBUG、INFO、WARNING、ERROR、CRITICAL
export LOG_FORMAT=plain # 可选,默认值为 plain,可选选项:json、plain
将 LOG_FORMAT 设置为 json 时,每行输出一个 JSON 对象(包含时间戳、日志级别、日志器、事件等字段),Splunk、Sentinel、ADX 等 SIEM 系统可直接原生接入,无需自定义解析。
请在前端容器中统一设置 LOG_FORMAT=json,即可让 SvelteKit SSR 进程输出的结构化 JSON 日志(含认证事件、错误信息)使用与后端完全一致的结构;后端与 huey 任务工作进程会自动共享该配置。
export AUTH_TOKEN_TTL=3600 # 可选,默认值为 3600 秒(60 分钟),用于定义认证令牌的存活时长
export AUTH_TOKEN_AUTO_REFRESH=True # 可选,默认值为 True,用于定义每次使用令牌完成认证后是否自动刷新令牌 TTL
export AUTH_TOKEN_AUTO_REFRESH_TTL=36000 # 可选,默认值为 36000 秒(10 小时),用于定义自动刷新后认证令牌的存活时长,设置为 0 可禁用该功能
[实验性功能] 无需 WSL2 的 Windows 平台开发额外变量
仅支持配置 PostgreSQL 自定义变量。
相关操作请参考 tools/.windows/README.md 中的帮助脚本获取完整说明。
安装 uv 请访问 uv 官方网站获取安装指引:
进入 backend 目录安装所需依赖
cd backend
uv sync
pre-commit install
psql as superadminsudo su postgrespsqlcreate database ciso-assistant;create user ciso-assistantuser with password ' ';grant all privileges on database ciso-assistant to ciso-assistantuser;[实验性功能] Windows 平台 PostgreSQL 配置
更多信息请查看 tools/.windows/README.md 中的相关文档。
docker run -p 9000:9000 -p 9001:9001 -e "MINIO_ROOT_USER=XXX" -e "MINIO_ROOT_PASSWORD=XXX" quay.io/minio/minio server /data --console-address ":9001"
uv run python manage.py migrate
[实验性功能] 无需 WSL2 的 Windows 平台迁移执行
更多信息请查看 tools/.windows/README.md 中的相关文档。
[!NOTE] 如果您已配置邮件服务并设置了
CISO_SUPERUSER_EMAIL变量,则无需通过createsuperuser手动创建 Django 超级用户,系统会在首次启动时自动创建该用户,您将收到一封包含密码设置链接的邮件。
uv run python manage.py createsuperuser
[实验性功能] 无需 WSL2 的 Windows 平台创建 Django 超级用户
更多信息请查看 tools/.windows/README.md 中的相关文档。
uv run python manage.py runserver
[实验性功能] Windows 原生运行开发服务器说明
在 Windows 上原生运行 Django 开发服务器时,SvelteKit SSR 可能会发起大量并发 API 连接,超出服务器默认的监听队列长度,这可能会导致前端间歇性出现 ECONNREFUSED / TypeError: fetch failed 错误。
请使用 tools/.windows/README.md 中记录的辅助脚本完成 Windows 原生开发环境配置。
python manage.py run_huey -w 2 -k process 或等效命令MAIL_DEBUG 将邮件内容打印到控制台,方便调试cd frontend
npm install -g pnpm
pnpm install
pnpm run dev
[!NOTE] 当前配置下 Safari 浏览器无法正常工作,因为 Safari 要求安全 Cookie 必须基于 HTTPS 传输。最简单的解决方案是使用 Chrome 或 Firefox 浏览器,也可以选择部署 Caddy 反向代理。更多相关说明请参考 frontend 目录下的 README 文件。
PUBLIC_BACKEND_API_URL,其默认值为当前后端服务地址。
PUBLIC_BACKEND_API_EXPOSED_URL 是 SSO 正常运行的必要变量,它代表浏览器侧可访问的 API 地址,取值为后端配置项 CISO_ASSISTANT_URL 拼接 "/api" 后缀的完整地址。
当您使用 node server 而非 pnpm run dev 启动服务时,需要将 ORIGIN 变量设置为与后端 CISO_ASSISTANT_URL 完全一致的值(例如部署域名)。迁移文件已纳入版本控制系统管理。 对于产品的首个版本,建议从干净的迁移状态开始初始化。 如需清理现有迁移文件,执行以下命令:
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc" -delete
完成模型代码变更(或清理迁移文件)后,需要重新生成迁移文件:
uv run python manage.py makemigrations
uv run python manage.py migrate
生成的迁移文件必须提交到版本仓库中进行跟踪。
要在后端运行 API 测试,只需在 backend 目录的 shell 会话中执行 uv run pytest 即可。
要运行前端功能测试,请执行以下操作:
tests/e2e-tests.sh
该测试套件的目标是避免所有功能回归,后端与前端的所有用例都必须成功通过。
export DJANGO_DEBUG=True 启用该功能。/api/schema/swagger/ 访问文档,例如:http://localhost:8000/api/schema/swagger/。如需通过 Swagger 或直接调用 HTTP 与 API 交互:
Authorization: Token [!NOTE] 请使用
Token,不要使用Bearer。
PAT 支持 MFA 校验:令牌必须通过已认证的会话才能签发,因此受 MFA 保护的账号将持续保持防护状态。对于交互式/浏览器流程,认证过程会走标准登录链路(启用 MFA 时将强制要求二次验证)。
仓库提供的 docker-compose.yml 是面向测试场景的相关配置,前端前置了 Caddy 代理。该配置会暴露完整 API,目前不建议直接用于生产环境。
面向生产部署时,可使用配置生成器生成更安全、更贴合需求的自定义 docker-compose.yml 文件,不过仍需额外完成多项安全加固步骤。
生产环境需遵循以下配置建议:
DJANGO_DEBUG 设置为 False。/api/iam/sso/redirect//api/accounts/saml/0/acs//api/accounts/saml/0/acs/finish//api/accounts/oidc/openid_connect/login/callback//api/accounts/saml/0/sls/(仅在启用 SAML 单点登出时需要)docker-compose.yml 文件。[!NOTE] 前端无法自动推断访问主机地址,因此你需要配置
ORIGIN变量,或同时配置HOST_HEADER和PROTOCOL_HEADER变量。关于这个特殊问题,请参考 https://kit.svelte.dev/docs/adapter-node#environment-variables-origin-protocolheader-hostheader-and-port-header。注意该配置方式不适用于pnpm run dev,但生产环境无需使用该开发命令,因此不会造成影响。
[!NOTE] Caddy 需要接收 SNI 头部。因此你在
CISO_ASSISTANT_URL中声明的公网地址必须使用 FQDN 格式,不能直接填写 IP 地址——因为浏览器访问 IP 地址时不会发送 SNI 信息,这是另一个需要留意的特殊配置点!
[!NOTE] 当前版本的
docker-compose模板文件已默认以后端、Huey 和前端均以非 root 模式启动。如果你使用的是旧版docker-compose.yml文件,建议更新到最新版本。所有容器同时兼容 root 和非 root 两种运行模式。
当前 docker-compose.yml 配置使用镜像内预设的非 root 用户 1001:1001。旧部署默认使用 root 用户运行,该模式目前仍兼容支持。如需迁移到非 root 模式,请在主机上执行以下步骤:
docker compose down
# 更新 docker-compose.yml 文件完成后执行后续命令
sudo chown -R 1001:1001 db
docker compose up -d
参考基准语言文件为 en.json;各语言本地化覆盖率指该 locale 文件中与基准文件匹配的键值占比。该统计每日自动更新——完整详情可查看https://intuitem.github.io/metrics/i18n/。
本项目开发全程严格遵循各类安全最佳实践。如发现任何安全问题,请反馈至项目官方渠道。
本仓库同时包含 CISO Assistant 开源社区版与商业版的源代码:社区版基于 AGPL v3 许可证发布,专业版与企业版商业套件则基于 intuitem 商业软件许可证发布。采用单体仓库模式是为了简化整体项目管理。
顶层 enterprise 目录下的所有文件均受 intuitem 商业软件许可证约束。
顶层 enterprise 目录以外的所有文件均基于 https://choosealicense.com/licenses/agpl-3.0/ 许可证发布。
详细说明请参考 LICENSE.md 文件。如需了解商业版的更多信息,可通过项目官方渠道联系我们。
除非另有说明,仓库内所有文件版权归属 © intuitem。
来自真实用户的反馈,见证轩辕镜像的优质服务