如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
为项目点亮星标🌟,以获取发布通知并助力社区发展!
intuitem.com · SaaS免费试用 · 路线图 · 文档 · 语言 ·
· 框架
CISO Assistant为网络安全管理和GRC(治理、风险与合规)实践提供了全新视角:
我们的愿景是打造网络安全管理的一站式平台——通过简化和互操作性实现GRC现代化。
作为与网络安全和IT专业人员合作的从业者,我们曾面临同样的问题:工具碎片化、数据重复,以及缺乏直观的集成解决方案。CISO Assistant源于这些经验教训,我们正围绕务实、常识性原则构建社区。
我们不断根据用户和客户的反馈进行改进。CISO Assistant就像一只章鱼🐙,不断长出新的“触手”——为网络安全团队带来清晰度、自动化和生产力,同时减少数据输入和输出的工作量。
库可以表示一个框架、威胁目录、一组参考控制措施,甚至是自定义风险矩阵。
现在可以直接从 Excel 文件加载库。无需事先手动将其转换为 YAML——上传 Excel 文件时会在内部处理转换。
查看 tools 目录及其专用 README,其中描述了 Excel 格式库源文件的预期格式。excel 子目录包含用作现有库源的示例 XLSX 文件,可用作创建您自己的库的模板。
要从 Excel 文件加载库,请转到 Governance → Library 页面,点击 Load,然后选择您的 Excel 源文件。导入过程中会报告任何验证或解析错误。
虽然可以直接加载 Excel 文件,但仍可以使用外部 Python 脚本将库源文件转换为 YAML:
convert_library_v2.py 帮助您从简单的 Excel 文件生成库。一旦您的项目按预期格式结构化,运行该脚本即可生成相应的 YAML 文件。tools 目录还包含针对特定框架的专用转换器(例如,CIS 或 CCM Controls)。为便于创建框架之间的映射,您可以使用 prepare_mapping_v2.py 工具。它基于两个现有的 YAML 格式框架库生成 Excel 文件。填写映射后,生成的 Excel 文件可以:
convert_library_v2.py 转换为 YAML。如果希望在不使用 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 上的
libmagic库(MIME 检测)通过读取 Excel 文件(.xlsx)的前2048位来识别文件时存在困难,在导入 Excel 库时,大多数情况下会返回application/octet-stream(后端会显示警告消息[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
" "替换为您的私有值。注意不要将此文件提交到 git 仓库。必填变量
后端中的所有变量都有便捷的默认值。
推荐变量
export DJANGO_DEBUG=True
# 默认 URL 设置为 http://localhost:5173,但您可以更改,例如使用 Caddy 代理启用 HTTPS
export CISO_ASSISTANT_URL=https://localhost:8443
# 例如使用 Mailhog 设置开发邮件服务器
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 # true 表示使用 STARTTLS
export EMAIL_USE_SSL=False # true 表示使用 SMTPS
其他变量
# 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 存储桶
# 启动 CISO Assistant 前必须先创建 S3 存储桶
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 Roles for Service Accounts (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 Storage ---
# 您可以使用 Azure Blob Storage 容器代替 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/VM 分配的托管身份会自动使用。
# 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=...
# 用于运行不受信任代码的沙箱模式(例如库 Excel 文件)
# WARNING: 生产环境必须启用沙箱。
export ENABLE_SANDBOX=True # 可选,生产环境(DJANGO_DEBUG=False)默认值为 True,开发环境(DJANGO_DEBUG=True)默认值为 False。
# 日志配置
export LOG_LEVEL=INFO # 可选,默认值为 INFO。可用选项:DEBUG、INFO、WARNING、ERROR、CRITICAL
export LOG_FORMAT=plain # 可选,默认值为 plain。可用选项:json、plain
迁移由版本控制跟踪,
对于产品的第一个版本,建议从干净的迁移开始。
[!NOTE] 要清理现有迁移,请输入:
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc" -delete
在更改(或清理)后,需要重新生成迁移文件:
poetry run python manage.py makemigrations
poetry run python manage.py migrate
这些迁移文件应通过版本控制进行跟踪。
要在后端运行 API 测试,只需在后端文件夹的 shell 中输入 poetry run pytest。
要在前端运行功能测试,请执行以下操作:
tests/e2e-tests.sh
测试工具的目标是防止任何回归,即所有测试(包括后端和前端)都应成功。
docker-compose.yml 现在依赖镜像中已有的非 root 用户 1001:1001。旧版本部署使用 root 用户,该方式仍受支持。如需迁移至非 root 用户,请在主机中执行以下步骤:
我们已尽力遵循安全最佳实践。请将任何问题报告至 。
本仓库包含 CISO Assistant 开源版本(社区版)的源代码,该版本基于 AGPL v3 许可证发布;同时也包含 CISO Assistant 商业版本(专业版和企业版)的源代码,该版本基于 intuitem 商业软件许可证发布。采用这种单体仓库方式是为了简化管理。
顶级“enterprise”目录下的所有文件均基于 intuitem 商业软件许可证发布。
顶级“enterprise”目录外的所有文件均基于 AGPLv3 许可证发布。
详情请参见 LICENSE.md。如需了解商业版本的更多信息,请通过 与我们联系。
除非另有说明,所有文件均 © intuitem。
来自真实用户的反馈,见证轩辕镜像的优质服务