Files
CyberStrikeAI/docs/zh-CN/asset-management.md
T
2026-07-17 17:17:10 +08:00

234 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 资产管理
[English](../en-US/asset-management.md)
资产管理用于将手工录入、FOFA、HTTP API 和 Agent 任务中发现的域名、IP、端口与服务统一归档,形成可持续维护的资产基线。它关注三个问题:当前拥有哪些资产、哪些资产已经检查、风险集中在哪里。
> 资产管理面向安全测试和攻击面治理,不替代完整的企业 CMDB。仅可录入和扫描自有系统或已获得明确授权的目标。
## 功能概览
资产管理包含三个主要入口:
- **资产概览**:统计资产总量、IP、域名、端口、近期变化、扫描覆盖率和协议分布。
- **资产库**:维护资产身份、服务信息、来源、标签、项目归属、责任与业务属性、扫描记录和风险状态。
- **信息收集**:查询 FOFA,并将确认归属的结果单条或批量写入资产库。
资产可以进一步发起单目标分析或批量扫描。Agent 保存漏洞并完成扫描回写后,资产列表会同步展示相关漏洞数量、风险等级和最近扫描时间。
概览支持切换最近 7、30 或 90 天,展示新增/停用资产趋势、漏洞发现趋势(含严重和高危)、扫描覆盖率、30 天内覆盖率、从未扫描与过期资产数量,以及协议 Top 8 分布。所有统计均受当前用户的资产访问范围约束。
## 资产字段
每条资产可记录:
- Host、IP、域名、端口和协议;
- 页面标题、服务或产品指纹;
- 国家/地区、省份/州和城市;
- 负责人、部门、业务系统、环境和重要性;
- 来源、来源查询条件和标签;
- 活跃或停用状态;
- 所属项目和所有者;
- 首次发现、最近发现、创建和更新时间;
- 最近扫描时间及关联的对话、任务队列和子任务;
- 相关漏洞数量和当前风险等级。
至少需要提供 `host``ip``domain` 中的一项。
## 建立资产基线
### 手工新增
进入 **资产管理 → 资产库**,点击 **新增资产**。常见目标格式包括:
```text
https://example.com:8443
example.com
192.0.2.10:443
[2001:db8::1]:443
```
系统会尽量识别 URL、域名、IP、端口和协议。保存前可继续补充项目、标签、标题、服务指纹、地理位置、负责人、部门、业务系统、环境、重要性和状态。
### 从表格批量导入
进入 **资产管理 → 资产库**,点击 **批量导入**
1. 下载 XLSX(推荐)或 CSV 模板。
2.`Assets` 工作表中填写资产;不要修改表头。
3. 上传文件,或将文件拖入上传区域。
4. 查看逐行校验结果。文件内重复、格式错误和无权访问的项目会标为错误。
5. 点击 **导入有效数据**。错误行不会提交,预览超过 100 行时只展示前 100 行,但提交会处理全部有效行。
6. 根据提示核对新增、更新和跳过数量。
模板字段:
| 字段 | 必填 | 说明 |
| --- | --- | --- |
| `target` | 条件必填 | URL、域名、IPv4、IPv6 或带端口目标;当 `host``ip``domain` 均为空时必填 |
| `project` | 否 | 已有项目的精确名称或项目 ID;留空表示不绑定 |
| `tags` | 否 | 逗号、中文逗号、分号或竖线分隔;最多 30 个,单个最多 64 个字符 |
| `host` | 条件必填 | 完整 URL 或 Host;可与 `target` 配合补充 |
| `ip` | 条件必填 | 合法 IPv4 或 IPv6 |
| `domain` | 条件必填 | 合法域名,国际化域名会规范化 |
| `port` | 否 | `0-65535`;留空时可从 `target` 推断 |
| `protocol` | 否 | 如 `http``https``ssh`;留空时可从 URL 或常用端口推断 |
| `title` | 否 | 页面标题,最多 500 个字符 |
| `server` | 否 | 服务或产品指纹 |
| `country` / `province` / `city` | 否 | 地理归属信息 |
| `responsible_person` | 否 | 负责人,最多 255 个字符 |
| `department` | 否 | 责任部门,最多 255 个字符 |
| `business_system` | 否 | 所属业务系统,最多 255 个字符 |
| `environment` | 否 | `production``staging``testing``development``other` |
| `criticality` | 否 | `critical``high``medium``low` |
| `status` | 否 | `active``inactive`,也接受“活跃”“停用”;默认 `active` |
表头同时识别模板中的英文字段和常用中文别名;环境和重要性也接受模板列中对应的中文值。为避免不同系统导出的列名产生歧义,自动化流程仍建议使用模板中的英文表头和枚举值。
限制与处理规则:
- 单个 XLSX/CSV 文件最多 100000 行、100 MB。
- `/api/assets/import` 单次请求最多 100000 条资产。
- 文件内相同“目标 + 端口 + 协议”的后续行会标记为重复,不会提交。
- Web 端负责文件解析、预览和即时格式提示;服务端仍会执行权限检查、字段校验、规范化、去重和事务写入。
- 已存在的资产会合并本次提供的非空字段并更新最近发现时间;不会创建重复记录。
- 批量导入需要 `asset:write` 权限。填写项目时,当前用户还必须有权访问该项目。
- 不建议取消服务端条数上限。更大规模的数据应拆分文件并在低峰期导入。
### 从 FOFA 导入
1. 在配置文件或 **系统设置 → 资产管理** 中填写 FOFA API Key,也可使用 `FOFA_API_KEY` 环境变量。
2. 进入 **资产管理 → 信息收集**
3. 输入或生成 FOFA 查询语句,并确认查询范围。
4. 执行查询,选择确认归属的结果后点击 **入库所选**
5. 根据返回的新增、更新和跳过数量检查导入结果。
外部搜索结果不等同于自有资产。建议先通过组织域名、证书、网段或产品指纹缩小范围,确认授权后再入库。
## 规范化与去重
不同入口可能使用不同形式描述同一目标。系统会执行以下处理:
- 去除字段首尾空白;
- IP、域名和协议转为小写;
- 从 URL 型 Host 提取 hostname、协议和端口;
- 为未显式指定端口的 HTTP/HTTPS 补充默认端口;
- 将国际化域名转换为 ASCII/Punycode
- 清理并去重标签;
- 为缺失的状态和来源补充默认值。
资产以“目标 + 端口 + 协议”作为服务级去重依据。目标优先采用域名,其次为 IP,最后为 Host。因此,同一主机的 `80/http``443/https` 会被视为不同资产。
重复资产再次入库时,系统会更新本次提供的非空字段和最近发现时间,保留未提供的原有信息,不会重置首次发现时间。
## 查询、筛选与视图
Web 端的关键字搜索覆盖 Host、IP、域名、标题、服务、标签、负责人、部门和业务系统。常用筛选包括状态和项目;展开高级筛选后还可以组合:
- 风险等级和最少漏洞数;
- 协议、端口、来源和精确标签;
- 已扫描、从未扫描,以及 30/60/90 天未扫描;
- 国家/地区、省份/州、城市、负责人、部门和业务系统;
- 环境、重要性、首次发现和最近发现日期范围;
- 最近发现、最近扫描、风险、漏洞数、首次发现、目标名称或端口排序。
按最近扫描时间升序排列时,从未扫描的资产优先显示,便于识别覆盖盲区。
常用筛选组合可以保存为筛选视图。筛选视图保存在当前浏览器的 `localStorage` 中,不会同步到服务端、其他浏览器或其他用户。
HTTP API 和 `query_assets` 还支持 `max_vulnerabilities`、最近扫描时间范围,以及创建/更新时间等白名单排序字段。HTTP 列表每页最多 100 条,Agent 查询每页最多 50 条。
## 批量维护与导出
选择资产后,可以对当前页执行操作,也可以选择当前筛选条件命中的全部结果。跨页选择由服务端重新解析当前筛选条件,最多返回 10000 条;超过上限时需要进一步缩小范围。
可用操作:
- **绑定项目**:为所选资产统一替换项目归属;
- **批量编辑**:修改状态、负责人、部门、业务系统、环境和重要性,并增删标签;
- **创建扫描任务 / 发送到对话**:复用同一提示词模板处理所选资产;
- **导出 CSV / XLSX**:在浏览器中导出当前已选择的资产,包含责任属性、风险、漏洞数量和时间字段;
- **合并重复资产**:保留第一个所选资产为主资产,以其他记录的非空字段补齐主资产并合并标签;
- **批量删除**:永久删除所选资产。
批量编辑、项目绑定和批量删除采用全有或全无的事务:只要其中一个资产不存在或超出调用者权限,整批操作就会失败,不会留下部分更新。
合并仅适用于具有共同域名、IP 或 Host 的记录,每次可选择 2-100 条。主资产已有值优先,标签取并集且仍受 30 个标签限制,其余记录会被删除。该操作同时需要 `asset:write``asset:delete`;合并前应确认主资产选择以及需要保留的扫描历史。
## 扫描与风险回写
### 单资产扫描
在资产列表中点击 **扫描**。系统会:
1. 创建新对话并注入资产目标和资产 ID;
2. 将对话与资产关联;
3. 引导 Agent 检查暴露服务和授权范围内的安全风险;
4. 使用 `record_vulnerability` 保存确认的问题;
5. 使用 `complete_asset_scan` 回写扫描状态。
扫描提示词支持 `{{asset_id}}``{{target}}``{{host}}``{{ip}}``{{domain}}``{{port}}` 变量。发起前应按授权范围调整测试强度、端口和验证方式。
### 批量扫描
在资产库中选择多个目标后,点击 **创建扫描任务**。系统会为每个资产创建独立子任务,并建立资产、队列和子任务之间的关联。
当前默认使用手动调度、单并发和 Eino 单 Agent 模式,以减少对目标和本机资源的瞬时压力。执行前仍需确认测试窗口、请求频率、允许的验证方式和审批要求。
### 风险计算
资产风险根据最近一次关联扫描中的未关闭漏洞动态计算:
- `critical``high``medium``low``info`:存在对应等级的未关闭漏洞;
- `normal`:已扫描且没有开放风险;
- `unassessed`:尚未完成扫描。
已修复、误报或忽略的漏洞仍保留在历史数量中,但不会继续提高当前风险等级。
## Agent 工具
系统向 Agent 提供六个内置资产工具:
- `create_asset`:新增资产或去重更新;
- `get_asset`:按 ID 获取完整详情;
- `query_assets`:分页、筛选和排序;
- `update_asset`:局部更新;
- `delete_asset`:删除资产;
- `complete_asset_scan`:扫描完成后回写状态。
`query_assets` 默认每页返回 20 条、最多 50 条摘要。需要完整信息时使用 `get_asset`,避免大量资产数据占用模型上下文。
`create_asset``update_asset` 均支持责任与业务属性;`query_assets` 也可以按这些字段筛选。Agent 写入仍经过与 HTTP API 相同的规范化、字段校验、去重和权限检查。
## 权限控制
资产权限分为:
- `asset:read`:查看资产和统计数据;
- `asset:write`:创建、导入、修改和回写扫描;
- `asset:delete`:删除资产。
服务端会同时检查资产所有者、显式资源授权、所属项目及权限 Scope(`all``assigned``own`)。当对话绑定项目后,Agent 的资产查询会被限制在该项目内,工具参数不能扩大访问范围。
资产批量接口限制:
- `POST /api/assets/import`:单次最多 100000 条;
- `GET /api/assets/selection`:最多解析 10000 条匹配资产;
- `POST /api/assets/scan-links`:单次最多 10000 条;
- `PUT /api/assets/bulk`:单次最多 10000 个资产 ID;
- `PUT /api/assets/project-binding`:单次最多 10000 个资产 ID;
- `POST /api/assets/batch-delete`:单次最多 10000 个资产 ID;
- `POST /api/assets/merge`:单次合并 2-100 个资产 ID。
## 推荐使用流程
1. 划定一组明确授权的域名、IP 或网段。
2. 手工加入少量核心目标,验证识别和去重结果。
3. 使用标签区分生产、测试、核心业务和外网范围。
4. 配置 FOFA,从窄查询开始并确认资产归属。
5. 对单个低风险目标测试扫描和漏洞回写流程。
6. 使用“从未扫描”和“超过 30 天未扫描”筛选覆盖盲区。
7. 确认流程稳定后,再逐步创建小规模批量任务。
经过确认的小规模资产基线通常比来源混乱的全量清单更有价值。