Token导航 LogoToken导航TokenDH.com
Illumio MCP Server logo
安全风控stdio官方级别未说明来源级核验

Illumio MCP Server

MCP Server

The first MCP server for cybersecurity

工具数

38

提示词数

0

GitHub Stars

7

资源数

0
安全PythonClaudeClaude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

alexgoller

提供方

alexgoller

最后核验

2026/5/18 02:16

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

uv run pytest tests/ -v

详细介绍

](https://mseep.ai/app/alexgoller-illumio-mcp-server)

Illumio MCP服务器

一种模型上下文协议(MCP)服务器,提供与Illumio PCE(策略计算引擎)交互的接口。此服务器支持对Illumio工作负载管理、标签操作、流量分析、自动围栏和基础设施服务识别的编程访问。

它能做什么?

使用会话式AI与您的PCE对话:

  • 完整CRUD 关于工作负载、标签、IP列表、服务和规则集
  • 流量分析 --查询流、获取摘要、按策略决策筛选
  • 自动围栏 --使用一个命令分析流量并创建应用程序到应用程序的细分策略
  • 选择性执行 --为具有可配置消费者口味的选择性模式下的应用程序添加拒绝规则
  • 基础设施服务标识 --使用图中心性分析发现哪些应用程序是基础设施服务,这样你就知道首先要制定什么政策
  • 拒绝规则管理 --创建、更新和删除拒绝规则(包括紧急情况下的覆盖拒绝)
  • 事件监控 --使用严重性和类型筛选器查询PCE事件
  • PCE健康检查 --验证连接和凭据

先决条件

  • Python 3.8+
  • 访问Illumio PCE实例
  • PCE的有效API凭据

安装

  1. 克隆存储库:
git clone https://github.com/alexgoller/illumio-mcp-server.git
cd illumio-mcp-server
  1. 安装依赖项:
uv sync

配置

您应该使用 uv 命令,这使得传递环境变量并在后台运行它变得更加容易。

使用uv和Claude Desktop

在MacOS上: ~/Library/Application\ Support/Claude/claude_desktop_config.json 在Windows上: %APPDATA%/Claude/claude_desktop_config.json

将以下内容添加到 custom_settings 章节:

"mcpServers": {
    "illumio-mcp": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/illumio-mcp-server",
        "run",
        "illumio-mcp"
      ],
      "env": {
        "PCE_HOST": "your-pce-host",
        "PCE_PORT": "your-pce-port",
        "PCE_ORG_ID": "1",
        "API_KEY": "api_key",
        "API_SECRET": "api_secret"
      }
    }
  }
}

使用OAuth资源服务器的HTTP传输(阶段3a)

服务器使用MCP Streamable HTTP传输通过HTTP运行(规范修订版 2025-03-26)并验证由您的IdP颁发的OAuth 2.1承载令牌。这是 阶段3a:身份得到强制执行;每个用户的PCE密钥进入阶段3b。

使用身份验证运行(生产形态)

export MCP_PUBLIC_URL=https://mcp.illumio.example
export MCP_OAUTH_ISSUER=https://login.microsoftonline.com//v2.0
export MCP_OAUTH_JWKS_URL=https://login.microsoftonline.com//discovery/v2.0/keys
export MCP_OAUTH_AUDIENCE=https://mcp.illumio.example
export MCP_OAUTH_REQUIRED_SCOPE=illumio-mcp.use   # default; override if needed
illumio-mcp-http --host 127.0.0.1 --port 8080

服务器拒绝在没有这些环境变量的情况下启动(除非 MCP_DEV_INSECURE=1).

MCP客户端通过标准RFC 9728端点发现AS:

GET /.well-known/oauth-protected-resource

未经身份验证的请求 /mcp 返回 401 随着 WWW-Authenticate: Bearer resource_metadata="",符合任何规范 MCP客户端(Claude Desktop、ChatGPT、MCP Inspector)自动跟随 对配置的AS运行PKCE身份验证代码流。

无身份验证运行(仅限开发人员)

MCP_DEV_INSECURE=1 illumio-mcp-http

服务器记录了一个突出的警告。请勿在生产中使用。

健康端点(始终未经身份验证)

  • GET /healthz --活性
  • GET /readyz --准备就绪(阶段3a返回与健康相同的结果;阶段3b/c将增加PCE+JWKS可达性)

两种PCE模式(阶段3b与阶段3e)

HTTP服务器支持两种方式来获取PCE凭据,通过以下方式选择 MCP_PCE_MODE:

模式MCP_PCE_MODEPCE信誉入职PCE侧审计
每用户 (默认)per_user每个经过身份验证的用户一个PCE API密钥,在密钥库中加密用户通过 /setup 页面或 register-pce-credentials 工具PCE日志通过每个用户的API密钥显示真实的人类
共享sharedenv中的一个PCE服务帐户密钥(与stdio相同)无-对任何经过身份验证的用户立即有效PCE日志显示服务帐户;MCP审计日志是“谁做了什么”的真相来源

在以下情况下按用户选择:

  • 您希望PCE侧审计归因能够识别人员
  • 用户很乐意提供自己的PCE API密钥一次
  • 您可以容忍每个用户的PCE密钥蔓延(PCE有限制)

在以下情况下选择共享:

  • PCE对每个用户的API密钥的限制对于每个用户模式来说过于激进
  • 您希望零摩擦入职(否 /setup 步骤)
  • 您可以仅依靠MCP审核日志进行人员级别归因
  • 您自己操作PCE服务帐户,并按计划轮换

共享 模式, /setup 未安装凭据管理工具 (register-pce-credentials, delete-pce-credentials)友好地拒绝 错误,以及 MCP_KEK 不需要。SSO+JWT+基于角色的认证+审计 log+confirm标记仍然同样适用。

# Shared mode — same env that stdio uses today, plus auth/role config
export MCP_PCE_MODE=shared
export PCE_HOST=https://your-pce.example.com
export PCE_PORT=8443
export PCE_ORG_ID=1
export API_KEY=your_pce_api_key_name
export API_SECRET=your_pce_api_key_secret
# (other auth/role env vars from earlier sections still apply)
illumio-mcp-http

每个用户PCE密钥(阶段3b)

每个经过身份验证的用户都有自己的PCE API密钥/机密存储在 加密的SQLite密钥库。每个人的PCE端审计日志属性正确; 撤销用户是一个单一的工具调用。

使用auth运行时需要额外的env:

export MCP_KEK=$(python -c 'import os, base64; print(base64.b64encode(os.urandom(32)).decode())')
export MCP_KEYSTORE_PATH=/var/lib/illumio-mcp/keys.db   # default: ./data/keys.db

KEK是 从不 存储在数据库旁边。KEK损失=总损失 储存的信用证(故意、失败关闭)。对于生产,MCP_KEK来源于 KMS或Vault,而不是操作员的shell。

入职路径(可选择其中之一):

  1. 浏览器 --参观 /setup 认证后;将凭据粘贴到表单中。
  2. MCP客户端 --呼叫 register-pce-credentials 工具;唯一的工具

在注册凭据之前可用。

其他凭证工具:

  • check-pce-credentials-status --此用户是否已注册凭据?
  • delete-pce-credentials --删除此用户的凭据。

基于角色的授权(第3c阶段)

服务器将每个用户的IdP组映射到三个内部角色之一: 读者, 操作员, 管理员。每个工具的授权由 调度员使用 roles 每个上的元数据 ToolSpec.

配置组→ 通过env进行角色映射(逗号分隔):

# A user matching ANY of these groups gets that role; highest role wins.
export MCP_ROLE_GROUPS_ADMIN=sg-illumio-mcp-admin
export MCP_ROLE_GROUPS_OPERATOR=sg-illumio-mcp-operator,sg-illumio-mcp-admin
export MCP_ROLE_GROUPS_READER=sg-illumio-mcp-readonly,sg-illumio-mcp-operator,sg-illumio-mcp-admin

# Optional: fallback role when no group matches. Leave unset to refuse.
# export MCP_ROLE_DEFAULT=reader

逐个工具默认值:

工具类别允许的角色示例
读取阅读器、操作员、管理员get-labels, get-workloads, get-traffic-flows
写入运算符、管理员create-*, update-*, delete-*
配置+批量管理员provision-policy, ringfence-batch

没有匹配角色的用户(也没有 MCP_ROLE_DEFAULT)接收结构化 forbidden_no_role 错误。

审计日志(第3c阶段)

每个调度器决策(允许/拒绝/错误)都会写入SQLite审计 数据库。架构和存储位置:

# Defaults to /audit.db
export MCP_AUDIT_LOG_PATH=/var/lib/illumio-mcp/audit.db

审核行包括 (ts, sub, iss, tool, decision, reason, role, request_id)从不 工具论证。这 request_id 匹配 X-Request-Id 响应标头,以便可以关联外部跟踪。

查询示例:

-- Recent denied calls per user
SELECT ts, sub, tool, reason FROM audit_log
WHERE decision='denied'
ORDER BY ts DESC LIMIT 20;

-- Tool-call volume by user
SELECT sub, COUNT(*) FROM audit_log
WHERE ts > date('now', '-7 days')
GROUP BY sub ORDER BY 2 DESC;

确认变异工具的令牌(第3d阶段)

标记的工具 requires_confirm=True (目前 provision-policy, ringfence-batch, register-pce-credentials, delete-pce-credentials)要求 服务器在中颁发了一次性确认令牌 params._meta.confirm_token 当 通过HTTP调用。Stdio模式不受影响——启动 该过程可以直接调用变异工具。

身份验证模式下所需的环境变量:

export MCP_CONFIRM_HMAC_KEY=$(python -c 'import os, base64; print(base64.b64encode(os.urandom(32)).decode())')
# Optional:
# export MCP_CONFIRM_TTL_SECONDS=120
# export MCP_CONFIRM_JTI_PATH=/var/lib/illumio-mcp/jti.db
# export MCP_CONFIRM_FRESH_AUTH_SECONDS=300   # require JWT auth_time within 5 min

客户如何使用它

  1. 在没有令牌的情况下调用变异工具→ 服务器返回:
   {"error": "confirm_required", "params_hash": "", "message": "..."}
  1. 呼叫 POST /confirm 使用JWT和params_hash:
   curl -X POST https://mcp.illumio.example/confirm \
     -H "Authorization: Bearer $JWT" \
     -H "Content-Type: application/json" \
     -d '{"tool":"provision-policy","params_hash":""}'
   # → {"confirm_token": "...", "expires_in": 120}
  1. 使用令牌重新调用工具 params._meta.confirm_token.

代币是 一次性使用 (回放返回 confirm_token_replay)以及 作用域的(sub, tool, params_hash)篡改任何字段都会使令牌无效。

逐步认证(可选,建议用于生产)

MCP_CONFIRM_FRESH_AUTH_SECONDS=300 要求JWT auth_time 声称在最后5分钟内。强制用户重新进行身份验证 在铸造代币之前——最强大的即时注射防御 没有交互式会话模型。需要发布IdP auth_time (Entra和Okta都为OIDC签到流程提供服务)。

工具

负载管理

  • get-workloads --通过按名称、主机名、IP、标签和最大结果进行可选筛选来检索工作负载
  • create-workload --使用名称、IP地址和标签创建非托管工作负载
  • update-workload --更新现有工作负载的属性
  • delete-workload --从PCE中删除工作负载

标签操作

  • get-labels --通过可选的按键、值和最大结果过滤来检索标签
  • create-label --使用键值对创建新标签
  • update-label --更新现有标签
  • delete-label --删除标签

规则集和规则管理

  • get-rulesets --获取具有按名称、描述和启用状态进行可选筛选的规则集
  • create-ruleset --创建具有作用域的新规则集
  • update-ruleset --更新规则集属性
  • delete-ruleset --删除规则集
  • create-deny-rule --在规则集中创建拒绝规则(常规或覆盖拒绝)
  • update-deny-rule --更新现有的拒绝规则
  • delete-deny-rule --删除拒绝规则

IP列表管理

  • get-iplists --获取IP列表,可选择按名称、描述、FQDN和最大结果进行筛选
  • create-iplist --创建新的IP列表
  • update-iplist --更新现有IP列表
  • delete-iplist --删除IP列表

服务管理

  • get-services --通过按名称、端口、协议和最大结果进行可选筛选来获取服务
  • create-service --创建新的服务定义
  • update-service --更新现有服务
  • delete-service --删除服务

流量分析

  • get-traffic-flows --通过按日期范围、源/目的地、服务、策略决策等进行过滤,获取详细的流量数据
  • get-traffic-flows-summary --获取按应用程序、环境、端口和协议分组的聚合流量摘要

自动围栏

  • create-ringfence自动创建应用程序到应用程序的细分策略。 分析流量以发现哪些远程应用程序与目标应用程序通信,然后使用以下内容创建规则集:

- 范围内允许规则 --应用程序中的所有工作负载都可以自由通信 - 额外范围允许规则 --每个发现的远程应用程序都会在所有服务上获得一个允许规则 - 选择性执行模式 (selective=true)--添加了一个拒绝规则,阻止所有入站,首先处理已知应用程序的允许规则。使您比完全强制模式更快地进入强制模式。 - 拒绝消费口味 (deny_consumer 参数): - any (默认)--IP列表任意(0.0.0.0/0)作为消费者,仅在目的地拒绝。最安全。 - ams --所有工作负载作为消费者,拒绝推送到每个受管理的工作负载。更广泛。 - ams_and_any --两者都有。最大覆盖范围。 - 政策覆盖意识 --每条规则都注释为 already_allowed (现有政策涵盖的流量,为记录而创建)或 newly_allowed (填补政策空白)。摘要显示了有多少远程应用程序已经覆盖,而需要新的规则。 - skip_allowed 参数 --设置为 true 仅为现有策略尚未涵盖的流量创建规则,生成仅填补空白的最小规则集 - 合并安全 --检测现有规则集和规则,从不创建重复项 - 模拟运行支持 --预览在不进行更改的情况下创建的内容

基础设施服务标识

  • identify-infrastructure-services发现哪些应用程序是基础设施服务 通过分析交通模式。构建应用程序到应用程序的通信图并使用 双重模式评分 识别两种类型的基础设施:

供应商基础设施 (AD、DNS、共享数据库)——被许多应用程序使用,程度高,程度低。 消费者基础设施 (监控、备份、日志传送)——连接到许多应用程序,输出程度高,输入程度低。

每个应用程序计算两个分数,较高者获胜:

分数程度指标(40%)方向性(30%)中间性(25%)数量(5%)
提供者程度消费者比率(占/总)中间中心性连接量
消费者输出度生产者比率(输出/总)中间中心性连接量

混合交通抑制: score *= 1 / (1 + min(in_degree, out_degree) * 0.3) --同时具有重要入站和出站连接的应用程序是业务应用程序,而不是基础设施。纯定向应用程序(全部输入或全部输出)不会受到惩罚。

非生产环境(登台、开发等)收到 50%的扣分 因为基础设施服务通常存在于生产中。

应用程序分为不同的层次:

- 核心基础设施 (得分>=75)——监控、AD、SIEM、DNS。政策首先。 - 共享服务 (得分>=50)——共享数据库、消息队列。第二个政策。 - 标准应用 (得分\ .env << EOF PCE_HOST=your-pce-host PCE_PORT=8443 PCE_ORG_ID=1 API_KEY=your-api-key API_SECRET=your-api-secret EOF

Run all tests

uv run pytest tests/ -v


测试套件包括:

- 工具列表和模式验证
- 工作负载、标签、IP列表、服务、规则集和拒绝规则的完整CRUD生命周期
- 交通流量查询和汇总
- 围栏创建(标准、选择性、拒绝消费者口味、合并幂等性)
- 基础设施服务识别(评分、排序、层次分类)
- 丢失资源的错误处理

## Illumio规则处理订单

了解规则处理对于围栏至关重要:

1. **基本规则** --内置,不能修改
1. **覆盖拒绝规则** --阻止交通覆盖所有允许(紧急使用)
1. **允许规则** --允许流量(环形围栏远程应用程序规则请点击此处)
1. **拒绝规则** --阻止特定流量(环形围栏拒绝所有入站流量进入此处)
1. **默认操作** --选择性模式=允许所有,完全执行=拒绝所有

在选择性执行中,默认值是允许所有,因此需要一个拒绝规则来使围栏有效。已知的远程应用程序会获得允许规则(步骤3),这些规则在拒绝(步骤4)之前进行处理。

## 视觉示例

以下所有示例均由Claude Desktop生成,并使用通过此MCP服务器获得的数据。

### 应用分析

![Application Analysis](images/application-analysis.png)
*应用程序通信模式和依赖关系的详细视图*

![Application Tier Analysis](images/application-tier-analysis.png)
*不同应用层之间的流量模式分析*

### 基础设施洞察

![Infrastructure Analysis Dashboard](images/infrastrcture-analysis-dashboard.png)
*显示关键基础设施指标和状态的概览仪表板*

![Infrastructure Services](images/infrastructure-services-analysis.png)
*基础设施服务通信的详细分析*

### 安全评估

![Security Analysis Report](images/security-analysis-report.png)
*综合安全分析报告*

![High Risk Findings](images/security-assessment-findings-high-risk.png)
*高风险漏洞的安全评估结果*

![PCI Compliance](images/security-assessment-findings-pci.png)
*PCI合规性评估结果*

![SWIFT Compliance](images/security-assessment-findings-swift.png)
*SWIFT合规性评估结果*

### 补救计划

![Remediation Plan Overview](images/security-remediation-plan.png)
*安全补救计划概述*

![Detailed Remediation Steps](images/security-remediation-plan-2.png)
*安全补救实施的详细步骤*

### 策略管理

![IP Lists Overview](images/iplists-overview.png)
*IP列表管理界面*

![Ruleset Categories](images/ruleset-categories.png)
*规则集类别和组织概述*

![Application Ruleset Ordering](images/ordering-application-ruleset-overview.png)
*应用程序规则集排序配置*

### 负载管理

![Workload Analysis](images/workload-analysis.png)
*详细的工作量分析和指标*

![Workload Traffic](images/workload-traffic-identification.png)
*工作负载流量模式的识别和分析*

### 标签管理

![PCE Labels by Type](images/pce-labels-by-type.png)
*按类型和类别组织PCE标签*

### 服务分析

![Service Role Inference](images/service-role-inference.png)
*基于流量模式的服务角色自动推理*

![Top Sources and Destinations](images/top-5-sources-and-destinations.png)
*前五大交通来源和目的地分析*

### 项目规划

![Project Plan](images/project-plan-mermaid.png)
*项目实施时间表和里程碑*

## 可用提示

### 围栏应用

这 `ringfence-application` prompt帮助创建安全策略,通过控制入站和出站流量来隔离和保护应用程序。

**必需参数:**

- `application_name`:环栅栏应用程序的名称
- `application_environment`:应用程序到环栅栏的环境

**特征:**

- 为应用程序内的层间通信创建规则
- 使用流量来识别所需的外部连接
- 基于源应用程序实施入站流量限制
- 为必要的外部通信创建出站流量规则
- 处理作用域内(相同的app/env)和作用域外(外部)连接
- 为远程应用程序连接创建单独的规则集

### 分析应用程序流量

这 `analyze-application-traffic` prompt提供了对应用程序流量模式和连接的详细分析。

**必需参数:**

- `application_name`:要分析的应用程序的名称
- `application_environment`:要分析的应用程序环境

**分析特点:**

- 按入站和出站流量订购流量
- 按应用程序/环境/角色组合分组
- 识别相关标签类型和模式
- 以React组件格式显示结果
- 显示协议和端口信息
- 尝试识别已知的服务模式(例如,端口5666上的Nagios)
- 将流量分为基础设施和应用程序类型
- 确定互联网曝光率
- 显示Illumio角色、应用程序和环境标签

### 如何使用MCP提示

第一步:点击界面中的“从MCP连接”按钮

![MCP Prompt Workflow](images/prompts-finding-prompt-menu.png)

步骤2:从已安装的MCP服务器中进行选择

![MCP Prompt Workflow](images/prompts-choose-integration.png)

步骤3:填写所需的提示参数:

![MCP Prompt Workflow](images/prompts-required-parameters.png)

第四步:点击提交,发送配置好的提示

### 提示如何工作

- MCP服务器将配置的提示发送给Claude
- Claude通过模型上下文协议接收上下文
- 允许专门处理Illumio的特定任务

此工作流程实现了Illumio系统和Claude之间的自动上下文共享,用于应用程序流量分析和围栏任务。

## 码头工人

该应用程序可以从GitHub容器注册表中作为Docker容器使用。

### 拉动容器

docker pull ghcr.io/alexgoller/illumio-mcp-server:latest


您还可以通过替换来使用特定版本 `latest` 带有版本号:

docker pull ghcr.io/alexgoller/illumio-mcp-server:1.0.0


### 使用Claude Desktop运行

要将容器与Claude Desktop一起使用,您需要:

1. 创建环境文件(例如。 `~/.illumio-mcp.env`)使用您的PCE凭据:

PCE_HOST=your-pce-host PCE_PORT=your-pce-port PCE_ORG_ID=1 API_KEY=your-api-key API_SECRET=your-api-secret


2. 将以下配置添加到您的Claude Desktop配置文件中:

在MacOS上(`~/Library/Application Support/Claude/claude_desktop_config.json`):

{ "mcpServers": { "illumio-mcp-docker": { "command": "docker", "args": [ "run", "-i", "--init", "--rm", "-v", "/Users/YOUR_USERNAME/tmp:/var/log/illumio-mcp", "-e", "DOCKER_CONTAINER=true", "-e", "PYTHONWARNINGS=ignore", "--env-file", "/Users/YOUR_USERNAME/.illumio-mcp.env", "illumio-mcp:latest" ] } } }


确保:

- 更换 `YOUR_USERNAME` 使用您的实际用户名
- 创建日志目录(例如。 `~/tmp`)
- 根据您的系统调整路径

### 独立运行

您也可以直接运行容器:

docker run -i --init --rm \ -v /path/to/logs:/var/log/illumio-mcp \ -e DOCKER_CONTAINER=true \ -e PYTHONWARNINGS=ignore \ --env-file ~/.illumio-mcp.env \ ghcr.io/alexgoller/illumio-mcp-server:latest


### Docker Compose

对于开发或测试,您可以使用Docker Compose:

version: '3' services: illumio-mcp: image: ghcr.io/alexgoller/illumio-mcp-server:latest init: true volumes: - ./logs:/var/log/illumio-mcp environment: - DOCKER_CONTAINER=true - PYTHONWARNINGS=ignore env_file: - ~/.illumio-mcp.env


然后运行:

docker-compose up


## 贡献

1. 分叉存储库
1. 创建要素分支
1. 提交您的更改
1. 推到分支
1. 创建拉取请求

## 许可证

该项目根据GPL-3.0许可证获得许可。看 [许可证](LICENSE) 文件以获取详细信息。

## 支持

如需支持,请 [创建问题](https://github.com/alexgoller/illumio-mcp-server/issues).

目录标签

目录标签

安全PythonClaudeai-chatbot网络安全本地部署策略管理流量分析工作负载管理自动化环围

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

部署方式(deploymentType,部署类型)

remote-capable

工具数量(toolCount,工具数)

38

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiononeremote-capable

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP