内容
scm-m
[
[
[
[](LICENSE)
适用于托管安全服务提供 Palo Alto Networks Strata (SCM)(模型上下文协议)服务器了 85,作为 MCP 工具,可被 Claude Desktop、Cursor、Copilot Studio 或任何兼容 MCP 的 AI 助手所使用。
---
## 免责声明
这是一个由作者独立维护的、社区驱动的开源项目。它 **不是** Palo Alto Networks 的官方产品、功能或工具,也 **不** 受 Palo Alto Networks 支持或认可。所有观点、配置和示例均为作者个人所有,不代表任何雇主的观点。使用此软件风险自负。按原样提供,不提供任何形式的保证。
---
## 快速入门
```bash
git clone https://github.com/silverbacksecurity/scm-mcp-mssp
cd scm-mcp-mssp
uv sync
cp .env.example .env # 填写您的 SCM 凭证
uv run scm-mcp # 为 Claude Desktop 启动 stdio 传输
```
然后询问 Claude:
> *"对我的 Prisma Access 配置运行 BPA 评估,并给我一个优先的修复计划"*
> *"为此租户生成一个完整的 AS-IS AS-BUILT 文档"*
> *"检查 NCSC 合规性并应用基准安全配置文件"*
> *"以图表形式显示 SD-WAN VPN 覆盖拓扑"*
---
## 功能
| 功能 | 描述 |
|-----------|-------------|
| **配置管理** | 读取/写入地址对象、安全规则、NAT、区域、VPN 隧道、远程网络 |
| **配置备份和差异** | 导出完整的 JSON 快照;比较变更前后的快照 |
| **配置克隆** | 将黄金配置备份克隆到新文件夹或租户,并进行 PSK 清除 |
| **BPA 评估** | 39 项 Palo Alto 最佳实践检查,根据实时配置进行评分 |
| **NCSC 合规性** | CAF v4.0、Cyber Essentials v3.2、10 Steps、NSF — 差距分析 + 自动修复 |
| **NIST 合规性** | NIST CSF.0 / SP 800-53 Rev 5 差距分析和代码段创建 |
| **NCSC/NIST 基准代码段** | 创建可重用的 SCM 代码段,包含合规的安全配置文件,用于大规模部署 |
| **AS-IS AS-BUILT 报告** | 根据实时配置生成 Markdown 或 Word AS-BUILT 文档,并附有 Mermaid 图表 |
| **AI 合规顾问** | NCSC/NIST 差距发现的执行摘要 + 修复剧本,由 Claude 驱动 |
| **SD-WAN 拓扑** | 查询 Prisma SD-WAN 控制器以获取 VPN 覆盖地图和链接健康状况 |
| **企业 DLP** | 列出、备份和恢复企业 DLP 模式和 SCM 数据过滤配置文件 |
| **MSSP 层管理** | 黄金/白银/评分、入职代码段、升级路径分析 |
| **许可和遥测** | 订阅许可库存、移动用户统计、作业审计历史 |
| **CAS ZTNA / 浏览器 / AIRS** | 库存 SaaS 限制、ZTNA 连接器、Prisma 浏览器和 AI 运行时安全 |
| **操作可见性** | 证书过期扫描器、许可预测、SPN 带宽分配与分支计数、实时 GP-Agent 会话计数(按国家和计算节点| **MSSP NOC 仪表盘** | 单次调用交通灯健康状况,查看所有租户:规则、远程网络、隧道、最近的许可过期 |
| **多租户** | 线程安全的每租缓存;`settings.toml` 中的凭证 |
| **HTTP/SSE 传输** | 通过 `scm-m` 实现 Copilot Studio 和基于浏览器的 MCP 客户端 |
---
## 系统架构
```mermaid
subgraph clients["AI 客户端"]
claude["Claude Desktop\nCursor / VS Code"]
copilot["Microsoft\nCopilot Studio"]
end
subgraph server["scm-mcp-mssp"]
stdio["FastMCP\nstdio 传输"]
http["HTTP/SSE 传输\nscm-mcp-http"]
tools["93 个 MCP 工具\n对象 · 策略 · 网络\naudit · NCSC · NIST · DLP\nSD-WAN · MSSP · 运维 · AI 顾问"]
cache["OAuth2 客户端缓存\n每租户 Scm 客户端\n(线程安全)"]
cfg["settings.toml\n+ .secrets.toml"]
end
subgraph pan["Palo Alto Networks"]
tok["令牌端点\nauth.apps.paloaltonetworks.com"]
scm["SCM REST API\napi.strata.paloaltonetworks.com"]
sdwan["SD-WAN 控制器\nstrata.paloaltonetworks.com"]
end
claude -->|"MCP JSON-RPC"| stdio
copilot -->|"HTTPS + Bearer"| http
stdio & http --> tools
tools --> cache
cache -.->|读取| cfg
cache -->|"OAuth2 客户端流"| tok
cache -->|"HTTPS + Bearer"| scm
tools -->|"直接 REST"| sdwan
```
---
## 安装
### 先决条件
- Python 3.12+
- [`uv`](https://docs.astral.sh/uv/)
- 具有 OAuth2 服务帐户的 PAN Strata Cloud Manager 访问权限
从 **PAN 客户支持门户 → Strata Cloud Manager → API 密钥** 获取凭证
### 安装
```bash
git clone https://github.com/silverbacksecurity/scm-mcp-mssp
cd scm-mcp-mssp
uv sync
```
---
## 配置
### 单租户(快速入门)
```bash
cp .env.example .env
```
```dotenv
SCM_MCP_SCM_TENANT_ID=您的-tsg-id
SCM_MCP_SCM_CLIENT_ID=您的-client-id@iam.panserviceaccount.com
SCM_MCP_SCM_CLIENT_SECRET=您的-client-secret
SCM_MCP_SCM_DEFAULT_FOLDER=Prisma Access
```
### MSSP 多租户
```bash
cp settings.example.toml settings.toml
```
**`settings.toml`** (git 忽略 — 租户 ID 和标签标识您的客户,请本地保存):
```toml
[default]
mssp_mode = true
[tenants.acme-corp]
tenant_id = "tsg-id-for-acme"
client_id = "svc-acme@iam.panserviceaccount.com"
default_folder = "Acme-Corp"
label = "Acme Corp"
tier = "gold"
service_term_years = 3
account_ref = "CRM-12345"
```
**`.secrets.toml`** (从不提交 — git 忽略):
```toml
[tenants.acme-corp]
client_secret = "..."
```
---
## 用法
### Claude Desktop
添加到 `~/.config/Claude/claude_desktop_config.json`:
```json
{
"mcpServers": {
"scm-mcp-mssp": {
"command": "uv",
"args": ["run", "--directory", "/path/to/scm-mcp-mssp", "scm-mcp"]
}
}
}
```
重启 Claude Desktop。服务器在 Cowork 模式下注册为 95 个工具。
### Cursor / VS Code
添加到 `.cursor/mcp.json` 或 `.vscode/mcp.json`:
```json
{
"servers": {
"scm-mcp-mssp": {
"type": "stdio",
"command": "uv",
"args": ["run", "--directory", "/path/to/scm-mcp-mssp", "scm-mcp"]
}
}
}
```
### Microsoft Copilot Studio(HTTP/SSE)
```bash
# 生成一个安全的 API 密钥
export SCM_MCP_HTTP_API_KEY=$(python -c "import secrets; print(secrets.token_urlsafe(32))")
# 启动 HTTP 服务器
uv run scm-mcp-http
# 监听 0.0.0.0:8080
```
在 Copilot Studio 中:**设置 → AI → MCP 服务器 → 添加服务器**
- **服务器 URL:** `https://your-host/sse`
- **身份验证:** 自定义标头 → `X-API-Key: <your-key>`
对于 Entra ID 身份验证(生产环境):
```bash
export SCM_MCP_HTTP_AUTH_MODE=entra
export SCM_MCP_HTTP_ENTRA_TENyour-tenant-id
export SCM_MCP_HTTP_ENTRA_AUDIENCE=your-app-registration-client-id
uv run scm-mcp-http
```
### Docker
```bash
docker build -t scm-mssp .
# stdio 传输
docker run -i --env-file .env scm-mcp-mssp
# HTTP/SSE 传输
docker run -p 8080:8080 \
-e SCM_MCP_HTTP_API_KEY=your-key \
-e SCM_MCP_HTTP_AUTH_MODE=apikey \
--env-file .env \
scm-mssp scm-mcp-http
```
---
## 示例工作流
### BPA 评估和修复计划
```
对文件夹 "Prisma Access" 运行 B评估,并给我一个优先的修复计划,优先考虑关键和高风险的发现。
```
```
生成完整的 BPA 报告并保存到文件中。
```
```
仅显示具有修复步骤的关键和高风险 BPA 失败。
```
### NCSC 合规性
```
检查文件夹 "Prisma Access" 的 NCSC 合规性差距,针对 CAF v4.0 和 Cyber Essentials v3.2。
```
```
应用 NCSC 基准安全配置文件到 "Prisma Access"。
自动将 NCSC 配置文件附加到 "Prisma Access" 中的所有允许规则。
```
NCSC 工作流程通常分为三个步骤:
```
1. scm_ncsc_gap(folder="Prisma Access") → 识别差距
2. scm_apply_ncsc_baseline(folder="Prisma Access", dry_run=False)
→ 创建基准对象
3. scm_attach_ncsc_profiles(folder="Prisma Access", dry_run=False)
→ 附加到所有允许规则
```
### NIST 合规性
```
对文件夹 "Prisma Access" 运行 NIST CSF v2.0 差距分析。
```
```
为重用跨新客户文件夹创建 NIST 合规的 SCM 代码段。
```
```
给我一个 生成的 NIST 合规性差距执行摘要和优先修复剧本。
```
### AS-IS AS-BUILT 报告
```
为此租户生成完整的 AS-IS AS-BUILT 报告,并保存为 Word 文档。
```
```
生成包含实时 SD-WAN 数据的 AS-BUILT 报告。
```
报告包括:
- Mermaid 拓扑图(企业 RA、Prisma Access 路由、SD-WAN 双中心)
- 远程网络 WAN IP/IKE 详细信息表
- 安全策略摘要
- SD-WAN VPN 覆盖拓扑(如果已启用 SD-WAN 许可)
- 许可概述
- NCSC / BPA 合规性状态
- PAN 参考架构文档链接
- 完整的附录,包含 18 份参考文档
### 配置备份和差异
```
在变更窗口前,对文件夹isma Access" 进行配置备份。
```
```
比较后的快照,并显示变更内容。
```
```
将文件夹 "Golden-Template" 的配置克隆到 "Acme-Corp"。
```
### SD-WAN 拓扑显示 SD-WAN覆盖拓扑图。
```
```
列出所有 SD-WAN 站点及其 WAN 接口。
```
```
哪些 SD-WAN 站点的 WAN 链接处于非活动或降级状态?
```
### 企业 DLP
```
列出所有企业 DLP 数据模式和内联 SCM DLP 配置文件。
```
```
导出此租户的完整 DLP 配置备份。
```
```
将 DLP 备份恢复到暂存租户(先进行 dry-run)。
```
### 操作可见性
```
扫描所有证书对象以检查过期情况 — 显示 90 天内到期的证书。
```
```
显示所有租户的许可预测 — 哪些租户即将达到席位容量?
```
```
显示 NOC 仪表盘,汇总所有租户的健康状况。
```
```
目前有多少 GlobalProtect 和 Prisma Access Agent 用户连接中?
按国家和 GP 版本显示分布情况。
```
```
SPN 带宽分配与分支计数相比如何?哪些 SPN 已超额订阅?
```
### SDK 和服务器管理
```
检查 pan-scm-sdk、prisma-sase 和 MCP 库是否最新。
```
```
Palo Alto pan.dev SASE近期变更?
```
```
重启 MCP 服务器以应用最新代码变更。
```
### MSSP 操作
```
显示所有已加载租户及其合规性得分的仪表盘。
```
```
对 Acme Corp 进行层级评估,针对其 Gold 服务级别。
```
```
Acme Corp 需要哪些内容才能从 Silver 提升到 Gold 层级?
```
```
列出所有租户、其身份验证状态和即将到期的许可证。
```
---
## MCP 工具参考
### 对象管理
| 工具 | 描述 |
|------|-------------|
| `scm_address_list` | 列出文件夹中的地址对象 |
| `scm_address_get` | 按名称获取单个地址对象 |
| `scm_address_create` | 创建地址对象(ip_netmask / fqdn / ip_range) |
| `scm_address_delete` | 删除地址对象 |
| `scm_address_group_list` | 列出地址组 |
| `scm_service_list` | 列出服务对象 |
| `scm_tag_list` | 列出标签 |
| `scm_edl_list` | 列出外部动态列表 |
### 安全策略
| 工具 | 描述 |
-------------|
| `scm_security_rule_list` | 列出安全规则(前/后位置) |
| `scm_security_rule_get` | 按名称获取单个安全规则 |
| `scm_security_rule_create` | 创建安全规则 |
| `scm_security_rule_delete` | 删除安全规则 |
| `scm_anti_spyware_profile_list` | 列出反间谍软件配置文件 |
| `scm_url_category_list` | 列出 URL 类别 |
### 网络
| 工具 | 描述 |
|------|-------------|
| `scm_zone_list` | 列出安全区域 |
| `scm_nat_rule_list` | 列出 NAT 规则 |
| `scm_nat_rule_get` | 获取单个 NAT 规则 |
| `scm_ike_gateway_list` | 列出 IKE 网关 |
| `scm_ipsec_tunnel_list` | 列出 IPSec 隧道 |
| `scm_dns_server_list` | 列出 DNS 服务器配置文件 |
### 部署
| 工具 | 描述 |
||
| `scm_remote_network_list` | 列出远程网络(分支/SDWAN站点) |
| `scm_service_connection_list` | 列出服务连接 |
| `scm_bandwidth_allocation_list$` | 列出 Prisma Access 带宽分配 |
| `scm_commit` | 提交候选配置(同步,300秒超时) |
| `scm_job_status` | 按 ID 轮询异步 SCM 作业 |
| `scm_list_jobs` | 列出最近的提交/推送作业,包含用户、类型、结果和时间戳 |
### 审计和合规
| 工具 | 描述 |
|------|-------------|
| `scm_config_backup` | 导出完整配置快照到时间戳 JSON |
| `scm_config_clone` | 从一个文件夹克隆配置到另一个 |
| `scm_config_diff` | 差异两个备份 JSON 快照,按资源类型 |
| `scm_bpa_assess` | 运行 39 个 PAN BPA 检查;按严重性/类别筛选 |
| `scm_aiops_bpa` | 提交 PAN-OS XML 到 AIOps BPA API;解析分数 + 发现 |
| `scm_incident_search` | 搜索 SCM 安全事件;按严重性/状态/产品筛选 |
| `scm_incident_summary` | 跨租户 NOC 事件仪表盘(按严重性计数的数量) |
| `scm_posture_report` | 检索合规性最佳实践报告(需要附加许可证) |
| `scm_adnsr_list` | 列出 ADNSR 配置文件、内部域、连接源等 |
| `scm_adnsr_profile_create` | 创建 ADNSR DNS 安全配置文件(需要 ADNSR 许可证) |
| `scm_ngfw_local_config_list` | 列出已推送到 SCM 管理FW 设备的配置版本 |
| `scm_ngfw_local_config_get` | 获取 NGFW 本地配置 XML 用于 BPA 或差异(需要 NGFW 运维 |
| `scm_ncsc_assess` | 按控制的 NCSC 合规性视图;按框架筛选 |
| `scm_dspt_assess` | NHS DSPT 2024-25 评估(标准 7-10);DSPT 门户就绪证据 |
| `scm_iso27001_assess` | ISO/IEC 27001:2022 附录 A 评估;12 个可自动化的控制;符合/不符合判决 |
| `scm_decrypt_policy_audit` | 深入 SSL/TLS 解密审计:配置文件质量、规则覆盖、差距(NCSC D3.b / DSPT 9) |
| `scm_audit_report` | 组合 BPA + NCSC Markdown / JSON 报告 |
| `scm_asbuilt_report` | 完整的 AS-IS AS-BUILT 文档(Markdown + 可选 docx) |
### NCSC 基准
| 工具 | 描述 |
|------|-------------|
| `scm_ncsc_gap` | 差距分析:映射实时配置与 CAF v4.0 / CE v3.2 / 10 Steps |
| `scm_nist_gap` | 差距分析:映射实时配置与 NIST CSF v2.0 / SP 800-53 Rev 5 |
| `scm_apply_ncsc_baseline` | 在文件夹中创建 NCSC 合规配置文件集和拒绝所有规则 |
| `scm_create_ncsc_snippet` | 创建可重用的 SCM 代码段,包含 NCSC 合规安全配置文件 |
| `scm_create_nist_snippet` | 创建可重用的 SCM 代码段,包含 NIST 合规安全配置文件 |
| `scm_attach_ncsc_profiles` | 创建 NCSC 基准配置文件组并将其附加到所有允许规则 |
**创建的 NCSC 基准对象** (`scm_apply_ncsc_baseline` / `scm_create_ncsc_snippet`):
| 对象 | 类型 | NCSC 控制 |
|--------|------|-------------|
| `NCSC-Baseline-AntiSpyware` | 反间谍软件配置文件 | CAF C5 / CE 恶意软件 — 云端在线 + MICA C2 检测器 |
| `NCSC-Baseline-Vulnerability` | 漏洞配置文件 | CE 补丁 — 阻止关键/高 CVEs |
| `NCSC-Baseline-WildFire` | WildFire AV 配置文件 | CE 恶意软件 — 所有文件类型,公共云 |
| `NCSC-Baseline-URL` | URL 访问配置文件 | CE / 10 Steps — 阻止 C2/恶意软件/钓鱼 |
| `NCSC-Baseline-Logging` | 日志转发配置文件 | CAF C5 — 流量/威胁/WildFire/URL/身份验证 → Cortex |
| `NCSC-Deny-All` | 安全规则 | CAF C3 — 显式拒绝,log_end=True |
| `NCSC-Compliant` | 标签 | 库存/CMDB 标签 |
| `NCSC-Baseline` | 配置文件组 | 将四个配置文件组合起来用于规则附加 |
**创建的 NIST 基准对象** (`scm_create_nist_snippet`):
| 对象 | 类型 | NIST 控制 |
|--------|------|-------------|
| `NIST-Baseline-AntiSpyware` | 反间谍软件配置文件 | SP 800-53 SI-3 / SI-4 — C2 检测,关键+高阻止 |
| `NIST-Baseline-Vulnerability` | 漏洞配置文件 | SP 800-53 SI-2 / RA-5 — 阻止关键/高 CVEs |
| `NIST-Baseline-WildFire` | WildFire AV 配置文件 | SP 800-53 SI-3 / SP 800-171 3.14 — 所有文件 |
| `NIST-Baseline-URL` | URL 访问配置文件 | CSF PR.AC-5 / SC-7 — 阻止 C2/恶意软件/钓鱼 |
| `NIST-Baseline-Logging` | 日志转发配置文件 | SP 800-53 AU-2 / AU-12 — 审计日志 |
| `NIST-Compliant` | 标签 | 库存标签 |
### SD-WAN
| 工具 | 描述 |
|------|-------------|
| `sdwan_list_sites` | 列出所有Prisma SD-WAN站点 |
| `sdwan_list_elements` | 列出ION设备/元素 |
| `sdwan_list_wan_interfaces` | 列出每个站点的WAN接口 |
| `sdwan_list_wan_networks` | 列出WAN网络定义 |
| `sdwan_list_clusters` | 列出SD-WAN中心集群 |
| `sdwan_list_path_groups` | 列出路径组 |
| `sdwan_list_policies` | 列出SD-WAN策略 |
| `sdwan_list_bgp` | 列出BGP对等体配置 |
| `sdwan_topology` | 获取原始VPN覆盖拓扑数据 |
| `sdwan_topology_diagram` | 生成带有链接健康状态的Mermaid VPN覆盖图 |
| `sdwan_debug_topology` | 返回站点的原始拓扑API JSON(开发/故障排除) |
### 企业DLP
| 工具 | 描述 |
|------|-------------|
| `dlp_enterprise_list` | 从`api.dlp.paloaltonetworks.com`列出企业DLP数据模式和基于ML的配置文件 |
| `dlp_backup` | 导出SCM内联DLP和企业DLP配置为JSON备份 |
| `dlp_restore` | 将DLP备份恢复到目标租户/文件夹(默认为干运行) |
### AI合规顾问
| 工具 | 描述 |
|------|-------------|
| `scm_ai_compliance_advisor` | 运行NCSC/NIST差距检查,然后通过Claude生成执行摘要和补救手册 |
### 设置和MSSP
| 工具 | 描述 |
|------|-------------|
| `scm_folder_list` | 列出SCM文件夹(客户层次结构) |
| `scm_folder_get` | 获取单个文件夹 |
| `scm_device_list` | 列出已注册的设备 |
| `scm_snippet_list` | 列出配置片段 |
| `mssp_list_tenants` | 列出所有加载的租户ID和身份验证状态 |
| `mssp_evict_tenant` | 驱逐缓存的客户端(强制重新身份验证) |
| `mssp_tier_assess` | 根据合同层级评估文件夹(青铜/白银/黄金) |
| `mssp_tier_report` | 面向客户的Markdown合规报告,带有补救措施 |
| `mssp_upgrade_path` | 差距分析:升级层级所需的内容 |
| `mssp_onboard_tenant` | 将层级片段应用于新客户文件夹(默认为干运行) |
| `mssp_tenant_dashboard` | 所有加载的租户的合规分数摘要 |
| `mssp_snippet_catalogue` | 所有层级SCM片段的内容规范 |
| `mssp_tier_comparison` | 黄金/白银/青铜功能对比 |
| `scm_license_info` | 列出Prisma SASE订阅许可证,包含SKU、席位和到期日期 |
| `scm_mobile_user_stats` | 实时Prisma Access移动用户分配和连接用户数 |
| `scm_dlp_list` | 列出SCM内联DLP数据过滤配置文件和数据对象 |
| `scm_casb_list` | 列出CASB SaaS租户限制策略 |
| `scm_ztna_connector_list` | 列出ZTNA连接器基础设施(连接器和组) |
| `scm_browser_list` | 列出Prisma浏览器设备/用户/应用程序组配置 |
| `scm_ngfw_device_list` | 列出注册到Strata Cloud Manager的NGFW受管设备 |
| `scm_airs_list` | 列出Prisma AIRS(AI运行时安全)配置和配置文件 |
### 运行可见性
| 工具 | 描述 |
|------|-------------|
| `scm_cert_scan` | 扫描所有文件夹的证书对象,标记N天内(默认为90天)到期的证书,状态为CRITICAL/WARNING/CAUTION/OK |
| `scm_licence_forecast` | 租户许可证到期和席位利用率;`all_tenants=True`一次性扫描所有MSSP租户 |
| `scm_tenant_dashboard` | NOC壁挂板:规则、远程网络、隧道、最近的许可证到期日期和每个MSSP租户的RAG状态 |
| `scm_spn_bandwidth` | SPN带宽分配与分支数量;每分支Mbps份额和超订阅风险(高/中/低) |
| `scm_gp_session_summary` | 实时GP + Prisma Access Agent会话数,按国家、计算节点和客户端版本分组;与许可的MU席位容量比较。无用户名 - 仅聚合计数 |
### 实用工具
| 工具 | 描述 |
|------|-------------|
| `scm_check_updates` | 检查PyPI和GitHub的最新SDK和pan.dev SASE API更新 |
| `scm_restart` | 安排干净的SIGTERM,以便Claude Desktop或监管者可以自动重新连接 |
| `scm_reload` | 热加载scm_mcp_mssp源模块,无需重启MCP服务器 |
---
## MCP资源
| URI | 描述 |
|-----|-------------|
| `scm://tenants` | 所有加载的租户索引 |
| `scm://tenants/{tenant_id}` | 租户的身份验证状态 |
| `scm://tenants/{tenant_id}/folders` | 租户的SCM文件夹列表 |
---
## 服务层级
层级将商业服务包映射到安全要求。每个层级都是下面层级的严格超集 - 合格的黄金客户始终也是青铜和白银合格的。
| 功能 | 🥉 青铜 | 🥈 白银 | 🥇 黄金 |
|---------|-----------|-----------|---------|
| NCSC框架 | CE v3.2 | CE v3.2 + 10步骤 | CAF v4.0(完整) |
| BPA检查要求 | 仅关键 | 关键 + 高 | 所有(包括中/低) |
| 反间谍软件 | 基础 | 带DNS Sinkholing | 带DNS Sinkholing |
| 漏洞保护 | ✅ | ✅ | ✅ |
| WildFire分析 | ❌ | ✅ | ✅ |
| DNS安全配置文件 | ❌ | ✅ | ✅ |
| URL过滤 | ❌ | ❌ | ✅ |
| 文件阻止 | ❌ | ❌ | ✅ |
| SSL/TLS解密 | ❌ | ❌ | ✅ |
| 区域保护配置文件 | ❌ | ✅ | ✅ |
| 日志转发 / SIEM | ❌ | ✅ | ✅ |
| 合规报告 | CE基线 | CE Plus | CAF v4.0季度 |
```mermaid
graph BT
bronze["🥉 青铜\nCyber Essentials v3.2\n仅限关键BPA检查\n基础反间谍软件\n漏洞保护"]
silver["🥈 白银\n+ NCSC 10步骤\n+ 关键和高BPA\n+ WildFire · DNS安全\n+ 区域保护 · SIEM"]
gold["🥇 黄金\n+ CAF v4.0完整\n+ 所有37项BPA检查\n+ URL过滤 · SSL解密\n+ 文件阻止\n+ 季度CAF报告"]
bronze -->|"超集"| silver
silver -->|"超集"| gold
```
---
## BPA检查
39项检查,涵盖九大类,每项检查都与NCSC控制措施相互引用:
| 类别 | 检查ID | 示例检查 |
|----------|-----------|----------------|
| 安全规则 | SR-001–008 | 无配置文件允许规则,任意允许,拒绝所有终止符,不受限制的出站 |
| 威胁防护 | TP-001–006 | 反间谍软件 + DNS Sinkholing,WildFire,漏洞配置文件,文件阻止,解密 |
| URL过滤 | URL-001 | 配置的URL类别 |
| 区域保护 | ZP-001 | 具有保护配置文件的区域 |
| 日志记录 | LOG-001–003 | 日志转发配置文件,syslog,按规则附件 |
| 网络 | NET-001–002 | 区域分段,远程网络IPSec |
---
## NCSC控制措施
发现结果与四个框架中的16项控制措施相互引用:
| 框架 | 控制措施 |
|-----------|----------|
| NCSC CAF v4.0(2025年8月) | B2.a/b/c,B3.a/b,B4.a,C1.a/b |
| Cyber Essentials v3.2 | CE-FW-1,CE-FW-2,CE-FW-3,CE-FW-4 |
| NCSC 10步骤 | 10S-NS-1/2/3,10S-TP-1 |
| 网络安全基础 | NSF-ZT-1,NSF-LOG-1 |
---
## 架构
### 多租户请求流程
```mermaid
sequenceDiagram
participant T as MCP Tool
participant C as OAuth Cache
participant S as settings.toml
participant A as SCM Token Endpoint
participant API as SCM REST API
T->>C: get_client(tenant_id)
alt 租户已缓存
C-->>T: 现有Scm客户端
else 首次调用 / 被驱逐
C->>S: load TenantConfig(tenant_id)
S-->>C: client_id, client_secret
C->>A: POST /oauth2/token (client_credentials)
A-->>C: access_token (1小时TTL)
C-->>T: 新Scm客户端
end
T->>API: REST调用范围限定为文件夹
API-->>T: 响应JSON
```
### 源代码布局
```
src/scm_mcp_mssp/
├── server.py # FastMCP入口点;工具/资源注册
├── server_http.py # HTTP/SSE传输(Copilot Studio)
├── config/
│ └── settings.py # Pydantic-settings;具有层级字段的TenantConfig
├── auth/
│ └── oauth.py # 线程安全的每租户Scm客户端缓存
├── tools/
│ ├── objects.py # 地址、服务、标签、EDL
│ ├── security.py # 安全规则、反间谍软件、URL类别
│ ├── network.py # 区域、NAT、IKE/IPSec、DNS
│ ├── deployment.py # 远程网络、服务连接、提交、作业列表
│ ├── setup.py # 文件夹、设备、片段、MSSP租户
│ ├── audit.py # 备份、BPA、NCSC、AS-BUILT报告、差异、克隆
│ ├── ncsc_baseline.py # NCSC/NIST差距分析、基线应用、片段
│ ├── sdwan.py # SD-WAN拓扑、站点、元素、策略
│ ├── mssp.py # 层级评估、注册、许可、CASB/DLP/ZTNA/Browser/AIRS
│ ├── dlp.py # 企业DLP列表、备份、恢复
│ ├── ai_advisor.py # AI驱动的合规顾问(Claude)
│ └── reload.py # 热加载源模块,无需重启
├── audit/
│ ├── models.py # AuditSnapshot、Finding、Severity、Status
│ ├── extractor.py # 从SCM SDK提取30+资源类型
│ ├── bpa_checks.py # 39项BPA检查函数
│ ├── ncsc_controls.py # NCSC控制目录 + BPA→NCSC映射
│ ├── ncsc_templates.py # NCSC合规配置对象模板
│ ├── tiers.py # 黄金/白银/青铜定义 + 评分
│ ├── asbuilt_report.py # AS-BUILT Markdown构建器
│ ├── pan_references.py # PAN参考架构文档库
│ ├── sdwan_topo.py # SD-WAN VPN覆盖拓扑构建器
│ └── report.py # BPA + NCSC Markdown / JSON报告构建器
├── resources/
│ └── tenant.py # scm://tenants/* MCP资源
└── utils/
├── errors.py # 异常层次结构
└── logging.py # structlog JSON日志记录
```
---
## HTTP/SSE传输环境变量
| 变量 | 默认值 | 描述 |
|----------|---------|-------------|
| `SCM_MCP_HTTP_PORT` | `8080` | TCP端口 |
| `SCM_MCP_HTTP_AUTH_MODE` | `apikey` | `apikey` \| `entra` \| `none` |
| `SCM_MCP_HTTP_API_KEY` | — | `apikey`模式下必填 |
| `SCM_MCP_HTTP_ALLOWED_ORIGINS` | `*` | CORS来源,以逗号分隔 |
| `SCM_MCP_HTTP_ENTRA_TENANT` | — | Entra租户ID(entra模式) |
| `SCM_MCP_HTTP_ENTRA_AUDIENCE` | — | 应用注册客户端ID(entra模式) |
健康检查端点(无认证):`GET /health` → `{"status": "ok"}`
---
## 开发
```bash
uv sync # 安装所有依赖项,包括开发依赖项
uv run pytest tests/unit/ -v # 运行测试
uv run ruff check src/ tests/ # 校验
uv run ruff format src/ tests/ # 格式化
uv run mypy src/ # 类型检查
uv run pre-commit install # 安装git钩子
```
### CI/CD
```mermaid
flowchart TD
push["git push / PR"]
tag["git tag v*.*.*"]
subgraph ci["ci.yml — 每次推送"]
lint["ruff lint + format"] --> tc["mypy类型检查"] --> pytest["pytest"]
end
subgraph sec["security-scan.yml — 每次推送 + 每周"]
gl["gitleaks秘密扫描"]
pa["pip-audit CVE检查"]
bn["bandit SAST"]
tv["trivy文件系统扫描"]
end
subgraph docker["docker-build.yml — 每次推送"]
dbuild["docker构建\n多阶段"] --> dpush["推送到ghcr.io"] --> dscan["trivy镜像扫描"]
end
subgraph rel["release.yml — 标签"]
rt["pytest"] --> wb["uv构建轮子 + sdist"] --> pypi["PyPI发布"]
wb --> rim["docker推送:latest"]
wb --> sbom["CycloneDX SBOM"]
pypi & rim & sbom --> ghr["GitHub发布 + 产物"]
end
push --> ci & sec & docker
tag --> rel
```
- `client_secret`在整个过程中都是`SecretStr` — 永远不会出现在日志或`repr()`中
- `.env`和`.secrets.toml`被git忽略
- 安装了`detect-private-key`预提交钩子
- `no-commit-to-branch`钩子阻止直接提交到`master`
---
## 参考资料
- [pan-scm-sdk](https://github.com/cdot65/pan-scm-sdk) — SCM的Python SDK(v0.15.0+)
- [pan.dev SCM API](https://pan.dev/scm/) — Strata Cloud Manager API文档
- [pan.dev SASE API](https://pan.dev/sase/) — Prisma SASE / SD-WAN API文档
- [prisma-sase-sdk-python](https://github.com/PaloAltoNetworks/prisma-sase-sdk-python) — Prisma SASE Python SDK(v6.6.2b1+)
- [NCSC CAF v4.0](https://www.ncsc.gov.uk/collection/caf) — 网络安全评估框架
- [Cyber Essentials v3.2](https://www.ncsc.gov.uk/cyberessentials) — NCSC网络安全基本要求计划
- [NCSC 10步骤](https://www.ncsc.gov.uk/collection/10-steps) — 10步实现网络安全
- [NIST CSF v2.0](https://www.nist.gov/cyberframework) — NIST网络安全框架
- [NIST SP 800-53 Rev 5](https://csrc.nist.gov/publications/detail/sp/800-53/rev-5/final) — 安全和隐私控制措施
- [Prisma Access SASE部署指南](https://www.paloaltonetworks.com/resources/guides/sec-enterprise-connectivity-prisma-sdwan-deployment)
---
## 许可证
Apache 2.0
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器