分布式基础设施控制平面网关

TailOpsMCP是一个安全控制平面网关,通过集中式管理SSH、Docker和HTTP目标,实现分布式基础设施的统一控制和安全策略执行。

  • by mdlmarkham
  • Python
  • 本地部署
  • 19 星标
  • 更新于
在 GitHub 查看 mdlmarkham/SystemManager

使用说明

TailOpsMCP网关

🛰️ TailOpsMCP——一种用于管理分布式基础设施的安全控制平面网关

通过单个控制平面网关集中管理多个目标——由MCP提供支持 模型上下文协议(MCP)服务器,作为控制平面网关运行,通过基于能力的授权和策略执行来管理SSH、Docker和HTTP目标。


🎯 什么是TailOpsMCP?

TailOpsMCP是一个控制平面网关,通过Claude、ChatGPT或任何兼容MCP的客户端等人工智能助手集中管理分布式基础设施。您可以部署一个网关,通过SSH、Docker和HTTP连接管理多个目标,而不是在每个节点上部署代理。

关键运营模式:

  • 控制平面网关:单个受信任节点管理多个目标
  • 目标注册表:管理系统的集中配置
  • 政策大门:基于能力的授权可防止“LLM想象”风险
  • 执行层:跨不同目标类型编排命令

与其记住复杂的命令,不如问:

  • “将我的监控堆栈部署到所有web服务器”
  • “分析整个生产集群的安全日志”
  • “什么在所有数据库节点上使用所有CPU?”
  • “更新所有暂存服务器上的包”

非常适合 基础设施团队, 骨相关事件,以及 DevOps工程师 跨多个环境管理分布式系统。


🚀 快速开始

Proxmox单线部署(推荐)

使用单个命令部署TailOpsMCP网关:

bash -c "$(curl -fsSL https://raw.githubusercontent.com/mdlmarkham/TailOpsMCP/master/ct/tailops-gateway.sh)"

这有什么作用:

  • ✅ 使用合理的默认值创建隔离的LXC容器
  • ✅ 安装TailOpsMCP及其所有依赖项
  • ✅ 配置Tailscale和Docker集成
  • ✅ 自动启动网关服务
  • ✅ 提供清晰的访问说明

自定义部署:

# High-performance deployment
RAM_SIZE=4096 CPU_CORES=4 DISK_SIZE=16 \
bash -c "$(curl -fsSL https://raw.githubusercontent.com/mdlmarkham/TailOpsMCP/master/ct/tailops-gateway.sh)"

# Minimal deployment
RAM_SIZE=1024 CPU_CORES=1 DISK_SIZE=4 \
bash -c "$(curl -fsSL https://raw.githubusercontent.com/mdlmarkham/TailOpsMCP/master/ct/tailops-gateway.sh)"

替代方案:传统Proxmox安装程序

对于现有工作流,旧版安装程序仍然可用:

# Legacy Proxmox installer
bash -c "$(wget -qLO - https://raw.githubusercontent.com/mdlmarkham/TailOpsMCP/master/ct/build.func)"

这将创建一个隔离的网关容器,其中包含:

  • Debian 12 LXC(2GB RAM,2个CPU内核,8GB磁盘)
  • Python 3.12和所有依赖项
  • Tailscale OAuth身份验证
  • 系统化服务配置

👨‍💻 发展

快速开发设置

# Clone the repository
git clone https://github.com/mdlmarkham/TailOpsMCP.git
cd TailOpsMCP

# Set up complete development environment
make setup

# Run all quality checks
make quality

# Run tests
make test

# Fix code issues automatically
make fix

开发环境

TailOpsMCP包括一个全面的开发环境,包括:

  • 🔧 代码质量工具:流氓,我的,强盗,安全,伊索特,黑色
  • 🧪 测试框架:带覆盖率报告的pytest
  • 🛡️ 安全扫描:自动安全漏洞检测
  • 📝 预提交钩子:提交前自动进行质量检查
  • 📊 复杂性分析:radon用于代码可维护性度量
  • 🔄 CI/CD管道:自动化质量检查和测试

有关详细的开发设置和工作流程,请参阅 开发商_SETUP.md

质量标准

我们的代码质量体系确保:

  • ✅ 自动质量检查:每个提交都会进行全面的质量检查
  • 🛡️ 安全第一:持续安全扫描漏洞
  • 📈 代码覆盖率:最低80%的测试覆盖率要求
  • 🔧 自动修复工具:自动修复常见问题
  • 📚 综合文档:所有工具的完整文档

可用命令

命令 描述
make setup 建立完整的开发环境
make quality 运行所有质量检查(棉绒、类型检查、安全性、复杂性)
make lint 运行ruff linting
make format 带ruff和isort的格式代码
make typecheck 运行mypy类型检查
make security 运行安全扫描(土匪、安全)
make complexity 运行复杂性分析
make test 运行覆盖率测试
make fix 自动修复代码问题
make ci 运行CI管道(质量+测试)
make clean 清理生成的文件和缓存

有关完整的命令参考,请参见 质量_工具_参考.md

自动化脚本

脚本 目的
scripts/run_quality_checks.py 转轮全面质量检查
scripts/fix_code_quality.py 自动修复代码质量问题
scripts/setup_dev_environment.sh 完成开发环境设置

有关详细的自动化文档,请参阅 代码_质量.md


✨ 主要特点

🚀 当前能力

控制平面架构

  • ✅ 目标注册表 -SSH、Docker和HTTP目标的集中配置
  • ✅ 政策大门 -基于能力的授权与参数验证
  • ✅ 执行层 -跨多个目标类型编排命令
  • ✅ 多目标作战 -跨目标组执行命令

目标管理

  • ✅ SSH目标支持 -通过SSH连接管理远程系统
  • ✅ Docker套接字访问 -通过套接字连接控制Docker主机
  • ✅ HTTP API集成 -与web服务和API交互
  • ✅ 本地系统管理 -管理网关主机本身

安全与运营

  • ✅ 基于能力的授权 -通过明确的分配策略预防“LLM想象”风险
  • ✅ 参数验证 -对操作参数实施约束
  • ✅ 审计日志 -全面跟踪所有网关操作
  • ✅ 多网关支持 -冗余网关实现高可用性

🔒 安全第一

⚠️ 阅读安全咨询 生产部署前

  • ✅ 需要尾秤 -强制加密传输(无内置TLS)
  • ✅ OAuth 2.1与TSIDP -Tailscale身份提供者身份验证
  • ✅ 非根服务 -以专注的方式运行 tailopsmcp 用户
  • ✅ 系统硬化 -使用ProtectSystem、ProtectHome进行全沙盒
  • ✅ 审计日志 -全面跟踪所有操作
  • ✅ 基于范围的访问 -细粒度权限控制
  • ⚠️ 审批门 -需要外部webhook(非内置)

🔮 路线图 (参见 主页_功能.md)

  • 🔄 LXC网络审计 -审查和审核容器网络配置
  • 🔄 备份和快照 -带验证的自动备份
  • 🔄 证书管理 -让我们加密自动化
  • 🔄 反向代理管理 -Traefik/Nginx/Caddy配置
  • 🔄 Proxmox API集成 -完整的VM/容器管理
  • 🔄 安全扫描 -容器漏洞检测

🏗️ 控制平面网关架构

graph TD
    A[AI Assistant] -- MCP Protocol --> B[Control Plane Gateway]
    B -- Policy Gate --> C[Target Registry]
    C -- Execution Layer --> D[SSH Targets]
    C -- Execution Layer --> E[Docker Targets]
    C -- Execution Layer --> F[HTTP Targets]
    C -- Execution Layer --> G[Local System]

    B -- Audit Logging --> H[Audit Trail]
    B -- Capability Auth --> I[Security Policy]

    subgraph "Network Segments"
        J[Segment A Gateway] -- Manages --> K[Segment A Targets]
        L[Segment B Gateway] -- Manages --> M[Segment B Targets]
    end

架构概述

控制平面网关模型:

  • 单一网关:一个受信任的节点管理多个目标
  • 目标注册表:管理系统的集中配置
  • 策略强制:基于能力的授权可防止未经授权的操作
  • 执行编排:命令被发送到适当的目标

安全优势:

  • 减小爆炸半径:妥协只影响网关,而不是所有目标
  • 能力允许列表:明确授权可防止“LLM想象”风险
  • 分段隔离:网关可以按网段部署
  • 审计跟踪:全面记录所有网关操作

运营模式:

  • 网关部署:通常在Proxmox LXC容器中运行以进行隔离
  • 目标连接性:SSH密钥、Docker套接字、用于目标访问的HTTP API
  • 冗余:多个网关可以管理重叠的目标集
  • 维护:更新和配置的单点控制

🐳 网关部署和管理

Proxmox LXC网关部署

TailOpsMCP网关通常部署在Proxmox LXC容器中,以实现隔离和安全。

推荐的LXC配置

# /etc/pve/lxc/103.conf
arch: amd64
cores: 2
memory: 2048
net0: name=eth0,bridge=vmbr0,firewall=1,ip=dhcp
rootfs: local-lvm:vm-103-disk-0,size=8G

# Enable Docker for target management
features: nesting=1,keyctl=1
lxc.apparmor.profile: unconfined
lxc.cgroup2.devices.allow: c 10:200 rwm  # /dev/net/tun for Tailscale

网关容器功能

  • 隔离:LXC容器提供进程和网络隔离
  • 资源控制:CPU和内存限制可防止网关资源耗尽
  • 安全:AppArmor配置文件和c组设备控件
  • 网络接入:用于安全远程访问的Tailscale集成

多网关部署策略

基于分段的部署

为每个网段部署网关以限制爆炸半径:

# Production Segment A
production-a-gateway:
  segment: "production-a"
  targets: ["web-a-01", "db-a-01", "cache-a-01"]

# Production Segment B
production-b-gateway:
  segment: "production-b"
  targets: ["web-b-01", "db-b-01", "cache-b-01"]

# Staging Segment
staging-gateway:
  segment: "staging"
  targets: ["staging-web-01", "staging-db-01"]

冗余配置

多个网关可以管理重叠的目标集:

# Primary gateway for production
primary-gateway:
  targets: ["web-01", "db-01", "cache-01", "monitoring-01"]

# Secondary gateway for redundancy
secondary-gateway:
  targets: ["web-01", "db-01", "cache-01", "logging-01"]

网关维护程序

更新和升级

# Update gateway software
sudo systemctl stop tailopsmcp-mcp
cd /opt/tailopsmcp
git pull
pip install -r requirements.txt
sudo systemctl start tailopsmcp-mcp

# Verify gateway health
sudo systemctl status tailopsmcp-mcp
sudo journalctl -u tailopsmcp-mcp --since "5 minutes ago"

目标注册表管理

# Backup target registry
cp targets.yaml targets.yaml.backup.$(date +%Y%m%d_%H%M%S)

# Validate configuration
tailopsmcp-mcp --validate-config targets.yaml

# Reload gateway configuration
sudo systemctl reload tailopsmcp-mcp

🔐 安全与连接

网关安全的大规模集成

TailOpsMCP使用 尾标身份提供者(TSIDP) 用于OAuth 2.1身份验证,提供安全的网关访问控制。

网关网络安全

配置Tailscale ACL以控制网关访问:

{
  "acls": [
    {
      "action": "accept",
      "src": ["group:tailopsmcp-admins"],
      "dst": ["tag:tailopsmcp-gateway:8080"]
    }
  ],
  "tagOwners": {
    "tag:tailopsmcp-gateway": ["group:tailopsmcp-admins"]
  }
}

目标网络连接

确保网关能够通过Tailscale达到目标:

  • 子网路由:配置Tailscale子网路由以实现跨网络访问
  • ACL规则:允许网关到目标通信
  • 服务标签:使用标签进行网关服务发现

网关到目标连接

SSH目标要求

  • 网关和目标之间的网络连接
  • 已配置SSH密钥身份验证
  • 允许SSH访问的防火墙规则
  • 跨越网络时的尾标子网路由

Docker目标要求

  • Docker套接字访问或API端点可达
  • 与Docker主机的网络连接
  • API令牌身份验证(如果使用远程API)

HTTP目标要求

  • 与API端点的网络连接
  • 身份验证凭据(API密钥、令牌)
  • TLS/SSL证书验证

多网关网络设计

对于分段隔离和冗余:

# Segment A Gateway
segment-a-gateway:
  network_segment: "production-a"
  targets: ["web-a-01", "db-a-01", "cache-a-01"]

# Segment B Gateway
segment-b-gateway:
  network_segment: "production-b"
  targets: ["web-b-01", "db-b-01", "cache-b-01"]

# Overlapping targets for redundancy
shared-targets: ["monitoring-01", "logging-01"]

📚 文档

开发文档

项目文件

技术规格


🤝 贡献

我们欢迎捐款!请查看我们的 贡献指南 了解详情。

开发工作流程

  1. 分叉和克隆:分叉存储库并在本地克隆
  2. 设置环境:运行 make setup 营造发展环境
  3. 创建特征分支:为您的更改创建要素分支
  4. 开发:通过测试进行更改
  5. 质量检查:运行 make quality 确保代码质量
  6. 提交PR:提交带有清晰描述的拉取请求

代码质量要求

所有捐款必须:

  • ✅ 通过所有质量检查(make quality)
  • ✅ 包括综合测试
  • ✅ 遵循安全最佳实践
  • ✅ 包括新功能的文档
  • ✅ 保持向后兼容性

📄 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。


🔗 链接


🙏 致谢