NarrowCTI/narrowcti
GitHub: NarrowCTI/narrowcti
NarrowCTI 是一个 OpenCTI 原生的威胁情报预摄取网关,在数据进入 OpenCTI 图谱前进行筛选、评分、去重和策略治理,为分析师提供可解释且可审计的情报决策流程。
Stars: 0 | Forks: 0
NarrowCTI
OpenCTI 原生的 CTI 治理网关,旨在提供受控、可解释且图谱就绪的情报。
NarrowCTI 是一个 OpenCTI 原生的威胁情报网关,旨在在威胁情报进入 OpenCTI 图谱之前对其进行筛选、
评分、去重和治理。
NarrowCTI Gateway 将原始订阅源数据转化为受控的摄取候选对象,并为
CTI、主动狩猎和 SOC 团队提供可解释的决策、来源溯源、防护机制和运营证据。
## 当前版本
```
v0.8.0
```
`v0.8.0` 是当前的图谱提升、分析师审查和产品运营版本。它通过 OpenCTI 规范查找、
有界的 OTX/MISP 验证证据、关系审计证据、支持诊断和部署操作,完善了受控的图谱提升就绪状态。
发布历史摘要记录在 `CHANGELOG.md` 中;面向操作者的详细发布说明维护在
`docs/release-v*.md` 下。
## 快速开始
为了进行首次安全评估,请从当前的操作指南开始:
```
docs/getting-started.md
```
默认部署姿态为 dry-run(空运行)、run-once(单次运行)和审计优先。构建
网关镜像,运行 preflight(预检),然后在启用真正的
OpenCTI 图谱导出之前执行一次有界运行:
```
docker compose -f deployment\docker-compose.narrowcti-gateway.yml build narrowcti-gateway
docker compose -f deployment\docker-compose.narrowcti-gateway.yml --profile ops run --rm narrowcti-preflight
docker compose -f deployment\docker-compose.narrowcti-gateway.yml run --rm narrowcti-gateway
```
请使用 `docs/deployment-operations.md` 获取权威的部署和升级流程。
## 产品定位
v0.2 版本线是模块化 OTX 连接器的基础。v0.3 版本线是
从特定于 OTX 的连接器向 NarrowCTI Gateway(一个 OpenCTI 原生的
预摄取情报网关)的过渡。OTX 仍然是第一个来源适配器;它不再是
产品的定位标识。v0.4 版本通过第二个真实订阅源验证了网关模型,
并将 MISP 作为首个战略候选对象。v0.5 轨道开始了向统一网关运行时的迁移。
v0.5 轨道还记录了企业情报网关的目标:NarrowCTI 应成为
在 OpenCTI 摄取之前塑造攻击者、武器库、TTP、受害者学、基础设施以及
隔离/发布上下文的决策层。
## 功能说明
- 使用可配置的威胁情报查询搜索 OTX pulse。
- 通过 OTX API 丰富候选 pulse。
- 在摄取前计算上下文评分并记录评分证据。
- 应用摄取策略来执行 drop(丢弃)、quarantine(隔离)和 export(导出)决策。
- 可选地写入结构化决策审计记录,用于运营审查。
- 记录每个查询的运营摘要,涵盖已审查、已摄取、已丢弃、
已隔离、已跳过和失败的候选对象。
- 使用持久化的本地状态对已处理的 pulse 进行去重。
- 提供 MISP 适配器基础,具备独立状态、dry-run 模式、
run-once 执行和安全的回填过滤器。
- 为攻击者、武器库、MITRE ATT&CK、
受害者学、隔离-发布和图谱丰富过滤器定义企业路线图。
- 为 OpenCTI 摄取构建 STIX bundle。
- 在 OpenCTI 实验环境中作为 Docker 化的连接器运行。
## 架构
```
External and internal intelligence sources
-> source adapters such as OTX and MISP
-> shared feed contract
-> scoring, policy and decision audit
-> source-scoped state and guardrails
-> STIX builder
-> OpenCTI exporter
```
主要模块:
```
connectors/otx/ OTX connector runtime, feed adapter, settings and processor
connectors/misp/ MISP client, feed adapter, settings and processor foundation
core/ Feed contracts, scoring, policy and persistent state handling
exporters/ OpenCTI export and STIX bundle construction
tests/ Unit coverage for the processor and shared pipeline logic
docs/ Product, operations, architecture and release documentation
```
## 产品定位
NarrowCTI 被设计为 OpenCTI 的预摄取情报决策层。
其作用是通过应用特定于来源的丰富、评分、去重和策略,在数据到达 OpenCTI 图谱之前降低订阅源噪音。
产品的发展方向是成为一个专业的 CTI 网关,面向需要精选情报、
可解释的决策和可审计的订阅源治理(而非原始 IoC 转发)的分析师、狩猎者、SOC
和平台团队。OTX、MISP、商业订阅源和内部来源应通过相同的可解释
摄取模型进行评估。企业目标是当来源证据支持时,利用攻击者、
武器库、MITRE 战略和技术、受害者学、基础设施、活动、
漏洞和检测上下文来丰富 OpenCTI。v1.0
的市场定位记录在 `docs/market-positioning-v1.0.md` 中。
MITRE ATT&CK 被视为参考和治理上下文。官方 MITRE
连接器应使用规范的 ATT&CK 基线填充 OpenCTI,而
NarrowCTI 使用在 OTX、MISP 和未来订阅源中找到的 ATT&CK ID 来丰富、评分、
过滤、去重、审计,并随后将精选的情报关联到 OpenCTI 图谱。此决策记录在
`docs/mitre-curation-architecture-v0.7.md` 中。
## 去重姿态
NarrowCTI 应保护 OpenCTI 图谱的整洁,而不是重复转发相同的
工件(artifact)。当前实现使用本地状态对已处理的来源条目进行去重,对每个 bundle 内重复的 STIX 模式进行去重,
并且可以保留一个带有来源发现记录的本地工件索引,用于跨来源
关联。v0.5 网关设计将其扩展为分层的导出前去重:
- 来源条目去重防止相同的 OTX pulse 或 MISP event 被
重复处理。
- 工件去重在导出前规范化指标类型和值。
- 本地工件索引记录来源发现,因此重复的 OTX/MISP
证据可以成为关联上下文,而不是重复导入。
- 启用时,可选的 OpenCTI 查找可以在导入前检查现有的 STIX Indicator 模式。
- 跨来源匹配应成为来源和置信度证据,而不是重复的图谱噪音。
## v0.8 发布
v0.8 版本开始了受控的图谱提升阶段。OTX 仍然是参考
适配器,而 MISP 成为可能的第二个适配器,因为许多运营团队
使用 MISP 作为中心的 IoC 和 event 枢纽。
针对基于 MISP 的环境,预期的流程是:
```
AlienVault OTX and other feeds
-> MISP
-> NarrowCTI Gateway
-> OpenCTI
```
当信息可用时,NarrowCTI 应同时保留收集器上下文(如 MISP)和
原始情报来源(如 AlienVault OTX)。
2026-06-21 的一次本地验证确认,一个 MISP event 可以包含数万
个属性,并且 `opencti/connector-misp:6.9.4` 不支持
`MISP_IMPORT_LIMIT`。因此,NarrowCTI 需要一流的逐次运行和
逐个 event 的安全控制,而不是依赖官方连接器进行
受控回填。
MISP 适配器基础现在包含了针对每次运行的最大 event 数、每个 event 的最大属性数和每个 event 的最大导出 IoC 数的明确防护机制。
默认情况下会跳过过大的 event,并提供明确的截断模式用于
受控实验。
该适配器还支持 dry-run 验证、一次性执行和有界历史
回填过滤器(针对日期范围、标签和仅已发布导入)。
该适配器拥有专门的设置、MISP event 状态和处理器基础,
因此它可以在不共享 OTX pulse 处理状态的情况下演进。
## v0.5 发布
v0.5 版本引入了第一个统一的 NarrowCTI Gateway 运行时。
网关运行时应通过 source 注册表编排已启用的来源(如 OTX 和 MISP),而不是将每个来源容器视为产品形态,
同时保持 source 级别的状态、审计证据、防护机制和故障
隔离。
特定于来源的 OTX 和 MISP 运行时应保持可用,以进行调试、
验证和有界回填。在本地 OpenCTI、队列和 Elasticsearch 行为在重复的有界
运行中保持稳定之前,MISP 应保持可选和受防护状态。详细的 v0.5 设计记录在 `docs/gateway-runtime-v0.5.md` 中,
企业情报网关模型记录在
`docs/enterprise-intelligence-gateway-v0.5.md` 中,产品/架构
连续性验证记录在
`docs/product-architecture-validation-v0.5.md` 中。
## v0.6 发布轨道
v0.6 轨道是隔离和丰富的基础。目标是
将隔离从决策结果转变为可审查、可审计的操作者工作流,同时开始从 OTX 和 MITRE ATT&CK 进行结构化丰富。
当前的 v0.6 实现提供了一个本地隔离存储库和 CLI
工作流,用于列出、显示、拒绝和释放被扣押的候选对象,并带有
审查者理由和释放审计证据。OTX 和 MISP 隔离决策
将待处理记录写入本地存储库,包含评分元数据、来源
溯源、指标和有界的原始快照。释放的记录可以
通过现有的 OpenCTI 导出路径重播,默认使用 dry-run。
丰富基础提取 OTX 攻击者、恶意软件家族、ATT&CK、
行业、国家、TLP 和引用字段,然后在配置时通过本地 MITRE 缓存解析 ATT&CK 技术和
战术上下文。网关 preflight 检查和运营报告现在包含隔离/释放和 MITRE 缓存
姿态,以确保操作者就绪。
详细的 v0.6 设计记录在
`docs/quarantine-enrichment-v0.6.md` 中,发布说明记录在
`docs/release-v0.6.0.md` 中。
初始隔离 CLI 命令:
```
python -m gateway.quarantine --repository state\quarantine.jsonl list --status pending
python -m gateway.quarantine --repository state\quarantine.jsonl show --id
python -m gateway.quarantine --repository state\quarantine.jsonl --release-audit-file state\audit\releases.jsonl reject --id --reason "Out of scope"
python -m gateway.quarantine --repository state\quarantine.jsonl --release-audit-file state\audit\releases.jsonl release --id --reason "Relevant to monitored actor"
python -m gateway.quarantine --repository state\quarantine.jsonl --release-audit-file state\audit\releases.jsonl release-indicators --id --type filehash-sha256,url --reason "High-value indicators"
python -m gateway.quarantine --repository state\quarantine.jsonl export-released --id
python -m gateway.quarantine --repository state\quarantine.jsonl export-released --id --execute --dedup-state-file state\dedup_index.json
python -m gateway.quarantine --release-audit-file state\audit\releases.jsonl audit
```
初始的 v0.6 CLI 在本地记录审查状态和释放审计证据。
配置 `NARROWCTI_QUARANTINE_REPOSITORY` 后,source 处理器会自动将策略隔离的 OTX pulse 和
MISP event 加入队列。释放的记录可以通过相同的 OpenCTI 导出路径重播,默认采用 dry-run;真实
导出需要使用 `--execute`。`audit` 命令汇总
释放、拒绝和导出审计事件,无需手动解析 JSONL。
OTX 实体提取由
`NARROWCTI_ENABLE_OTX_ENTITY_EXTRACTION=true` 控制。在 v0.6 中,此提取仅
针对元数据:攻击者、恶意软件家族、ATT&CK ID、行业、目标
国家、TLP、引用和标签被保留为结构化证据,供
未来图谱丰富使用。
## v0.7 发布
v0.7 版本将 v0.6 的丰富证据转化为具备图谱意识的
STIX/OpenCTI 规划和预览输出。目标是更深入地验证来源
元数据,将支持的证据映射到攻击者、入侵集合、
恶意软件、工具、基础设施、漏洞、活动、部门、位置、
ATT&CK 技术和关系中,并在这些关系影响
OpenCTI 图谱之前保持其可解释性。
整合后的架构记录在 `docs/architecture-v0.7.md` 中。详细的
图谱丰富设计记录在
`docs/graph-enrichment-v0.7.md` 中,发布说明记录在
`docs/release-v0.7.0.md` 中。MITRE 治理架构记录在
`docs/mitre-curation-architecture-v0.7.md` 中。MISP
与官方 OpenCTI 连接器映射的兼容性记录在
`docs/misp-official-connector-mapping-v0.7.md` 中,OTX 与
官方 AlienVault 连接器映射的兼容性记录在
`docs/otx-official-connector-mapping-v0.7.md` 中。上下文评分研究记录在
`docs/contextual-scoring-reference-v0.7.md` 中。
直接来源、MISP 收集器和混合摄取架构记录在
`docs/source-ingestion-modes-v0.7.md` 中。
## v0.8 发布
v0.8 版本开启了 v0.7 之后的受控提升阶段。它增加了
只读的 OpenCTI 图谱查找功能,以便 NarrowCTI 能够检测规范的 ATT&CK 对象,
例如在启用受控图谱提升之前,由官方 MITRE 连接器加载的
现有 `attack-pattern` 条目。
图谱提升设计记录在 `docs/graph-promotion-v0.8.md` 中,
发布说明记录在 `docs/release-v0.8.0.md` 中。部署、分析师
审查、治理报告和支持诊断记录在 `docs/` 下专门的
v0.8 文档中。
NarrowCTI 治理与 OpenCTI 摄取后推理规则之间的关系记录在 `docs/opencti-rules-engine-v0.8.md` 中。
NarrowCTI 负责基于来源的预摄取决策;在精选图谱生成后,OpenCTI Rules Engine 可以选择性地推断出额外的关系。
OpenCTI 选项卡覆盖范围、当前导出状态和待办事项边界记录在
`docs/opencti-coverage-matrix-v0.8.md` 中。
## 治理配置
治理控制必须在配置中可见,然后由网关自动应用。当前的 source 运行时通过环境变量公开评分阈值、
年龄限制、隔离行为、网关级别的允许 TLP、可导出的指标类型、MISP 日期范围、MISP 标签过滤器和容量防护机制。v0.5 轨道添加了网关级别的 `NROWCTI_*` 控制项,用于共享策略、去重和来源选择。未来的企业控制应涵盖攻击者、武器库、ATT&CK、受害者学、图谱状态和隔离释放工作流,而不会对操作者隐藏这些策略选择。
图谱层记录 `graph_candidate_policy` 和 `graph_export_plan`
元数据。`NARROWCTI_GRAPH_EXPORT_MODE=audit` 保持计划仅用于审计,而
`dry-run` 记录将尝试哪些图谱对象和关系。在 v0.8 中,`NARROWCTI_GRAPH_EXPORT_MODE=export` 启用了第一个受控的图谱提升门:OTX 和 MISP 仍然导出遗留的报告和指标,
但也会将已接受的图谱实体和关系添加到同一个 STIX bundle 中。
当来源元数据支持这些实体时,这可以为 OpenCTI 的威胁、武器库、技术、部门、
位置和观测等区域提供数据。本地图谱去重状态可以通过
`NARROWCTI_GRAPH_DEDUP_STATE_FILE` 读取,以便 OTX 和 MISP 导出计划可以将已知的本地图谱键标记为已去重。Dry-run 计划不会被标记为已导出的
知识,只有在 OpenCTI 导入调用成功后,导出状态才会被标记。在 v0.8 中,
`NARROWCTI_OPENCTI_GRAPH_LOOKUP=true` 也可以被启用,以便 OTX 和 MISP 规划在提升创建新的图谱知识之前,向 OpenCTI 查询规范的图谱对象,从 ATT&CK attack-pattern、malware、tools、infrastructure、CVE vulnerabilities、threat actors 和 intrusion sets 以及受控的 locations/countries 开始。规范匹配作为有界的 `graph_export_plan_lookup_matches` 元数据公开,用于审计和未来的企业
报告。当规范匹配包含有效的 STIX `standard_id` 时,导出门将在精选的 STIX bundle 中引用该现有的 OpenCTI 对象,而不是对其进行重复创建。NarrowCTI 创建的图谱 SDO 也使用
确定性的 STIX ID,因此同一精选对象的重复导出将汇聚于相同的 OpenCTI `standard_id`。
对于有界的 MISP 治理重播,
`NARROWCTI_GRAPH_REPLAY_ON_ARTIFACT_DEDUP=true` 可以与
`NARROWCTI_GRAPH_EXPORT_MODE=export` 结合使用,这样指标已知的 event 仍然可以导出已接受的图谱上下文,而无需重播指标对象。
如果在没有明确允许列表的情况下启用了真实的图谱导出,NarrowCTI 将使用一个安全的默认允许列表。它会提升有来源支撑的 CTI 对象,例如
infrastructure、ASN、observables、sectors、locations、arsenal、ATT&CK、
vulnerabilities 和 reports,同时将诸如收集器、来源身份、标签和标记等订阅源记账信息保留在 author/audit 元数据中,除非操作者明确选择加入这些图谱候选类型。
v0.8 图谱 bundle 还会在可解析的情况下激活更丰富的导出目标:MITRE data-source 上下文可以作为精选的 Data Source 附加到 ATT&CK 技术中传播;检测指南和 MISP EventReports 作为 Notes 传播;YARA/Sigma/Snort/Suricata/PCRE 规则作为支持模式的 Indicators 传播;当两个 UUID 端点都解析为图谱对象时,MISP ObjectReferences 将成为 STIX Relationships;当被发现的值解析为 Indicator 时,MISP sightings 将成为 STIX Sightings。MITRE 战术和平台值仍作为精选的上下文/证据保留,在验证 OpenCTI 导入行为是否将其视为一等对象之前,它们不会成为默认导出门的一部分。未解析的纯关系证据将排除在 bundle 之外,而不是创建不安全的 OpenCTI 边。
基础设施提升有意保持保守:除非来源元数据或审查策略明确支持 STIX `infrastructure` 候选对象,否则原始 domain、IP 和 URL 将继续作为 Indicators 或 Observables 处理。这使得 `Observations / Infrastructures` 对于精选的威胁基础设施保持有用,而不是将其变成另一个原始 IOC 存储桶。
为了实现审计可见性,导出的 STIX bundle 现在使用感知来源的 OpenCTI Author 命名约定:
```
via NarrowCTI
```
OTX 导出显示为 `OTX AlienVault via NarrowCTI`,MISP 导出显示为 `MISP via NarrowCTI`,未来的适配器应使用相同的后缀定义自己的来源身份映射。NarrowCTI 还通过
决策审计记录、治理报告、导出计划和 `x_narrowcti_*` 图谱元数据保持可见。
完整的当前配置参考记录在
`docs/configuration-reference.md` 中。当发布说明需要确切的历史行为时,版本化的配置参考仍可作为发布快照使用。
## NarrowCTI Gateway 运行时
NarrowCTI Gateway 运行时通过环境变量进行配置。当前稳定的运行时使用 OTX 适配器,并在以下位置提供了一个安全模板:
```
connectors/otx/.env.example
```
MISP 适配器基础有其自己的配置模板,用于受控的本地验证:
```
connectors/misp/.env.example
```
真实的运行时文件必须根据需要在本地创建:
```
connectors/otx/.env
connectors/misp/.env
```
不要提交真实的 `.env` 文件。它们包含 OpenCTI、OTX 或 MISP 凭据。
必需的 OTX 变量:
```
OPENCTI_URL
OPENCTI_TOKEN
OTX_API_KEY
OTX_QUERIES
```
必需的 MISP 基础变量:
```
OPENCTI_URL
OPENCTI_TOKEN
MISP_URL
MISP_KEY
MISP_QUERIES
```
推荐用于有限本地机器的安全 MISP 验证控制:
```
MISP_DRY_RUN=true
MISP_RUN_ONCE=true
MISP_MAX_EVENTS_PER_RUN=1
MISP_MAX_ATTRIBUTES_PER_EVENT=1000
MISP_MAX_IOCS_PER_EVENT=1000
MISP_QUERIES=*
MISP_FROM_DATE=YYYY-MM-DD
MISP_TO_DATE=YYYY-MM-DD
MISP_TAGS=tlp:green
MISP_PUBLISHED_ONLY=true
MISP_OVERSIZED_EVENT_ACTION=skip
```
为了在验证期间精确重播已知的 MISP event,请使用
`MISP_QUERIES=event:` 或 `MISP_QUERIES=uuid:`,而不是使用广泛的搜索。
用于开发验证的初始 v0.5 网关运行时命令:
```
$LAB_ROOT = ""
cd "$LAB_ROOT\NarrowCTI"
docker run --rm --env-file config\.env.example -v "${LAB_ROOT}\NarrowCTI:/repo" -w /repo opencti-connector-narrowcti python -m gateway.connector
```
该示例保留 `NARROWCTI_DRY_RUN=true` 和 `OTX_DRY_RUN=true` 以确保安全的本地验证。
在运行摄取之前,操作者可以验证网关运行时姿态,
而无需调用订阅源 API 或 OpenCTI:
```
$LAB_ROOT = ""
cd "$LAB_ROOT\NarrowCTI"
docker run --rm --env-file config\.env.example -v "${LAB_ROOT}\NarrowCTI:/repo" -w /repo opencti-connector-narrowcti python -m gateway.preflight
docker run --rm --env-file config\.env.example -v "${LAB_ROOT}\NarrowCTI:/repo" -w /repo opencti-connector-narrowcti python -m gateway.preflight --json
```
preflight 报告已启用的来源、去重姿态、OpenCTI 查找、
汇总摘要输出、来源 dry-run 控制以及用于来源状态、决策审计、释放审计、隔离存储库、MITRE 缓存和工件去重的本地证据路径。未知来源会导致检查失败;较弱的
图谱卫生、缺失的 MITRE 缓存和操作设置将作为
警告报告。
在一次或多次网关运行之后,操作者可以汇总由 `NARROWCTI_RUN_SUMMARY_FILE` 写入的汇总 JSONL 证据:
```
$LAB_ROOT = ""
cd "$LAB_ROOT\NarrowCTI"
docker run --rm -v "${LAB_ROOT}\NarrowCTI:/repo" -w /repo opencti-connector-narrowcti python -m gateway.report --file state\gateway_runs.jsonl
docker run --rm -v "${LAB_ROOT}\NarrowCTI:/repo" -w /repo opencti-connector-narrowcti python -m gateway.report --file state\gateway_runs.jsonl --json
docker run --rm -v "${LAB_ROOT}\NarrowCTI:/repo" -w /repo opencti-connector-narrowcti python -m gateway.report --file state\gateway_runs.jsonl --quarantine-file state\quarantine.jsonl --output-file state\gateway-operational-report.txt
docker run --rm -v "${LAB_ROOT}\NarrowCTI:/repo" -w /repo opencti-connector-narrowcti python -m gateway.decisions --dir state\audit
docker run --rm -v "${LAB_ROOT}\NarrowCTI:/repo" -w /repo opencti-connector-narrowcti python -m gateway.correlation --file state\dedup_index.json
```
该报告汇总了运行次数、时间范围、总体结果以及每个来源的结果(针对已审查、已摄取、已丢弃、已隔离、已跳过、错误和 dry-run 候选对象)。它还报告方向性价值指标,如已接受
条目、已过滤条目、接受率、过滤率和错误率,并列出了在网关运行期间捕获的来源失败记录。逐查询汇总显示了哪些
搜索产生了已审查、已处理、已接受和已过滤的候选对象。决策审计报告汇总了来自来源审计 JSONL 文件的 ingest、drop、quarantine、skip、dry-run 和 error 原因,以及评分范围、平均值和供操作者审查的逐查询决策汇总。它还列出了最近的隔离候选对象。当存在 v0.7 `graph_export_plan` 元数据时,它还会
汇总图谱导出模式、状态、操作、保留原因、
来源/查询汇总、去重的实体/关系计数以及 dry-run 模式下将创建的对象/关系计数。关联报告汇总了本地工件索引,包括跨来源的指纹和来源发现计数。
统一的网关入口点组合了已启用的来源运行时,并隔离了来源失败。在 v0.5 网关成熟之前,请保持特定于来源的运行时可用,以用于调试和有界回填。
## 部署
权威的当前部署和升级流程集中在以下位置:
```
docs/deployment-operations.md
```
部署资产包括:
```
deployment/docker-compose.narrowcti-gateway.yml
deployment/gateway.env.example
```
v0.8 模板默认为 dry-run/run-once,加入现有的 OpenCTI Docker 网络,并且在任何来源执行之前必须使用 `gateway.preflight` 进行验证。其 `ops` 配置文件可以运行 preflight、治理报告、
决策审计报告、工件关联报告、运营验证和支持诊断,而无需启动持续摄取。治理报告服务将文本、JSON 和 HTML 工件持久化保存在网关状态卷下,而支持诊断可以生成一份经过脱敏处理的 HTML 快照和支持 bundle 供审查。特定于发布文档中的旧部署代码片段是历史上下文;请使用 `docs/deployment-operations.md` 获取当前流程。
特定于来源的 OTX 和 MISP 运行时仍然可用于调试和有界回填调查,但它们不是当前部署的真理来源。请使用 `docs/deployment-operations.md` 获取部署和升级步骤,并仅使用 `scripts/misp-backfill-window.ps1 -Preview` 进行受控的 MISP 回填命令检查。
## 验证
在构建 Docker 镜像后,从仓库根目录运行验证:
```
$LAB_ROOT = ""
cd "$LAB_ROOT\NarrowCTI"
.\scripts\validate-release.ps1
```
该辅助工具运行与发布时使用的相同的基于 Docker 的语法和单元验证命令。要在不执行 Docker 的情况下检查命令:
```
.\scripts\validate-release.ps1 -Preview
```
手动等效操作:
```
docker run --rm -v "${LAB_ROOT}\NarrowCTI:/repo" -w /repo opencti-connector-narrowcti python -m py_compile connectors/otx/connector.py connectors/otx/entity_extraction.py connectors/otx/feed_adapter.py connectors/otx/models.py connectors/otx/processor.py connectors/otx/runtime.py connectors/otx/settings.py connectors/otx/otx_client.py connectors/misp/client.py connectors/misp/connector.py connectors/misp/feed_adapter.py connectors/misp/models.py connectors/misp/processor.py connectors/misp/runtime.py connectors/misp/settings.py core/decision_audit.py core/feed_contract.py core/graph_candidates.py core/graph_evidence.py core/indicator_policy.py core/mitre_attack.py core/quarantine.py core/scoring.py core/policy.py core/state_repository.py core/tlp.py exporters/opencti.py exporters/stix_builder.py
docker run --rm -v "${LAB_ROOT}\NarrowCTI:/repo" -w /repo opencti-connector-narrowcti python -m py_compile gateway/preflight.py gateway/report.py gateway/decisions.py gateway/correlation.py gateway/mitre.py gateway/quarantine.py gateway/quarantine_export.py
docker run --rm -v "${LAB_ROOT}\NarrowCTI:/repo" -w /repo opencti-connector-narrowcti python -m unittest discover -s tests -v
```
## 发布流程
该项目使用 `dev` 作为集成分支,使用 `main` 作为稳定分支。
官方版本应从 `main` 发布,并同时附带 Git 标签和包含精选发布说明的 GitHub Release。
```
feature/* -> dev -> main -> version tag -> GitHub Release
```
当前发布版本:
```
v0.8.0
```
## 文档
文档索引可在以下位置找到:
```
docs/README.md
```
推荐起点:
```
docs/getting-started.md
docs/deployment-operations.md
docs/configuration-reference.md
docs/architecture.md
docs/curation-decision-reference.md
docs/environment-profiles.md
docs/container-images.md
docs/community-standards.md
docs/documentation-map.md
docs/graph-promotion-v0.8.md
docs/opencti-coverage-matrix-v0.8.md
docs/repository-structure.md
docs/development-guide.md
docs/community-issue-triage.md
docs/release-v0.8.0.md
docs/release-process.md
docs/roadmap.md
```
开发证据和实验室验证说明可能会保留在仓库中以保持透明度,但发布源归档会通过 `.gitattributes` 进行筛选,以便操作者收到专注于产品的文档。
## 贡献
NarrowCTI 欢迎社区贡献。从这里开始:
```
CONTRIBUTING.md
docs/development-guide.md
docs/community-issue-triage.md
CODE_OF_CONDUCT.md
SUPPORT.md
SECURITY.md
```
Issue 和 pull request 应避免包含机密信息、`.env` 文件、本地 `state/`
工件、原始客户数据和私有订阅源 payload。
## 路线图
- 采用 Apache-2.0 核心分发的开源产品基础。
- v0.8 preflight 可见的能力清单,用于透明的开源运营。
- 超出参考 OTX 适配器的多订阅源支持。
- 高级关联评分和面向分析师的来源证据。
- 具有特定于来源权重的更丰富评分模型。
- Sigma 或检测规则生成。
- 用于策略调整的管理控制。
- 隔离审查和分析师释放工作流。
- 针对攻击者、武器库、MITRE ATT&CK、受害者学和图谱
状态的企业过滤器。
- v1.0 之后的 ML 辅助治理,用于别名、关系建议、
语义去重和优先级排序(在确定性 v1.0 引擎稳定之后进行)。
## 安全说明
- 切勿提交真实的 `.env` 文件或 API token。
- 不要提交本地机器路径、用户名或特定于实验的机密。
- 除非有意重新处理旧的 pulse,否则请保留 `state/state.json`。
- 除非确认已进行备份,否则避免对持久化的 OpenCTI 或 MISP 数据卷执行破坏性的 Docker 清理命令。
- 尽可能私下报告漏洞。请参阅 `SECURITY.md`。
## 许可证
NarrowCTI 核心是在 Apache-2.0 下的开源项目。请参阅:
```
LICENSE
THIRD_PARTY_NOTICES.md
docs/open-source-strategy.md
```
未来的付费服务、托管部署或可选的独立模块应围绕开源核心构建,而不是限制核心网关。标签:OpenCTI, SOC运营, 威胁情报, 开发者工具, 数据治理, 版权保护, 网关, 请求拦截, 逆向工具