secagentx 3.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- secagentx-3.0.0/MANIFEST.in +9 -0
- secagentx-3.0.0/PKG-INFO +325 -0
- secagentx-3.0.0/README.md +280 -0
- secagentx-3.0.0/backend/__init__.py +1 -0
- secagentx-3.0.0/backend/__main__.py +3 -0
- secagentx-3.0.0/backend/agents/__init__.py +1 -0
- secagentx-3.0.0/backend/agents/alert_filter/__init__.py +1 -0
- secagentx-3.0.0/backend/agents/alert_filter/alert_filter_agent.py +88 -0
- secagentx-3.0.0/backend/agents/analyst.py +331 -0
- secagentx-3.0.0/backend/agents/base.py +553 -0
- secagentx-3.0.0/backend/agents/classifier_agent.py +134 -0
- secagentx-3.0.0/backend/agents/cot_engine.py +578 -0
- secagentx-3.0.0/backend/agents/intel.py +46 -0
- secagentx-3.0.0/backend/agents/knowledge/__init__.py +2 -0
- secagentx-3.0.0/backend/agents/knowledge/agentic_rag.py +928 -0
- secagentx-3.0.0/backend/agents/knowledge/knowledge_agent.py +47 -0
- secagentx-3.0.0/backend/agents/registry.py +148 -0
- secagentx-3.0.0/backend/agents/responder.py +51 -0
- secagentx-3.0.0/backend/agents/summary_agent.py +219 -0
- secagentx-3.0.0/backend/auto_ingestor.py +948 -0
- secagentx-3.0.0/backend/auto_patrol.py +452 -0
- secagentx-3.0.0/backend/cli_app.py +523 -0
- secagentx-3.0.0/backend/config/__init__.py +20 -0
- secagentx-3.0.0/backend/config/provider_profiles.py +416 -0
- secagentx-3.0.0/backend/config/runtime_settings.py +84 -0
- secagentx-3.0.0/backend/decision_fusion/__init__.py +32 -0
- secagentx-3.0.0/backend/decision_fusion/base.py +127 -0
- secagentx-3.0.0/backend/decision_fusion/dempster_shafer.py +419 -0
- secagentx-3.0.0/backend/decision_fusion/weighted_average.py +141 -0
- secagentx-3.0.0/backend/email_ingestor.py +588 -0
- secagentx-3.0.0/backend/errors.py +243 -0
- secagentx-3.0.0/backend/escalation.py +453 -0
- secagentx-3.0.0/backend/evaluation/__init__.py +7 -0
- secagentx-3.0.0/backend/evaluation/evaluator.py +197 -0
- secagentx-3.0.0/backend/evaluation/metrics.py +210 -0
- secagentx-3.0.0/backend/federation/__init__.py +22 -0
- secagentx-3.0.0/backend/federation/core.py +743 -0
- secagentx-3.0.0/backend/interface/__init__.py +1 -0
- secagentx-3.0.0/backend/interface/api_server.py +1830 -0
- secagentx-3.0.0/backend/interface/cli.py +671 -0
- secagentx-3.0.0/backend/knowledge/__init__.py +11 -0
- secagentx-3.0.0/backend/knowledge/compliance.py +101 -0
- secagentx-3.0.0/backend/knowledge/cve_db.py +100 -0
- secagentx-3.0.0/backend/knowledge/mitre_attack.py +457 -0
- secagentx-3.0.0/backend/knowledge/remediation.py +84 -0
- secagentx-3.0.0/backend/knowledge/threat_intel_kb.py +246 -0
- secagentx-3.0.0/backend/llm/__init__.py +1 -0
- secagentx-3.0.0/backend/llm/anthropic_compatible.py +191 -0
- secagentx-3.0.0/backend/llm/base.py +81 -0
- secagentx-3.0.0/backend/llm/deepseek.py +221 -0
- secagentx-3.0.0/backend/llm/fallback.py +268 -0
- secagentx-3.0.0/backend/llm/mock.py +204 -0
- secagentx-3.0.0/backend/llm/openai_compatible.py +51 -0
- secagentx-3.0.0/backend/llm/provider.py +217 -0
- secagentx-3.0.0/backend/llm/qwen.py +218 -0
- secagentx-3.0.0/backend/main.py +421 -0
- secagentx-3.0.0/backend/memory/__init__.py +1 -0
- secagentx-3.0.0/backend/memory/episodic_memory.py +132 -0
- secagentx-3.0.0/backend/memory/manager.py +204 -0
- secagentx-3.0.0/backend/memory/semantic_memory.py +156 -0
- secagentx-3.0.0/backend/memory/session_memory.py +102 -0
- secagentx-3.0.0/backend/ml_model/__init__.py +23 -0
- secagentx-3.0.0/backend/ml_model/pipeline.py +191 -0
- secagentx-3.0.0/backend/ml_model/trainer.py +627 -0
- secagentx-3.0.0/backend/models/__init__.py +1 -0
- secagentx-3.0.0/backend/models/event.py +62 -0
- secagentx-3.0.0/backend/models/message.py +58 -0
- secagentx-3.0.0/backend/models/output.py +1216 -0
- secagentx-3.0.0/backend/monitoring/metrics.py +184 -0
- secagentx-3.0.0/backend/orchestrator/__init__.py +17 -0
- secagentx-3.0.0/backend/orchestrator/agent_router.py +145 -0
- secagentx-3.0.0/backend/orchestrator/core.py +159 -0
- secagentx-3.0.0/backend/orchestrator/dynamic_weights.py +287 -0
- secagentx-3.0.0/backend/orchestrator/react_loop.py +1895 -0
- secagentx-3.0.0/backend/orchestrator/risk_model.py +494 -0
- secagentx-3.0.0/backend/orchestrator/risk_scorer.py +356 -0
- secagentx-3.0.0/backend/reasoner/__init__.py +19 -0
- secagentx-3.0.0/backend/reasoner/reasoner.py +316 -0
- secagentx-3.0.0/backend/runtime_assets.py +45 -0
- secagentx-3.0.0/backend/security/__init__.py +24 -0
- secagentx-3.0.0/backend/security/adversarial/__init__.py +13 -0
- secagentx-3.0.0/backend/security/adversarial/guard.py +121 -0
- secagentx-3.0.0/backend/security/adversarial/redteam.py +121 -0
- secagentx-3.0.0/backend/security/adversarial/scanner.py +208 -0
- secagentx-3.0.0/backend/security/audit.py +118 -0
- secagentx-3.0.0/backend/security/auth.py +283 -0
- secagentx-3.0.0/backend/security/circuit_breaker.py +212 -0
- secagentx-3.0.0/backend/security/dispatch.py +18 -0
- secagentx-3.0.0/backend/security/ratelimit.py +237 -0
- secagentx-3.0.0/backend/security/rbac.py +431 -0
- secagentx-3.0.0/backend/security/refresh_sessions.py +193 -0
- secagentx-3.0.0/backend/security/sanitizer.py +32 -0
- secagentx-3.0.0/backend/storage/__init__.py +1 -0
- secagentx-3.0.0/backend/storage/chroma_store.py +79 -0
- secagentx-3.0.0/backend/storage/database.py +296 -0
- secagentx-3.0.0/backend/storage/migrations/env.py +65 -0
- secagentx-3.0.0/backend/storage/migrations/versions/0001_initial_schema.py +101 -0
- secagentx-3.0.0/backend/storage/migrations/versions/0002_add_agent_logs_experiences.py +53 -0
- secagentx-3.0.0/backend/storage/migrations/versions/0003_add_conversation_owner.py +30 -0
- secagentx-3.0.0/backend/storage/models.py +194 -0
- secagentx-3.0.0/backend/storage/repositories/__init__.py +1 -0
- secagentx-3.0.0/backend/storage/repositories/asset_repo.py +86 -0
- secagentx-3.0.0/backend/storage/repositories/conversation_repo.py +216 -0
- secagentx-3.0.0/backend/storage/repositories/event_repo.py +76 -0
- secagentx-3.0.0/backend/storage/repositories/trajectory_repo.py +324 -0
- secagentx-3.0.0/backend/storage/retention.py +117 -0
- secagentx-3.0.0/backend/tools/__init__.py +16 -0
- secagentx-3.0.0/backend/tools/alert_filter.py +208 -0
- secagentx-3.0.0/backend/tools/aliyun_firewall.py +237 -0
- secagentx-3.0.0/backend/tools/aws_firewall.py +369 -0
- secagentx-3.0.0/backend/tools/base.py +445 -0
- secagentx-3.0.0/backend/tools/calling.py +207 -0
- secagentx-3.0.0/backend/tools/cve_search.py +77 -0
- secagentx-3.0.0/backend/tools/execution_engine.py +202 -0
- secagentx-3.0.0/backend/tools/firewall.py +387 -0
- secagentx-3.0.0/backend/tools/geoip.py +168 -0
- secagentx-3.0.0/backend/tools/log_analyzer.py +185 -0
- secagentx-3.0.0/backend/tools/ml_detector.py +226 -0
- secagentx-3.0.0/backend/tools/registry.py +38 -0
- secagentx-3.0.0/backend/tools/tencent_firewall.py +300 -0
- secagentx-3.0.0/backend/tools/threat_intel.py +732 -0
- secagentx-3.0.0/backend/tools/trust_checker.py +76 -0
- secagentx-3.0.0/backend/utils/__init__.py +5 -0
- secagentx-3.0.0/backend/utils/config_loader.py +164 -0
- secagentx-3.0.0/backend/utils/env.py +75 -0
- secagentx-3.0.0/backend/utils/logger.py +150 -0
- secagentx-3.0.0/backend/utils/text.py +32 -0
- secagentx-3.0.0/config.yaml +195 -0
- secagentx-3.0.0/frontend/dist/assets/AgentsView-DFqRplI8.css +1 -0
- secagentx-3.0.0/frontend/dist/assets/AgentsView-DJTpfQ87.js +1 -0
- secagentx-3.0.0/frontend/dist/assets/AttackChainView-BVfI-SC6.js +1 -0
- secagentx-3.0.0/frontend/dist/assets/ChatView-Bg4nIlQ0.css +1 -0
- secagentx-3.0.0/frontend/dist/assets/ChatView-CRndtmEC.js +38 -0
- secagentx-3.0.0/frontend/dist/assets/DashboardView-BXs4AWv8.js +1 -0
- secagentx-3.0.0/frontend/dist/assets/DashboardView-WnHWiqBW.css +1 -0
- secagentx-3.0.0/frontend/dist/assets/EventDetailView-DQk6Qp7-.js +1 -0
- secagentx-3.0.0/frontend/dist/assets/EventDetailView-Dj-a-zWr.css +1 -0
- secagentx-3.0.0/frontend/dist/assets/EventsView-8xh8uKO0.js +1 -0
- secagentx-3.0.0/frontend/dist/assets/EventsView-BHfFn66K.css +1 -0
- secagentx-3.0.0/frontend/dist/assets/KnowledgeView-C2N3v9bF.css +1 -0
- secagentx-3.0.0/frontend/dist/assets/KnowledgeView-D54ODoC9.js +11 -0
- secagentx-3.0.0/frontend/dist/assets/LoginView-CjvFmo7C.js +1 -0
- secagentx-3.0.0/frontend/dist/assets/LoginView-D14FzcsP.css +1 -0
- secagentx-3.0.0/frontend/dist/assets/SettingsView-JOJuoABi.js +1 -0
- secagentx-3.0.0/frontend/dist/assets/UsersView-DhMXZhir.js +1 -0
- secagentx-3.0.0/frontend/dist/assets/_plugin-vue_export-helper-BDNMzG2s.js +1 -0
- secagentx-3.0.0/frontend/dist/assets/index-D9Su3fYY.css +1 -0
- secagentx-3.0.0/frontend/dist/assets/index-DBEjbyJR.js +4 -0
- secagentx-3.0.0/frontend/dist/assets/rolldown-runtime-DK3Fl9T5.js +1 -0
- secagentx-3.0.0/frontend/dist/assets/vendor-charts-Dh1nChzO.js +39 -0
- secagentx-3.0.0/frontend/dist/assets/vendor-icons-BTNgi7vU.js +1 -0
- secagentx-3.0.0/frontend/dist/assets/vendor-ui-Cdd65KTN.js +7367 -0
- secagentx-3.0.0/frontend/dist/assets/vendor-vue-CXKcZAmz.js +1 -0
- secagentx-3.0.0/frontend/dist/index.html +51 -0
- secagentx-3.0.0/frontend/index.html +46 -0
- secagentx-3.0.0/frontend/package-lock.json +2983 -0
- secagentx-3.0.0/frontend/package.json +37 -0
- secagentx-3.0.0/frontend/src/App.vue +231 -0
- secagentx-3.0.0/frontend/src/__tests__/chat.spec.js +468 -0
- secagentx-3.0.0/frontend/src/__tests__/http.spec.js +42 -0
- secagentx-3.0.0/frontend/src/__tests__/router.spec.js +94 -0
- secagentx-3.0.0/frontend/src/main.js +12 -0
- secagentx-3.0.0/frontend/src/router/index.js +117 -0
- secagentx-3.0.0/frontend/src/stores/chat.js +671 -0
- secagentx-3.0.0/frontend/src/styles/tokens.css +282 -0
- secagentx-3.0.0/frontend/src/utils/http.js +191 -0
- secagentx-3.0.0/frontend/src/views/AgentsView.vue +227 -0
- secagentx-3.0.0/frontend/src/views/AttackChainView.vue +210 -0
- secagentx-3.0.0/frontend/src/views/ChatView.vue +1107 -0
- secagentx-3.0.0/frontend/src/views/DashboardView.vue +514 -0
- secagentx-3.0.0/frontend/src/views/EventDetailView.vue +387 -0
- secagentx-3.0.0/frontend/src/views/EventsView.vue +253 -0
- secagentx-3.0.0/frontend/src/views/KnowledgeView.vue +883 -0
- secagentx-3.0.0/frontend/src/views/LoginView.vue +314 -0
- secagentx-3.0.0/frontend/src/views/SettingsView.vue +226 -0
- secagentx-3.0.0/frontend/src/views/UsersView.vue +235 -0
- secagentx-3.0.0/frontend/vite.config.js +55 -0
- secagentx-3.0.0/knowledge_data/compliance/regulations.json +383 -0
- secagentx-3.0.0/knowledge_data/cve/vulnerabilities.json +70720 -0
- secagentx-3.0.0/knowledge_data/mitre_attack/techniques.json +14097 -0
- secagentx-3.0.0/knowledge_data/remediation/remediation.json +574 -0
- secagentx-3.0.0/knowledge_data/threat_intel/actors.json +1602 -0
- secagentx-3.0.0/knowledge_data/threat_intel/malware.json +971 -0
- secagentx-3.0.0/pyproject.toml +88 -0
- secagentx-3.0.0/secagentx.egg-info/PKG-INFO +325 -0
- secagentx-3.0.0/secagentx.egg-info/SOURCES.txt +202 -0
- secagentx-3.0.0/secagentx.egg-info/dependency_links.txt +1 -0
- secagentx-3.0.0/secagentx.egg-info/entry_points.txt +2 -0
- secagentx-3.0.0/secagentx.egg-info/requires.txt +39 -0
- secagentx-3.0.0/secagentx.egg-info/top_level.txt +1 -0
- secagentx-3.0.0/setup.cfg +4 -0
- secagentx-3.0.0/setup.py +45 -0
- secagentx-3.0.0/tests/test_agents.py +129 -0
- secagentx-3.0.0/tests/test_api.py +280 -0
- secagentx-3.0.0/tests/test_auth_sessions.py +114 -0
- secagentx-3.0.0/tests/test_auto_modules.py +283 -0
- secagentx-3.0.0/tests/test_conversation_isolation.py +66 -0
- secagentx-3.0.0/tests/test_core_flow.py +128 -0
- secagentx-3.0.0/tests/test_dispatch_security.py +67 -0
- secagentx-3.0.0/tests/test_email_ingestor.py +376 -0
- secagentx-3.0.0/tests/test_federation.py +197 -0
- secagentx-3.0.0/tests/test_knowledge.py +180 -0
- secagentx-3.0.0/tests/test_rbac.py +130 -0
- secagentx-3.0.0/tests/test_security.py +183 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
include config.yaml
|
|
2
|
+
recursive-include knowledge_data *.json
|
|
3
|
+
include frontend/index.html frontend/package.json frontend/package-lock.json frontend/vite.config.js
|
|
4
|
+
recursive-include frontend/src *
|
|
5
|
+
recursive-include frontend/public *
|
|
6
|
+
recursive-include frontend/dist *
|
|
7
|
+
prune frontend/node_modules
|
|
8
|
+
prune frontend/.vite
|
|
9
|
+
prune frontend/coverage
|
secagentx-3.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: secagentx
|
|
3
|
+
Version: 3.0.0
|
|
4
|
+
Summary: AI 多智能体协同安全检测系统
|
|
5
|
+
License-Expression: MIT
|
|
6
|
+
Project-URL: Homepage, https://github.com/songruifeng1010/secagent
|
|
7
|
+
Requires-Python: >=3.10
|
|
8
|
+
Description-Content-Type: text/markdown
|
|
9
|
+
Requires-Dist: fastapi>=0.110.0
|
|
10
|
+
Requires-Dist: uvicorn[standard]>=0.29.0
|
|
11
|
+
Requires-Dist: websockets>=12.0
|
|
12
|
+
Requires-Dist: python-multipart>=0.0.9
|
|
13
|
+
Requires-Dist: sqlalchemy>=2.0.0
|
|
14
|
+
Requires-Dist: aiosqlite>=0.20.0
|
|
15
|
+
Requires-Dist: asyncpg>=0.29.0
|
|
16
|
+
Requires-Dist: httpx>=0.27.0
|
|
17
|
+
Requires-Dist: python-dotenv>=1.0.0
|
|
18
|
+
Requires-Dist: pyyaml>=6.0
|
|
19
|
+
Requires-Dist: pydantic>=2.0.0
|
|
20
|
+
Requires-Dist: pydantic-settings>=2.0.0
|
|
21
|
+
Requires-Dist: pyjwt>=2.8.0
|
|
22
|
+
Requires-Dist: bcrypt>=4.1.0
|
|
23
|
+
Requires-Dist: rich>=13.7.0
|
|
24
|
+
Requires-Dist: aiofiles>=23.2.0
|
|
25
|
+
Requires-Dist: numpy>=1.26.0
|
|
26
|
+
Requires-Dist: prometheus-client>=0.20.0
|
|
27
|
+
Requires-Dist: alembic>=1.13.0
|
|
28
|
+
Provides-Extra: credentials
|
|
29
|
+
Requires-Dist: keyring>=25.0.0; extra == "credentials"
|
|
30
|
+
Provides-Extra: dev
|
|
31
|
+
Requires-Dist: pytest>=8.0.0; extra == "dev"
|
|
32
|
+
Requires-Dist: pytest-asyncio>=0.23.0; extra == "dev"
|
|
33
|
+
Requires-Dist: pytest-cov>=5.0.0; extra == "dev"
|
|
34
|
+
Requires-Dist: pytest-timeout>=2.3.0; extra == "dev"
|
|
35
|
+
Requires-Dist: build>=1.2.0; extra == "dev"
|
|
36
|
+
Provides-Extra: ml
|
|
37
|
+
Requires-Dist: chromadb>=0.5.0; extra == "ml"
|
|
38
|
+
Requires-Dist: sentence-transformers>=2.6.0; extra == "ml"
|
|
39
|
+
Requires-Dist: pandas>=2.0.0; extra == "ml"
|
|
40
|
+
Requires-Dist: scikit-learn>=1.3.0; extra == "ml"
|
|
41
|
+
Requires-Dist: xgboost>=2.0.0; extra == "ml"
|
|
42
|
+
Requires-Dist: lightgbm>=4.0.0; extra == "ml"
|
|
43
|
+
Requires-Dist: imbalanced-learn>=0.12.0; extra == "ml"
|
|
44
|
+
Requires-Dist: joblib>=1.3.0; extra == "ml"
|
|
45
|
+
|
|
46
|
+
# SecAgentX · 企业安全智能体 v3.0.0
|
|
47
|
+
|
|
48
|
+
多智能体协同安全检测系统,支持 OpenAI / Anthropic 兼容协议及主流云端、本地模型,采用 **Agentic-RAG** 实现知识增强检索,并支持默认关闭、按需启用的自动威胁响应。
|
|
49
|
+
|
|
50
|
+
## 安装 CLI
|
|
51
|
+
|
|
52
|
+
推荐通过 Python 发行包安装;SecAgentX 的后端、预构建 Web、前端脚手架和知识库会一起进入 wheel,不需要用户再安装 Node 才能启动默认界面。
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# 正式发布到 PyPI 后
|
|
56
|
+
pipx install secagentx
|
|
57
|
+
|
|
58
|
+
# 直接从仓库安装(仓库需包含已构建的 frontend/dist)
|
|
59
|
+
pipx install "git+https://github.com/songruifeng1010/secagent.git"
|
|
60
|
+
|
|
61
|
+
secagentx onboard
|
|
62
|
+
secagentx
|
|
63
|
+
secagentx dashboard
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
`npm` 只用于开发或定制 Vue 前端;CLI/后端的权威安装入口是 `pipx`/Python wheel,避免把 Python 服务伪装成 Node 包。
|
|
67
|
+
|
|
68
|
+
## Windows CMD 源码快速开始
|
|
69
|
+
|
|
70
|
+
```bat
|
|
71
|
+
cd /d C:\path\to\secagent
|
|
72
|
+
py -3 -m venv .venv
|
|
73
|
+
.venv\Scripts\python.exe -m pip install -r requirements.txt
|
|
74
|
+
.venv\Scripts\python.exe -m pip install -e . --no-deps
|
|
75
|
+
|
|
76
|
+
rem 首次选择厂商、填写 API Key,并进行真实连通验证
|
|
77
|
+
secagentx onboard
|
|
78
|
+
|
|
79
|
+
rem 终端多轮对话;也可直接运行项目内置的 secagentx.cmd
|
|
80
|
+
secagentx
|
|
81
|
+
secagentx ask "分析这条安全告警"
|
|
82
|
+
|
|
83
|
+
rem 启动并自动打开 Web 控制台
|
|
84
|
+
secagentx dashboard
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
API Key 默认保存到 Windows 用户级 DPAPI 加密凭据库(安装可选 `keyring` 后也可使用系统 Keyring),不会写入项目或明文 JSON。只有 Provider 完成一次真实请求验证后才会成为活动配置。
|
|
88
|
+
|
|
89
|
+
内置预设包括 DeepSeek、通义千问、OpenAI、Anthropic、Azure OpenAI、Gemini、OpenRouter、xAI、Kimi、Ollama 和 LM Studio;其他厂商可选择“自定义 OpenAI/Anthropic 兼容接口”,填写 API Base 与模型 ID。运行 `secagentx providers` 查看档案,`secagentx providers --use PROFILE_ID` 切换。
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## 当前可用状态
|
|
94
|
+
|
|
95
|
+
| 维度 | 状态 | 备注 |
|
|
96
|
+
|------|:----:|------|
|
|
97
|
+
| 架构设计 | 可运行 | 多智能体协同 + 熔断器 + 审计日志;生产上线前仍需按环境压测和安全验收 |
|
|
98
|
+
| ML 模型 | 可选 | 需安装 `requirements-ml.txt`;仓库不附带预训练模型,指标不能替代生产数据验证 |
|
|
99
|
+
| 防火墙对接 | 适配器模式 | iptables / nftables / Cloud API 多种后端 |
|
|
100
|
+
| 告警接入 | Webhook / Kafka / Syslog | 三种接入方式均已实现 |
|
|
101
|
+
| 数据库 | PostgreSQL + SQLite | 环境变量切换,生产/开发灵活适配 |
|
|
102
|
+
| 认证安全 | JWT + RBAC + 脱敏 | 企业级安全体系 |
|
|
103
|
+
| 自动化 | 默认关闭 | 可配置自动闭环 / 封禁 / 升级 / 巡检,启用前应验证白名单和阈值 |
|
|
104
|
+
| Docker 部署 | 核心服务 | SecAgentX 应用 + PostgreSQL |
|
|
105
|
+
| 内置知识 | **1,674 NVD/CISA KEV + 365 MITRE + 14 合规 + 23 剧本** | 恶意 IP 缓存为可选下载数据,不是启动前置条件 |
|
|
106
|
+
| 自动化测试 | 后端 + 前端测试套件 | 含单元测试、集成测试、认证隔离和前端测试;以当前验收输出为准 |
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## 生产部署(推荐 Docker)
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
# 在项目根目录显式设置强凭据;Compose 不提供默认密码。
|
|
114
|
+
export SECAGENTX_PASSWORD='replace-with-a-strong-password'
|
|
115
|
+
export SECAGENTX_JWT_SECRET='replace-with-a-random-secret-at-least-32-chars'
|
|
116
|
+
export POSTGRES_PASSWORD='replace-with-a-strong-random-postgres-password'
|
|
117
|
+
docker compose up -d
|
|
118
|
+
# 访问 http://localhost:8000
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## 开发模式启动
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
# 核心运行时
|
|
125
|
+
pip install -r requirements.txt
|
|
126
|
+
# 开发、测试与 CI
|
|
127
|
+
pip install -r requirements-dev.txt
|
|
128
|
+
# 可选:向量化与机器学习能力
|
|
129
|
+
pip install -r requirements-ml.txt
|
|
130
|
+
# 可选:阿里云、腾讯云、AWS 防火墙适配器
|
|
131
|
+
pip install -r requirements-cloud.txt
|
|
132
|
+
|
|
133
|
+
# 首次启动前配置管理员凭据(示例值请替换)
|
|
134
|
+
export SECAGENTX_PASSWORD='replace-with-a-strong-password'
|
|
135
|
+
|
|
136
|
+
# 启动 API 服务
|
|
137
|
+
python3 -m backend.interface.api_server
|
|
138
|
+
|
|
139
|
+
# 启动前端(新终端)
|
|
140
|
+
cd frontend && npm ci && npm run dev
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### 统一 CLI 与 Web 启动
|
|
144
|
+
|
|
145
|
+
CLI 与 Web 服务使用同一套 Agent、认证隔离和知识库代码,可交互运行,也可输出机器可读 JSON:
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
# 首次配置(会验证 Provider 后再保存)
|
|
149
|
+
secagentx onboard
|
|
150
|
+
|
|
151
|
+
# 交互模式
|
|
152
|
+
secagentx
|
|
153
|
+
|
|
154
|
+
# 一次性查询
|
|
155
|
+
secagentx ask "什么是 SQL 注入?"
|
|
156
|
+
|
|
157
|
+
# 自动化脚本/CI 使用
|
|
158
|
+
secagentx ask "分析 45.33.32.156" --json
|
|
159
|
+
|
|
160
|
+
# 启动 Web;默认只监听 127.0.0.1
|
|
161
|
+
secagentx dashboard
|
|
162
|
+
|
|
163
|
+
# 诊断配置,--live 会发起一次真实模型请求
|
|
164
|
+
secagentx doctor
|
|
165
|
+
secagentx doctor --live
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
未配置真实 LLM Key 时可显式设置 `LLM_PROVIDER=mock` 验证启动链路;此模式只用于开发,不代表真实研判能力。Windows PowerShell 使用 `$env:LLM_PROVIDER='mock'`,Linux/macOS 使用 `export LLM_PROVIDER=mock`。
|
|
169
|
+
|
|
170
|
+
### 搭建自己的前端
|
|
171
|
+
|
|
172
|
+
```bat
|
|
173
|
+
secagentx ui init C:\work\my-secagentx-ui
|
|
174
|
+
cd /d C:\work\my-secagentx-ui
|
|
175
|
+
npm ci
|
|
176
|
+
npm run dev
|
|
177
|
+
|
|
178
|
+
rem 构建后让 SecAgentX 托管自定义界面
|
|
179
|
+
npm run build
|
|
180
|
+
secagentx dashboard --ui C:\work\my-secagentx-ui\dist
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
`ui init` 不复制 `node_modules`、`dist` 或覆盖非空目录。监听非回环地址时必须显式添加 `--allow-remote`,并在企业环境配置 TLS 反向代理、防火墙和 `SECAGENTX_CORS_ORIGINS`。
|
|
184
|
+
|
|
185
|
+
### 验证
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
python -m compileall -q backend tests scripts
|
|
189
|
+
pytest -m "not slow" --timeout=60
|
|
190
|
+
cd frontend && npm test && npm run build
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
真实威胁 IP 缓存不是核心启动前置条件。网络可用时运行 `python scripts/update_threat_ips.py` 获取;若所有远程源失败,脚本会返回失败并保留已有缓存,不会写入空库。
|
|
194
|
+
|
|
195
|
+
## 生产数据原则
|
|
196
|
+
|
|
197
|
+
事件、资产和处置记录只来自 API/Webhook、日志接入器或数据库中的实际记录。空数据库会在 Web 中显示空状态,不会自动注入演示告警。MITRE ATT&CK 和 NVD/CISA KEV 为带来源的公开知识快照,合规/处置内容为静态参考指南,都不代表企业的实时业务数据。威胁情报未配置外部 API 时会明确标注覆盖不足。
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## 架构
|
|
202
|
+
|
|
203
|
+
```
|
|
204
|
+
用户 (Web/CLI/Webhook)
|
|
205
|
+
│
|
|
206
|
+
┌────────────┴────────────┐
|
|
207
|
+
│ TrueReAct 循环调度引擎 │ ← 活动模型 Provider
|
|
208
|
+
└────────────┬────────────┘
|
|
209
|
+
│
|
|
210
|
+
┌─────────────────────┼─────────────────────┐
|
|
211
|
+
│ │ │ │
|
|
212
|
+
Analyst Intel Responder Knowledge
|
|
213
|
+
(统一 Provider) (统一 Provider) (统一 Provider) (Provider+RAG)
|
|
214
|
+
│ │ │ │
|
|
215
|
+
└───────────┴─────────────────┴─────────────┘
|
|
216
|
+
│
|
|
217
|
+
┌──────────┴──────────┐
|
|
218
|
+
│ Tools (6 个安全工具) │
|
|
219
|
+
│ threat_intel / │ → iptables/Cloud API
|
|
220
|
+
│ firewall / geoip / │
|
|
221
|
+
│ cve_search / │
|
|
222
|
+
│ log_analyzer / │
|
|
223
|
+
│ alert_filter │
|
|
224
|
+
└──────────┬──────────┘
|
|
225
|
+
│
|
|
226
|
+
┌─────────────────────┼─────────────────────┐
|
|
227
|
+
│ │ │
|
|
228
|
+
PostgreSQL/SQLite ChromaDB向量库 Docker Compose
|
|
229
|
+
(事件/用户/日志) (可选语义RAG) (应用 + PostgreSQL)
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## 核心能力
|
|
235
|
+
|
|
236
|
+
| 能力 | 描述 |
|
|
237
|
+
|------|------|
|
|
238
|
+
| **多智能体协同** | Analyst / Intel / Responder / Knowledge / AlertFilter / Summary / Classifier 7 个 Agent |
|
|
239
|
+
| **多厂商 LLM** | OpenAI / Anthropic 兼容协议,云端和本地模型统一配置,保留旧版 Fallback 兼容 |
|
|
240
|
+
| **Agentic-RAG** | 知识增强检索,MITRE ATT&CK 全覆盖(365 技术 / 15 战术) |
|
|
241
|
+
| **威胁情报** | VirusTotal / AbuseIPDB / OTX 可选多源验证;缺 Key 时使用本地知识和离线适配器 |
|
|
242
|
+
| **ML 威胁检测** | 可选安装;训练与评估代码可用,实际效果需使用部署环境数据重新验证 |
|
|
243
|
+
| **防火墙封禁** | 默认禁用;显式配置 iptables / nftables / Cloud API,Mock 仅测试 |
|
|
244
|
+
| **自动处置** | 自动闭环 / 封禁 / 升级 / 巡检 / 数据保留,默认关闭 |
|
|
245
|
+
| **可解释风险评分** | 行为证据 / 威胁情报 / IP真实性 / 历史信誉 四维加减分,最终分数 + 危级,逐规则可审计 |
|
|
246
|
+
| **告警接入** | Webhook / Kafka / Syslog 三种方式 |
|
|
247
|
+
| **企业安全** | JWT 认证 + RBAC 权限 + 熔断器 + 审计日志 + 限流 |
|
|
248
|
+
| **跨区域联邦** | 多区域事件/IP 同步,mesh 拓扑 |
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## 内置知识与可选数据
|
|
253
|
+
|
|
254
|
+
| 数据域 | 数据量 | 来源 | 真实性 |
|
|
255
|
+
|--------|:------:|------|:------:|
|
|
256
|
+
| 恶意 IP | 可选下载 | FireHOL / Darklist / Blocklist.de 等公开情报源 | 当前仓库不内置缓存,运行更新脚本获取 |
|
|
257
|
+
| MITRE ATT&CK 技术 | **365 个** | MITRE 官方 CTI | 官方数据 |
|
|
258
|
+
| MITRE ATT&CK 战术 | **15 个** | MITRE 官方 CTI | 官方数据 |
|
|
259
|
+
| NVD/CISA KEV | **1,674 条** (595 CRITICAL / 871 HIGH / 200 MEDIUM / 8 LOW) | NVD CVE API 2.0 | 官方可追溯快照 |
|
|
260
|
+
| 合规法规 | **14 项** | 等保2.0/网络安全法/GDPR/个保法等 | 真实法规 |
|
|
261
|
+
| 应急响应剧本 | **23 个** | 真实攻击场景(SSH爆破/勒索/C2/钓鱼等) | 真实场景 |
|
|
262
|
+
| APT 威胁组织 | **34 个** | 公开威胁情报 | 真实组织 |
|
|
263
|
+
| 恶意软件 | **47 个** | 公开威胁情报 | 真实恶意软件 |
|
|
264
|
+
|
|
265
|
+
### 数据更新命令
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
# 单独更新威胁 IP
|
|
269
|
+
python3 scripts/update_threat_ips.py
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
## API 端点一览(51 个 HTTP/WebSocket 路由)
|
|
275
|
+
|
|
276
|
+
| 分类 | 端点 | 说明 |
|
|
277
|
+
|------|------|------|
|
|
278
|
+
| **认证** | `/api/auth/login`, `/api/auth/refresh` | JWT 登录/刷新 |
|
|
279
|
+
| **健康** | `/api/health`, `/api/stats`, `/api/metrics` | 系统状态 |
|
|
280
|
+
| **事件** | `/api/events`, `/api/events/{id}` | 安全事件 CRUD |
|
|
281
|
+
| **MITRE** | `/api/mitre/search`, `/api/mitre/technique/{id}`, `/api/mitre/kill-chain`, `/api/mitre/attack-flow` | ATT&CK 知识库 |
|
|
282
|
+
| **CVE** | `/api/cve/search`, `/api/cve/{id}`, `/api/cve/by-mitre/{tech_id}` | 漏洞库 |
|
|
283
|
+
| **合规** | `/api/compliance/search`, `/api/compliance/{name}` | 法规库 |
|
|
284
|
+
| **剧本** | `/api/remediation/search`, `/api/remediation/{scenario}` | 应急响应 |
|
|
285
|
+
| **Agent** | `/api/agents`, `/api/agents/runtime` | 智能体运行时 |
|
|
286
|
+
| **联邦** | `/api/federation/status`, `/api/federation/events`, `/api/federation/blacklist` | 跨区域同步 |
|
|
287
|
+
| **用户** | `/api/users`, `/api/users/{username}`, `/api/users/me` | 用户管理 |
|
|
288
|
+
| **WebSocket** | `/ws/chat` | 实时对话 |
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
## 项目结构
|
|
293
|
+
|
|
294
|
+
```
|
|
295
|
+
secagentx/
|
|
296
|
+
├── backend/
|
|
297
|
+
│ ├── agents/ # 7 个安全 Agent 实现
|
|
298
|
+
│ ├── orchestrator/ # TrueReAct 循环总调度
|
|
299
|
+
│ ├── tools/ # 6 个注册安全工具(含多种防火墙后端)
|
|
300
|
+
│ ├── llm/ # 多厂商 LLM 兼容层(OpenAI / Anthropic / Mock)
|
|
301
|
+
│ ├── ml_model/ # 可选 ML 训练与检测流水线
|
|
302
|
+
│ ├── knowledge/ # MITRE / CVE / 合规 / 剧本 / 威胁情报
|
|
303
|
+
│ ├── storage/ # PostgreSQL/SQLite + Chroma 向量库
|
|
304
|
+
│ ├── security/ # 认证/脱敏/熔断器/审计/限流
|
|
305
|
+
│ ├── federation/ # 跨区域联邦同步
|
|
306
|
+
│ └── interface/ # CLI + FastAPI + WebSocket
|
|
307
|
+
├── frontend/ # Vue 3 + Naive UI + ECharts (10 视图)
|
|
308
|
+
├── knowledge_data/ # 知识库数据 (1,674 KEV / 365 MITRE / 14 合规 / 23 剧本)
|
|
309
|
+
├── Dockerfile # 前端构建 + Python 运行时多阶段镜像
|
|
310
|
+
├── docker-compose.yml # SecAgentX + PostgreSQL 生产部署
|
|
311
|
+
├── scripts/ # 运维/数据注入脚本
|
|
312
|
+
├── tests/ # 后端单元与集成测试
|
|
313
|
+
└── data/ # 运行时 SQLite 数据库与可选缓存
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
## 版本历史
|
|
319
|
+
|
|
320
|
+
| 版本 | 日期 | 说明 |
|
|
321
|
+
|:----:|:----:|------|
|
|
322
|
+
| v3.0.0 | 2026-08-22 | 统一 CLI/onboarding/dashboard、自定义 UI、多厂商 Provider、系统安全凭据与企业默认边界 |
|
|
323
|
+
| v2.1.0 | 2026-07-23 | ML 训练评估流水线 / 前后端路由联调 / 前端测试 |
|
|
324
|
+
| v2.0.0 | 2026-07-08 | 多 Agent + TrueReAct + Docker Compose |
|
|
325
|
+
| v1.1 | 2026-06-15 | 单 Agent + 基础 API + 前端初版 |
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
# SecAgentX · 企业安全智能体 v3.0.0
|
|
2
|
+
|
|
3
|
+
多智能体协同安全检测系统,支持 OpenAI / Anthropic 兼容协议及主流云端、本地模型,采用 **Agentic-RAG** 实现知识增强检索,并支持默认关闭、按需启用的自动威胁响应。
|
|
4
|
+
|
|
5
|
+
## 安装 CLI
|
|
6
|
+
|
|
7
|
+
推荐通过 Python 发行包安装;SecAgentX 的后端、预构建 Web、前端脚手架和知识库会一起进入 wheel,不需要用户再安装 Node 才能启动默认界面。
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# 正式发布到 PyPI 后
|
|
11
|
+
pipx install secagentx
|
|
12
|
+
|
|
13
|
+
# 直接从仓库安装(仓库需包含已构建的 frontend/dist)
|
|
14
|
+
pipx install "git+https://github.com/songruifeng1010/secagent.git"
|
|
15
|
+
|
|
16
|
+
secagentx onboard
|
|
17
|
+
secagentx
|
|
18
|
+
secagentx dashboard
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
`npm` 只用于开发或定制 Vue 前端;CLI/后端的权威安装入口是 `pipx`/Python wheel,避免把 Python 服务伪装成 Node 包。
|
|
22
|
+
|
|
23
|
+
## Windows CMD 源码快速开始
|
|
24
|
+
|
|
25
|
+
```bat
|
|
26
|
+
cd /d C:\path\to\secagent
|
|
27
|
+
py -3 -m venv .venv
|
|
28
|
+
.venv\Scripts\python.exe -m pip install -r requirements.txt
|
|
29
|
+
.venv\Scripts\python.exe -m pip install -e . --no-deps
|
|
30
|
+
|
|
31
|
+
rem 首次选择厂商、填写 API Key,并进行真实连通验证
|
|
32
|
+
secagentx onboard
|
|
33
|
+
|
|
34
|
+
rem 终端多轮对话;也可直接运行项目内置的 secagentx.cmd
|
|
35
|
+
secagentx
|
|
36
|
+
secagentx ask "分析这条安全告警"
|
|
37
|
+
|
|
38
|
+
rem 启动并自动打开 Web 控制台
|
|
39
|
+
secagentx dashboard
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
API Key 默认保存到 Windows 用户级 DPAPI 加密凭据库(安装可选 `keyring` 后也可使用系统 Keyring),不会写入项目或明文 JSON。只有 Provider 完成一次真实请求验证后才会成为活动配置。
|
|
43
|
+
|
|
44
|
+
内置预设包括 DeepSeek、通义千问、OpenAI、Anthropic、Azure OpenAI、Gemini、OpenRouter、xAI、Kimi、Ollama 和 LM Studio;其他厂商可选择“自定义 OpenAI/Anthropic 兼容接口”,填写 API Base 与模型 ID。运行 `secagentx providers` 查看档案,`secagentx providers --use PROFILE_ID` 切换。
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## 当前可用状态
|
|
49
|
+
|
|
50
|
+
| 维度 | 状态 | 备注 |
|
|
51
|
+
|------|:----:|------|
|
|
52
|
+
| 架构设计 | 可运行 | 多智能体协同 + 熔断器 + 审计日志;生产上线前仍需按环境压测和安全验收 |
|
|
53
|
+
| ML 模型 | 可选 | 需安装 `requirements-ml.txt`;仓库不附带预训练模型,指标不能替代生产数据验证 |
|
|
54
|
+
| 防火墙对接 | 适配器模式 | iptables / nftables / Cloud API 多种后端 |
|
|
55
|
+
| 告警接入 | Webhook / Kafka / Syslog | 三种接入方式均已实现 |
|
|
56
|
+
| 数据库 | PostgreSQL + SQLite | 环境变量切换,生产/开发灵活适配 |
|
|
57
|
+
| 认证安全 | JWT + RBAC + 脱敏 | 企业级安全体系 |
|
|
58
|
+
| 自动化 | 默认关闭 | 可配置自动闭环 / 封禁 / 升级 / 巡检,启用前应验证白名单和阈值 |
|
|
59
|
+
| Docker 部署 | 核心服务 | SecAgentX 应用 + PostgreSQL |
|
|
60
|
+
| 内置知识 | **1,674 NVD/CISA KEV + 365 MITRE + 14 合规 + 23 剧本** | 恶意 IP 缓存为可选下载数据,不是启动前置条件 |
|
|
61
|
+
| 自动化测试 | 后端 + 前端测试套件 | 含单元测试、集成测试、认证隔离和前端测试;以当前验收输出为准 |
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## 生产部署(推荐 Docker)
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
# 在项目根目录显式设置强凭据;Compose 不提供默认密码。
|
|
69
|
+
export SECAGENTX_PASSWORD='replace-with-a-strong-password'
|
|
70
|
+
export SECAGENTX_JWT_SECRET='replace-with-a-random-secret-at-least-32-chars'
|
|
71
|
+
export POSTGRES_PASSWORD='replace-with-a-strong-random-postgres-password'
|
|
72
|
+
docker compose up -d
|
|
73
|
+
# 访问 http://localhost:8000
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## 开发模式启动
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
# 核心运行时
|
|
80
|
+
pip install -r requirements.txt
|
|
81
|
+
# 开发、测试与 CI
|
|
82
|
+
pip install -r requirements-dev.txt
|
|
83
|
+
# 可选:向量化与机器学习能力
|
|
84
|
+
pip install -r requirements-ml.txt
|
|
85
|
+
# 可选:阿里云、腾讯云、AWS 防火墙适配器
|
|
86
|
+
pip install -r requirements-cloud.txt
|
|
87
|
+
|
|
88
|
+
# 首次启动前配置管理员凭据(示例值请替换)
|
|
89
|
+
export SECAGENTX_PASSWORD='replace-with-a-strong-password'
|
|
90
|
+
|
|
91
|
+
# 启动 API 服务
|
|
92
|
+
python3 -m backend.interface.api_server
|
|
93
|
+
|
|
94
|
+
# 启动前端(新终端)
|
|
95
|
+
cd frontend && npm ci && npm run dev
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### 统一 CLI 与 Web 启动
|
|
99
|
+
|
|
100
|
+
CLI 与 Web 服务使用同一套 Agent、认证隔离和知识库代码,可交互运行,也可输出机器可读 JSON:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
# 首次配置(会验证 Provider 后再保存)
|
|
104
|
+
secagentx onboard
|
|
105
|
+
|
|
106
|
+
# 交互模式
|
|
107
|
+
secagentx
|
|
108
|
+
|
|
109
|
+
# 一次性查询
|
|
110
|
+
secagentx ask "什么是 SQL 注入?"
|
|
111
|
+
|
|
112
|
+
# 自动化脚本/CI 使用
|
|
113
|
+
secagentx ask "分析 45.33.32.156" --json
|
|
114
|
+
|
|
115
|
+
# 启动 Web;默认只监听 127.0.0.1
|
|
116
|
+
secagentx dashboard
|
|
117
|
+
|
|
118
|
+
# 诊断配置,--live 会发起一次真实模型请求
|
|
119
|
+
secagentx doctor
|
|
120
|
+
secagentx doctor --live
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
未配置真实 LLM Key 时可显式设置 `LLM_PROVIDER=mock` 验证启动链路;此模式只用于开发,不代表真实研判能力。Windows PowerShell 使用 `$env:LLM_PROVIDER='mock'`,Linux/macOS 使用 `export LLM_PROVIDER=mock`。
|
|
124
|
+
|
|
125
|
+
### 搭建自己的前端
|
|
126
|
+
|
|
127
|
+
```bat
|
|
128
|
+
secagentx ui init C:\work\my-secagentx-ui
|
|
129
|
+
cd /d C:\work\my-secagentx-ui
|
|
130
|
+
npm ci
|
|
131
|
+
npm run dev
|
|
132
|
+
|
|
133
|
+
rem 构建后让 SecAgentX 托管自定义界面
|
|
134
|
+
npm run build
|
|
135
|
+
secagentx dashboard --ui C:\work\my-secagentx-ui\dist
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
`ui init` 不复制 `node_modules`、`dist` 或覆盖非空目录。监听非回环地址时必须显式添加 `--allow-remote`,并在企业环境配置 TLS 反向代理、防火墙和 `SECAGENTX_CORS_ORIGINS`。
|
|
139
|
+
|
|
140
|
+
### 验证
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
python -m compileall -q backend tests scripts
|
|
144
|
+
pytest -m "not slow" --timeout=60
|
|
145
|
+
cd frontend && npm test && npm run build
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
真实威胁 IP 缓存不是核心启动前置条件。网络可用时运行 `python scripts/update_threat_ips.py` 获取;若所有远程源失败,脚本会返回失败并保留已有缓存,不会写入空库。
|
|
149
|
+
|
|
150
|
+
## 生产数据原则
|
|
151
|
+
|
|
152
|
+
事件、资产和处置记录只来自 API/Webhook、日志接入器或数据库中的实际记录。空数据库会在 Web 中显示空状态,不会自动注入演示告警。MITRE ATT&CK 和 NVD/CISA KEV 为带来源的公开知识快照,合规/处置内容为静态参考指南,都不代表企业的实时业务数据。威胁情报未配置外部 API 时会明确标注覆盖不足。
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## 架构
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
用户 (Web/CLI/Webhook)
|
|
160
|
+
│
|
|
161
|
+
┌────────────┴────────────┐
|
|
162
|
+
│ TrueReAct 循环调度引擎 │ ← 活动模型 Provider
|
|
163
|
+
└────────────┬────────────┘
|
|
164
|
+
│
|
|
165
|
+
┌─────────────────────┼─────────────────────┐
|
|
166
|
+
│ │ │ │
|
|
167
|
+
Analyst Intel Responder Knowledge
|
|
168
|
+
(统一 Provider) (统一 Provider) (统一 Provider) (Provider+RAG)
|
|
169
|
+
│ │ │ │
|
|
170
|
+
└───────────┴─────────────────┴─────────────┘
|
|
171
|
+
│
|
|
172
|
+
┌──────────┴──────────┐
|
|
173
|
+
│ Tools (6 个安全工具) │
|
|
174
|
+
│ threat_intel / │ → iptables/Cloud API
|
|
175
|
+
│ firewall / geoip / │
|
|
176
|
+
│ cve_search / │
|
|
177
|
+
│ log_analyzer / │
|
|
178
|
+
│ alert_filter │
|
|
179
|
+
└──────────┬──────────┘
|
|
180
|
+
│
|
|
181
|
+
┌─────────────────────┼─────────────────────┐
|
|
182
|
+
│ │ │
|
|
183
|
+
PostgreSQL/SQLite ChromaDB向量库 Docker Compose
|
|
184
|
+
(事件/用户/日志) (可选语义RAG) (应用 + PostgreSQL)
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## 核心能力
|
|
190
|
+
|
|
191
|
+
| 能力 | 描述 |
|
|
192
|
+
|------|------|
|
|
193
|
+
| **多智能体协同** | Analyst / Intel / Responder / Knowledge / AlertFilter / Summary / Classifier 7 个 Agent |
|
|
194
|
+
| **多厂商 LLM** | OpenAI / Anthropic 兼容协议,云端和本地模型统一配置,保留旧版 Fallback 兼容 |
|
|
195
|
+
| **Agentic-RAG** | 知识增强检索,MITRE ATT&CK 全覆盖(365 技术 / 15 战术) |
|
|
196
|
+
| **威胁情报** | VirusTotal / AbuseIPDB / OTX 可选多源验证;缺 Key 时使用本地知识和离线适配器 |
|
|
197
|
+
| **ML 威胁检测** | 可选安装;训练与评估代码可用,实际效果需使用部署环境数据重新验证 |
|
|
198
|
+
| **防火墙封禁** | 默认禁用;显式配置 iptables / nftables / Cloud API,Mock 仅测试 |
|
|
199
|
+
| **自动处置** | 自动闭环 / 封禁 / 升级 / 巡检 / 数据保留,默认关闭 |
|
|
200
|
+
| **可解释风险评分** | 行为证据 / 威胁情报 / IP真实性 / 历史信誉 四维加减分,最终分数 + 危级,逐规则可审计 |
|
|
201
|
+
| **告警接入** | Webhook / Kafka / Syslog 三种方式 |
|
|
202
|
+
| **企业安全** | JWT 认证 + RBAC 权限 + 熔断器 + 审计日志 + 限流 |
|
|
203
|
+
| **跨区域联邦** | 多区域事件/IP 同步,mesh 拓扑 |
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## 内置知识与可选数据
|
|
208
|
+
|
|
209
|
+
| 数据域 | 数据量 | 来源 | 真实性 |
|
|
210
|
+
|--------|:------:|------|:------:|
|
|
211
|
+
| 恶意 IP | 可选下载 | FireHOL / Darklist / Blocklist.de 等公开情报源 | 当前仓库不内置缓存,运行更新脚本获取 |
|
|
212
|
+
| MITRE ATT&CK 技术 | **365 个** | MITRE 官方 CTI | 官方数据 |
|
|
213
|
+
| MITRE ATT&CK 战术 | **15 个** | MITRE 官方 CTI | 官方数据 |
|
|
214
|
+
| NVD/CISA KEV | **1,674 条** (595 CRITICAL / 871 HIGH / 200 MEDIUM / 8 LOW) | NVD CVE API 2.0 | 官方可追溯快照 |
|
|
215
|
+
| 合规法规 | **14 项** | 等保2.0/网络安全法/GDPR/个保法等 | 真实法规 |
|
|
216
|
+
| 应急响应剧本 | **23 个** | 真实攻击场景(SSH爆破/勒索/C2/钓鱼等) | 真实场景 |
|
|
217
|
+
| APT 威胁组织 | **34 个** | 公开威胁情报 | 真实组织 |
|
|
218
|
+
| 恶意软件 | **47 个** | 公开威胁情报 | 真实恶意软件 |
|
|
219
|
+
|
|
220
|
+
### 数据更新命令
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
# 单独更新威胁 IP
|
|
224
|
+
python3 scripts/update_threat_ips.py
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## API 端点一览(51 个 HTTP/WebSocket 路由)
|
|
230
|
+
|
|
231
|
+
| 分类 | 端点 | 说明 |
|
|
232
|
+
|------|------|------|
|
|
233
|
+
| **认证** | `/api/auth/login`, `/api/auth/refresh` | JWT 登录/刷新 |
|
|
234
|
+
| **健康** | `/api/health`, `/api/stats`, `/api/metrics` | 系统状态 |
|
|
235
|
+
| **事件** | `/api/events`, `/api/events/{id}` | 安全事件 CRUD |
|
|
236
|
+
| **MITRE** | `/api/mitre/search`, `/api/mitre/technique/{id}`, `/api/mitre/kill-chain`, `/api/mitre/attack-flow` | ATT&CK 知识库 |
|
|
237
|
+
| **CVE** | `/api/cve/search`, `/api/cve/{id}`, `/api/cve/by-mitre/{tech_id}` | 漏洞库 |
|
|
238
|
+
| **合规** | `/api/compliance/search`, `/api/compliance/{name}` | 法规库 |
|
|
239
|
+
| **剧本** | `/api/remediation/search`, `/api/remediation/{scenario}` | 应急响应 |
|
|
240
|
+
| **Agent** | `/api/agents`, `/api/agents/runtime` | 智能体运行时 |
|
|
241
|
+
| **联邦** | `/api/federation/status`, `/api/federation/events`, `/api/federation/blacklist` | 跨区域同步 |
|
|
242
|
+
| **用户** | `/api/users`, `/api/users/{username}`, `/api/users/me` | 用户管理 |
|
|
243
|
+
| **WebSocket** | `/ws/chat` | 实时对话 |
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## 项目结构
|
|
248
|
+
|
|
249
|
+
```
|
|
250
|
+
secagentx/
|
|
251
|
+
├── backend/
|
|
252
|
+
│ ├── agents/ # 7 个安全 Agent 实现
|
|
253
|
+
│ ├── orchestrator/ # TrueReAct 循环总调度
|
|
254
|
+
│ ├── tools/ # 6 个注册安全工具(含多种防火墙后端)
|
|
255
|
+
│ ├── llm/ # 多厂商 LLM 兼容层(OpenAI / Anthropic / Mock)
|
|
256
|
+
│ ├── ml_model/ # 可选 ML 训练与检测流水线
|
|
257
|
+
│ ├── knowledge/ # MITRE / CVE / 合规 / 剧本 / 威胁情报
|
|
258
|
+
│ ├── storage/ # PostgreSQL/SQLite + Chroma 向量库
|
|
259
|
+
│ ├── security/ # 认证/脱敏/熔断器/审计/限流
|
|
260
|
+
│ ├── federation/ # 跨区域联邦同步
|
|
261
|
+
│ └── interface/ # CLI + FastAPI + WebSocket
|
|
262
|
+
├── frontend/ # Vue 3 + Naive UI + ECharts (10 视图)
|
|
263
|
+
├── knowledge_data/ # 知识库数据 (1,674 KEV / 365 MITRE / 14 合规 / 23 剧本)
|
|
264
|
+
├── Dockerfile # 前端构建 + Python 运行时多阶段镜像
|
|
265
|
+
├── docker-compose.yml # SecAgentX + PostgreSQL 生产部署
|
|
266
|
+
├── scripts/ # 运维/数据注入脚本
|
|
267
|
+
├── tests/ # 后端单元与集成测试
|
|
268
|
+
└── data/ # 运行时 SQLite 数据库与可选缓存
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
## 版本历史
|
|
274
|
+
|
|
275
|
+
| 版本 | 日期 | 说明 |
|
|
276
|
+
|:----:|:----:|------|
|
|
277
|
+
| v3.0.0 | 2026-08-22 | 统一 CLI/onboarding/dashboard、自定义 UI、多厂商 Provider、系统安全凭据与企业默认边界 |
|
|
278
|
+
| v2.1.0 | 2026-07-23 | ML 训练评估流水线 / 前后端路由联调 / 前端测试 |
|
|
279
|
+
| v2.0.0 | 2026-07-08 | 多 Agent + TrueReAct + Docker Compose |
|
|
280
|
+
| v1.1 | 2026-06-15 | 单 Agent + 基础 API + 前端初版 |
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|