统一可观测性与策略配置

MCPConfiguration 是一个声明式的 YAML 规范,用于配置日志收集、指标采集、密钥管理、API 速率限制和策略执行。

  • by stammana
  • 本地部署
  • 更新于
在 GitHub 查看 stammana/openmcpspec

使用说明

🧩 MCP配置规范——统一的可观察性和策略配置

这 MCPConfiguration 是一个声明性的YAML规范,用于配置:

  • ✅ 日志摄取 跨Splunk、Elasticsearch和SumoLogic等提供商
  • 📊 指标收集 普罗米修斯、Datadog等。
  • 🔐 秘密管理 使用Akeyless
  • 🚦 API速率限制 每条路线
  • 🛡️ 策略执行 与OPA(Rego)进行合规性和验证

📁 结构

apiVersion: mcp.open/v1
kind: MCPConfiguration
metadata:
  name: example-mcp-config
  description: Unified configuration for logging, metrics, secrets, and policy in MCP
  version: 0.1.0
spec:
  logProviders: [...]
  metricsProviders: [...]
  secrets: {...}
  rateLimiting: {...}
  policy: {...}

🔍 现场细分

🧾 元数据

字段 类型 描述
name string 配置的唯一名称
description string 配置用途的描述
version string 配置的语义版本

🪵 logProviders[]

配置一个或多个日志目标:

字段 类型 描述
name string 日志提供程序的名称
type enum 其中之一 splunk, elasticsearch, sumologic
endpoint string 目标端点URL
token string Splunk的令牌
authToken string SumoLogic的令牌
auth object Elasticsearch的基本身份验证
index string 索引或目标位置
sourcetype string (Splunk)源类型标签

📊 metricsProviders[]

设置指标收集服务:

字段 类型 描述
name string 指标提供者的名称
type enum 其中之一 prometheus, datadog
endpoint string 抓取或推送位置的URL
scrapeInterval string (Prometheus)用于抓取指标的间隔
apiKey string (Datadog)API键
appKey string (Datadog)应用程序密钥
region string (Datadog)区域(例如。, us, eu)

🔐 secrets

基于无孔的秘密注射:

secrets:
  provider: akeyless
  config:
    accessId: ${AKEYLESS_ACCESS_ID}
    accessKey: ${AKEYLESS_ACCESS_KEY}
    apiUrl: https://api.akeyless.io
    secretsMapping:
      SPLUNK_TOKEN: path/to/splunk/token
      ELASTIC_USER: path/to/elastic/user
字段 类型 描述
provider string 秘密管理器类型(例如。, akeyless)
accessId string 无密钥访问ID
accessKey string 无密钥
apiUrl string Akeyless API端点
secretsMapping map 来自env var的键值映射→ 秘密路径

🚦 rateLimiting

rateLimiting:
  globalLimit:
    requestsPerMinute: 10000
  perRouteLimits:
    - route: /api/v1/logs
      limit: 1000
字段 类型 描述
globalLimit.requestsPerMinute integer 每分钟全局请求上限
perRouteLimits[] 列表 路线特定费率限制
route string neneneba API路由路径
limit integer 该路由的每分钟请求数

🛡️ policy

基于OPA(Rego)的验证和执行:

policy:
  format: opa
  engine: rego
  policies:
    - id: enforce-namespace-is-set
      description: Require all log entries to have a `namespace` label
      type: validation
      rule: |
        package mcp.policies
        default allow = false
        allow {
          input.namespace != ""
        }
字段 类型 描述
format string 策略格式引擎(例如。, opa)
engine string 执行语言(例如。, rego)
policies[] array 策略规则定义列表
id string 策略的唯一标识符
description string 人类可读的描述
type enum 其中之一 validation, enforcement
rule string 注册策略脚本(OPA DSL)

✅ 包括PCI-DSS合规政策

策略ID 描述
disallow-sensitive-data-in-logs 防止日志消息包含PCI敏感术语,如卡号
enforce-strict-access-logging 需要以下人员在场 user_id, ip_address,以及 timestamp 在日志中

这些规则支持PCI-DSS第10.2.x和10.3.x节。


📌 未来路线图

  • []添加Vault、AWS Secrets Manager支持
  • []扩展以支持CEL或CUE策略格式
  • []用于可观察性堆栈的动态提供程序插件

📂 目录结构示例

.
├── config/
│   └── mcp.yaml
├── policies/
│   ├── pci_access.rego
│   └── sensitive_logs.rego
├── main.go
└── README.md

📣 贡献

我们欢迎增强功能和提供商插件!打开问题或提交PR。