给项目点个星 🌟 以获取发布通知,并帮助社区成长!
intuitem.com
·
SaaS 免费试用
·
路线图
·
文档
·
语言
·
Discord
·
框架

CISO Assistant 为网络安全管理与 GRC(治理、风险与合规)实践带来了全新视角:

我们的愿景是打造网络安全管理的一站式解决方案——通过简化和互操作性实现 GRC 的现代化。
作为与网络安全和 IT 专业人士共事的从业者,我们曾面临同样的问题:工具碎片化、数据重复,以及缺乏直观、集成的解决方案。CISO Assistant 正是从这些经验教训中诞生的,我们正在围绕务实、常识原则构建一个社区。
我们在用户和客户的反馈中不断演进。就像章鱼 🐙 一样,CISO Assistant 不断长出新的触手——为网络安全团队带来清晰度、自动化和生产力,同时减少数据输入和输出的工作量。
[!TIP] 最简单的入门方式是使用此处提供的云实例免费试用。
或者,在你的工作站或服务器上安装好 Docker 和 Docker-compose 后:
克隆仓库:```sh git clone --single-branch -b main https://github.com/intuitem/ciso-assistant-community.git
并运行启动脚本```sh
./docker-compose.sh # Linux/MacOS
./docker-compose.ps1 # Windows
[!NOTE] docker-compose 脚本使用预构建的 Docker 镜像,支持大多数标准硬件架构。 如果你使用的是 Windows,请确保已安装 Docker Desktop with WSL2,并触发 PowerShell 脚本。它会代你向 Docker Desktop 提供配置。
可以调整 docker compose 文件以传递额外参数来适配你的设置(例如邮件发送器设置)。
[!WARNING] 如果你收到关于镜像平台与主机平台不匹配的警告或错误,请提出 issue 并附上详细信息,我们会很快添加支持。你也可以改用
docker-compose-build.sh(见下文)来为你的特定架构进行构建。
[!CAUTION] 不要直接将
main分支代码用于生产环境,因为它是上游合并分支,在我们的开发过程中可能会有破坏性变更。请使用tags获取稳定版本,或使用预构建镜像。

合规与框架
风险管理
第三方风险
运营与修复
报告与分析
协作与生产力
自动化与集成
安全与访问
隐私
项目管理
平台
即将推出的功能列在路线图中。
CISO Assistant 由 Intuitem 开发和维护,该公司专注于网络安全、云以及数据/AI。
以下是 CISO Assistant 中一些构建模块的摘录,用于说明鼓励可复用性的解耦概念:

完整详情请查看数据模型文档。
CISO Assistant 的核心是解耦原则,它能够实现强大的用例并大幅节省时间:
以下是解耦原则及其优势的说明:
https://github.com/user-attachments/assets/87bd4497-5cc2-4221-aeff-396f6b6ebe62

请查看在线文档:https://intuitem.gitbook.io/ciso-assistant。
在此阅读更多内容:AI 引擎
[!NOTE] 带有
*的框架需要额外手动步骤,即通过其网站获取最新的 Excel 表格,因为其许可证禁止直接使用。你可以直接将 Excel 表格作为库加载。
查看库和工具,了解所使用的领域特定语言以及如何定义你自己的库。
Indonesia PDP 🇮🇩
OWASP SAMM
COBAC R-2024/01
ICO Data protection self-assessment 🇬🇧
ASD ISM 🇦🇺
以及更多:只需在 Discord 上询问。如果它是开放标准,我们会为你完成,免费 😉
一个库可以代表一个框架、一个威胁目录、一组参考控制,甚至一个自定义风险矩阵。
现在可以直接从 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。加入我们的开放 Discord 社区,与团队和其他 GRC 专家互动。
最快、最简单的入门方式是使用此处提供的免费云实例试用。
要以简单直接的方式在本地运行 CISO Assistant,你可以使用 Docker compose。
确保你拥有较新的 docker 版本(>= 27.0)。
2. 启动预构建镜像的 docker-compose 脚本:```sh
./docker-compose.sh # Linux/MacOS
./docker-compose.ps1 # Windows
或者,你可以使用此变体为你的特定架构构建 Docker 镜像:```sh ./docker-compose-build.sh # Linux/MacOS ./docker-compose-build.ps1 # Windows
当系统要求时,请输入您的超级用户邮箱和密码。
然后,您可以通过网页浏览器访问 CISO Assistant:[https://localhost:8443/](https://localhost:8443/)
对于以下执行操作,请直接使用 "docker compose up"。
## 为开发设置 CISO Assistant
> [!WARNING]
>
> ### Windows 用户的重要说明
>
> 对于在 **Windows** 上进行开发的用户,最佳可行方案是使用安装在 [WSL2](https://apps.microsoft.com/detail/9p9tqf7mrm4r) 上的 [Ubuntu](https://apps.microsoft.com/detail/9pdxgncfsczv)(无需 Docker)。
>
> 现在也可以在没有 WSL2 和 Docker 的情况下,在 Windows 上原生运行和开发 CISO Assistant,但这需要一些额外步骤。
> 请注意,Windows 上的原生运行仍处于 **实验阶段**,如果您不确定自己在做什么,或者希望在整个开发过程中确保稳定性,则 **不应** 使用它。
> 尽管如此,我们非常乐意听取任何建议,以改善 Windows 用户的开发体验。请随时为此提交 Issue/PR!
### 要求
- Python 3.14+
- pip 25.3+
- uv 0.9+
- node 24+
- npm 10.2+
- pnpm 10.30+
- yaml-cpp(`brew install yaml-cpp libyaml` 或 `apt install libyaml-cpp-dev`)
<details>
<summary>[实验性] 在没有 WSL2 的 Windows 上进行开发的额外要求</summary>
如果您想在没有 WSL2 的情况下开发该项目,您需要安装 [MSYS2](https://www.msys2.org/),将 `MSYS2 UCRT64` 二进制文件添加到您的 [系统 PATH 环境变量](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_environment_variables?view=powershell-7.6#set-environment-variables-in-the-system-control-panel) 中(通常,这些二进制文件位于 `C:\msys64\ucrt64\bin`),然后使用 `MSYS2 UCRT64` 通过 `pacman` 安装以下依赖项。```sh
pacman -S mingw-w64-ucrt-x86_64-file mingw-w64-ucrt-x86_64-pango
你还需要在安装依赖项后添加这两个系统环境变量:```conf
MAGIC=Full path to the magic.mgc file (usually C:\msys64\ucrt64\share\misc\magic.mgc)
WEASYPRINT_DLL_DIRECTORIES=Same path as your MSYS2 UCRT64 binaries
鉴于 Windows 上的默认编码不是 `UTF-8` 而是 `cp1252`,某些打印 `UTF-8` 字符(如表情符号)的 Python 脚本在某些情况下可能导致后端崩溃或故障(例如库导入)。
为避免此项目出现此问题,请通过添加以下 2 个用户环境变量来强制使用 `UTF-8` 编码:```conf
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 文件的导入。
2. 在父文件夹中创建一个文件(例如 ../myvars),并通过复制和修改以下代码将环境变量存储在其中,将 `"<XXX>"` 替换为你的私有值。注意不要将此文件提交到你的 git 仓库中。
**必需变量**
后端中的所有变量都有便捷的默认值。
**推荐变量**```sh
export DJANGO_DEBUG=True
# Default url is set to http://localhost:5173 but you can change it, e.g. to use https with a caddy proxy
export CISO_ASSISTANT_URL=https://localhost:8443
# Setup a development mailer with Mailpit for example
export EMAIL_HOST_USER=''
export EMAIL_HOST_PASSWORD=''
export [email protected]
export EMAIL_HOST=localhost
export EMAIL_PORT=1025
export EMAIL_USE_TLS=True # true for STARTTLS
export EMAIL_USE_SSL=False # true for SMTPS
其他变量```sh
export POSTGRES_NAME=ciso-assistant export POSTGRES_USER=ciso-assistantuser export POSTGRES_PASSWORD= export POSTGRES_PASSWORD_FILE= # alternative way to specify password export DB_HOST=localhost export DB_PORT=5432 # optional, default value is 5432
export USE_S3=True export AWS_STORAGE_BUCKET_NAME= export AWS_S3_REGION_NAME= # optional, e.g., us-east-1
export AWS_ACCESS_KEY_ID= export AWS_SECRET_ACCESS_KEY= export AWS_S3_ENDPOINT_URL= # required for S3-compatible services (e.g., MinIO)
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=
export DJANGO_SECRET_KEY=...
export ENABLE_SANDBOX=True # optional, default value is True in production enfironments (DJANGO_DEBUG=False) and False in development environments (DJANGO_DEBUG=True).
export LOG_LEVEL=INFO # optional, default value is INFO. Available options: DEBUG, INFO, WARNING, ERROR, CRITICAL export LOG_FORMAT=plain # optional, default value is plain. Available options: json, plain
export AUTH_TOKEN_TTL=3600 # optional, default value is 3600 seconds (60 minutes). It defines the time to live of the authentication token export AUTH_TOKEN_AUTO_REFRESH=True # optional, default value is True. It defines if the token TTL should be refreshed automatically after each request authenticated with the token export AUTH_TOKEN_AUTO_REFRESH_TTL=36000 # optional, default value is 36000 seconds (10 hours). It defines the time to live of the authentication token after auto refresh. You can disable it by setting it to 0.
<details>
<summary>[实验性] 在 Windows 上不使用 WSL2 进行开发的其他变量</summary>
只能配置 PostgreSQL 自定义变量。
更多信息请参阅 [`tools/.windows/README.md`](https://github.com/intuitem/ciso-assistant-community/blob/main/tools/.windows/README.md) 中记录的辅助脚本。
</details>
3. 安装 uv
访问 uv 网站获取安装说明:<https://docs.astral.sh/uv/getting-started/installation/>
4. 切换到 backend 并安装所需依赖。```sh
cd backend
uv sync
6. 如果你想设置 Postgres:
- 启动以下命令之一以进入 Postgres:
- `psql as superadmin`
- `sudo su postgres`
- `psql`
- 创建数据库 "ciso-assistant"
- `create database ciso-assistant;`
- 创建用户 "ciso-assistantuser" 并授予其访问权限
- `create user ciso-assistantuser with password '<POSTGRES_PASSWORD>';`
- `grant all privileges on database ciso-assistant to ciso-assistantuser;`
<details>
<summary>[实验性] 在 Windows 上设置 PostgreSQL</summary>
更多信息,请参阅 [`tools/.windows/README.md`](https://github.com/intuitem/ciso-assistant-community/blob/main/tools/.windows/README.md) 中的文档。
</details>
7. 如果你想设置 s3 存储桶:
- 选择你的 s3 提供商,或使用以下命令通过 miniO 试用 s3 功能:
- `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"`
- 现在你可以在 <http://localhost:9001> 上检查你的存储桶
- 使用你在 docker run 环境变量中填写的凭据进行登录
- 在后端目录中导出所有询问的关于 S3 的环境变量
- 你可以在上面的推荐变量列表中看到该列表
8. 应用迁移。```sh
uv run python manage.py migrate
更多信息,请参阅 tools/.windows/README.md 中的文档。
如果您已设置邮件发送器并配置了 CISO_SUPERUSER_EMAIL 变量,则无需使用
createsuperuser创建 Django 超级用户,因为它会在首次启动时自动创建。您应该会收到一封包含设置密码链接的电子邮件。```sh uv run python manage.py createsuperuser
<details>
<summary>[实验性] 在 Windows 上无需 WSL2 创建 Django 超级用户</summary>
更多信息,请参阅 [`tools/.windows/README.md`](https://github.com/intuitem/ciso-assistant-community/blob/main/tools/.windows/README.md) 中的文档。
</details>
10. 运行开发服务器。```sh
uv run python manage.py runserver
在 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 将邮件输出到控制台以便于调试2. 安装依赖```bash
npm install -g pnpm
pnpm install
4. 在 <http://localhost:5173> 访问前端
> [!NOTE]
> 在此设置中 Safari 无法正常工作,因为它需要 https 才能使用安全 cookie。最简单的解决方案是使用 Chrome 或 Firefox。另一种方法是使用 caddy 代理。有关更多信息,请参阅前端目录中的 [readme 文件](https://github.com/intuitem/ciso-assistant-community/blob/main/frontend/README.md)。
5. 环境变量
前端中的所有变量都有便捷的默认值。
如果你将前端移动到另一台主机上,应设置以下变量:`PUBLIC_BACKEND_API_URL`。其默认值为 <http://localhost:8000/api>。
`PUBLIC_BACKEND_API_EXPOSED_URL` 对于 SSO 的正常运行是必需的。它指向浏览器所看到的 API 的 URL。它应等于 `CISO_ASSISTANT_URL`(在后端中)与 "/api" 的拼接。
当你启动 "node server" 而不是 "pnpm run dev" 时,你需要将 ORIGIN 变量设置为与后端中的 `CISO_ASSISTANT_URL` 相同的值(例如 <http://localhost:3000>)。
### 管理迁移
迁移由版本控制进行跟踪,<https://docs.djangoproject.com/en/4.2/topics/migrations/#version-control>
对于产品的第一个版本,建议从干净的迁移开始。
注意:要清理现有的迁移,请输入:```sh
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc" -delete
在更改(或清理)之后,有必要重新生成迁移文件:```sh uv run python manage.py makemigrations uv run python manage.py migrate
这些迁移文件应纳入版本控制。
### 测试套件
要在后端运行 API 测试,只需在后端文件夹的 shell 中输入 `uv run pytest`。
要在前端运行功能测试,请执行以下操作:
- 在前端文件夹中,运行以下命令:```shell
tests/e2e-tests.sh
测试框架的目标是防止任何回归,即所有测试都应成功,无论是后端还是前端。
export DJANGO_DEBUG=True。<backend_endpoint>/api/schema/swagger/ 访问,
例如:http://127.0.0.1:8000/api/schema/swagger/。要通过 Swagger 或直接使用 HTTP 调用与 API 交互:
Authorization: Token <token>⚠️ 注意:使用 Token,而非 Bearer。
PAT 遵循 MFA:它们是从已认证的会话中签发的,因此受 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 单点注销时)[!NOTE] 前端无法自动推断主机,因此你需要设置 ORIGIN 变量,或者设置
HOST_HEADER和PROTOCOL_HEADER变量。关于这个棘手问题,请参阅 sveltekit 文档。请注意,此方法不适用于 "pnpm run dev",但这对于生产环境来说应该不是问题。
[!NOTE] Caddy 需要接收 SNI 标头。因此,对于你的公共 URL(在
CISO_ASSISTANT_URL中声明的那个),你需要使用 FQDN,而不是 IP 地址,因为如果主机是 IP 地址,浏览器不会传输 SNI。另一个棘手的问题!
[!NOTE] docker-compose 模板文件现在以非 root 模式启动后端、huey 和前端。如果你使用的是旧的 docker-compose.yml 文件,建议更新它。这些容器同时兼容 root 和非 root 模式。
docker-compose.yml 现在依赖于镜像中可用的非 root 用户 1001:1001。较旧的部署使用 root 用户,这仍然受支持。要过渡到非 root,请在主机中执行以下步骤:
参考文件是 en.json;覆盖率 = 每个区域设置文件中存在的参考键的占比。每日自动刷新 — 完整明细见仪表板。
我们非常谨慎地遵循安全最佳实践。请将任何问题报告至 [email protected]。
此仓库包含 CISO Assistant 开源版(社区版)的源代码,根据 AGPL v3 发布,以及 CISO Assistant 商业版(Pro 和 Enterprise 版)的源代码,根据 intuitem 商业软件许可证发布。采用这种单一仓库方式是为了简单起见。
顶层 "enterprise" 目录中的所有文件均根据 intuitem 商业软件许可证发布。
顶层 "enterprise" 目录之外的所有文件均根据 AGPLv3 发布。
有关详细信息,请参阅 LICENSE.md。有关商业版的更多详细信息,你可以通过 [email protected] 联系我们。
除非另有说明,所有文件均为 © intuitem。