资源与凭据

前置知识: 阅读本文前建议先了解 核心概念 中的资源模型部分。

Monstrum 通过资源(Resource)连接外部系统,通过凭据(Credential)安全管理认证信息。本文介绍如何创建和管理资源、配置凭据、以及将资源绑定到 Bot。


概述

资源是 Bot 连接外部系统的桥梁。当 Bot 需要访问一个外部系统(如 SSH 服务器、MCP 工具服务器、其他 Bot)时,你需要:

  1. 创建 Resource:配置连接信息(地址、端口等)
  2. 添加 Credential:提供认证信息(API Key、SSH 密钥等)
  3. 绑定到 Bot:在 Bot 的资源配置中绑定该 Resource,并设置权限

平台提供两类资源类型:

  • 内置资源类型(6 种):SSH、MCP、Bot、Web Access、Web3、Monstrum Agent——随平台安装,开箱即用
  • 插件资源类型:通过安装插件获得(如 GitHub、GitLab、Notion 等),详见 插件

资源管理页面

在左侧导航栏点击 资源管理 进入资源管理页面。页面分为两个区域:

  • 已配置的资源:你已创建的 Resource 列表
  • 可添加的资源:平台支持的资源类型,点击即可创建新 Resource

每个 Resource 卡片显示名称、类型、状态和关联的凭据数量。


SSH 资源

SSH 资源让 Bot 通过 SSH 连接远程服务器执行命令。

创建 SSH 资源

  1. 在资源管理页面,找到”可添加的资源”中的 SSH
  2. 点击进入,填写:
    • 资源名称:如”生产服务器”
    • 主机地址:SSH 服务器的 IP 或域名
    • 端口:默认 22
    • 用户名:SSH 登录用户名
  3. 保存资源

添加凭据

SSH 支持两种认证方式:

SSH Key 认证:

  1. 在 Resource 详情中点击添加凭据
  2. 选择 SSH Key 认证方式
  3. 粘贴 SSH 私钥内容
  4. 如有私钥密码(passphrase),一并填写
  5. 保存

密码认证:

  1. 选择 Password 认证方式
  2. 填写登录密码
  3. 保存

提供的工具

工具说明
ssh_execute在远程服务器执行命令

权限维度

在绑定到 Bot 时,可以配置以下权限约束:

维度说明示例
hosts允许连接的主机10.0.1.*prod-*
commands允许执行的命令ls *cat /var/log/*systemctl status *

使用 glob 模式匹配。未配置的维度表示不限制。


MCP 资源

MCP(Model Context Protocol)资源连接外部的 MCP 工具服务器,自动发现服务器上的可用工具。

创建 MCP 资源

  1. 在资源管理页面找到 MCP 端点
  2. 填写:
    • 资源名称:如”内部工具平台”
    • 服务器地址:MCP 服务器的 Streamable HTTP endpoint URL
  3. 选择认证方式:

无认证(No Auth): 适用于内网 MCP 服务器,直接保存即可。

API Key:

  1. 选择 API Key 认证
  2. 填写 API Key
  3. 可选配置认证 Header 名称(默认 Authorization

OAuth 2.1 Client Credentials:

  1. 选择 OAuth 认证

  2. 配置 OAuth Provider(详见 插件 中的 OAuth 章节)

  3. 平台自动获取和刷新 Token

  4. 保存后,平台会自动连接 MCP 服务器并发现可用工具

工具发现

保存 MCP 资源后,平台会:

  1. 连接到 MCP 服务器
  2. 调用 tools/list 获取工具列表
  3. 将发现的工具注册到平台

你可以在 Resource 详情中查看已发现的工具列表。如果工具列表有变化(新增或移除),平台会发送通知。

提供的工具

MCP 资源的工具是动态发现的——取决于 MCP 服务器提供了什么工具。

权限维度

维度说明示例
tools允许调用的工具get_*list_*create_issue

在 Bot 绑定 MCP 资源时,你可以选择允许 Bot 使用哪些已发现的工具(通过勾选或 glob 模式)。


Bot 资源

Bot 资源实现 Bot 间的任务委托。当 Bot A 需要让 Bot B 执行任务时,需要将 Bot B 作为资源绑定到 Bot A。

创建 Bot 资源

  1. 在资源管理页面找到 Bot
  2. 选择目标 Bot(你希望被调用的 Bot)
  3. 填写资源名称
  4. 保存

Bot 资源不需要凭据——Bot 间通信使用平台内部认证。

提供的工具

工具说明
bot_execute向目标 Bot 发送任务并等待结果
bot_query查询目标 Bot 的元信息
bot_status检查目标 Bot 的状态
bot_get_task_result获取之前创建的任务结果
bot_cancel_task取消之前创建的任务
bot_subscribe_event订阅平台事件
bot_unsubscribe_event取消事件订阅
bot_emit_event发布自定义事件

权限维度

维度说明示例
bots允许调用的目标 Bot具体 Bot ID
subscribe_patterns允许订阅的事件模式task.*schedule.fired
emit_patterns允许发布的事件名称custom.*

委派约束

Bot 间调用支持设置委派约束(Delegate Scope),限制被调用 Bot 在执行委托任务时的有效权限。详见 角色与权限 中的委派约束章节。


Web Access 资源

Web Access 资源让 Bot 可以搜索网页和抓取网页内容。

创建 Web Access 资源

  1. 在资源管理页面找到 Web Access
  2. 填写资源名称
  3. 选择搜索引擎:
    • DuckDuckGo:免费,无需 API Key
    • Brave:需要 Brave Search API Key
    • SerpAPI:需要 SerpAPI Key
    • Tavily:需要 Tavily API Key
  4. 如果选择了需要 API Key 的搜索引擎,添加对应的凭据
  5. 可选配置 HTTP/SOCKS5 代理
  6. 保存

提供的工具

工具说明
web_search搜索网页
web_fetch抓取指定 URL 的网页内容(转为 markdown)

权限维度

维度说明示例
domains允许抓取的域名*.github.comdocs.*

domains 仅作用于 web_fetch 操作。搜索操作不受域名限制。


Web3 (EVM) 资源

Web3 资源让 Bot 可以与 EVM 兼容的区块链交互(Ethereum、Polygon、Base、Arbitrum 等)。

创建 Web3 资源

  1. 在资源管理页面找到 Web3 (EVM)
  2. 填写:
    • 资源名称:如”Ethereum 主网”
    • Chain ID:链 ID(1=Ethereum、137=Polygon、8453=Base 等)
    • RPC URL:RPC 节点地址(如 Infura、Alchemy 提供的端点)
    • 区块浏览器 URL(可选):用于生成交易链接
    • 原生代币符号(可选):默认 ETH
    • 最大 Gas 价格(可选):Gas 价格上限(Gwei)
  3. 添加凭据:
    • 钱包私钥:用于签名交易的私钥(hex 格式)
    • RPC API Key(可选):RPC 提供商的 API Key
  4. 保存

安全提示:钱包私钥会被加密存储,Bot 无法访问明文。建议使用专用钱包,不要使用主钱包。

提供的工具

工具说明
web3_get_balance查询地址的原生代币或 ERC20 代币余额
web3_transfer转账原生代币
web3_get_transaction查询交易详情
web3_call_contract只读调用合约函数
web3_send_transaction发送写入合约的交易
web3_read_events读取合约事件日志
web3_estimate_gas估算 Gas 费用

权限维度

维度说明示例
operations允许的操作类型read(只读)、write(读写)
recipients允许转账的地址具体钱包地址
contracts允许调用的合约地址具体合约地址
functions允许调用的合约函数balanceOftransfer

建议为 Web3 资源配置严格的权限约束,特别是 recipientscontracts 白名单。


Monstrum Agent 资源

Monstrum Agent 资源由本地 Agent 程序自动创建和管理,不需要手动配置。当 Agent 连接到平台并注册工具后,对应的资源会自动出现在资源列表中。

详见 本地 Agent 接入

权限维度

维度说明示例
tools允许调用的工具run_shellread_file
paths允许访问的文件路径/home/user/project/*
commands允许执行的命令ls *git *
images允许使用的容器镜像python:3.*node:*

凭据管理

凭据是加密存储的认证信息。平台使用 AES-256 加密凭据,Bot 永远无法接触明文。

凭据与 Resource 的关系

一个 Resource 可以有多个凭据。例如,一个 SSH 服务器可以同时配置 SSH Key 和密码两种凭据。在将 Resource 绑定到 Bot 时,你需要选择 Bot 使用哪个凭据。

添加凭据

在 Resource 详情页中:

  1. 点击”添加凭据”
  2. 选择认证方式(取决于资源类型支持的方式)
  3. 填写凭据信息
  4. 保存

凭据状态

状态说明
正常凭据有效可用
已过期Token 或密钥已过期,需要更新
需要重新授权OAuth Token 刷新失败,需要重新走授权流程

更新凭据

编辑凭据时,敏感字段(如 API Key、私钥)留空表示保持当前值不变。

删除凭据

删除凭据前,请确认没有 Bot 正在使用该凭据。使用中的凭据被删除后,对应的 Bot 将无法调用该资源的工具。


将资源绑定到 Bot

创建 Resource 和凭据后,还需要将它绑定到 Bot,Bot 才能使用该资源的工具。

绑定步骤

  1. 进入 Bot 详情页 → 资源配置 Tab
  2. 点击 绑定资源
  3. 选择要绑定的 Resource
  4. 选择使用的凭据(如果 Resource 只有一个凭据,自动选中)
  5. 配置权限:
    • 静态工具类型(SSH、Bot、Web3):勾选允许的操作
    • 动态工具类型(MCP、Agent):勾选允许的工具
    • 参数约束:为各权限维度设置约束值
  6. 保存绑定

使用角色快速配置权限

如果你已经创建了角色模板(详见 角色与权限),可以在绑定时选择角色,快速应用预设的权限配置。

管理绑定

  • 编辑权限:在资源配置列表中点击编辑
  • 禁用/启用:临时禁用绑定而不删除
  • 解除绑定:移除 Bot 对该资源的访问权限

内置资源与插件资源

内置资源类型

平台内置以下 6 种资源类型,无需安装即可使用:

资源类型用途工具发现方式
SSH远程服务器命令执行静态(固定工具)
MCP连接 MCP 工具服务器动态(自动发现)
BotBot 间任务委托静态
Web Access网页搜索和抓取静态
Web3 (EVM)区块链交互静态
Monstrum Agent本地 Agent 工具桥接动态(Agent 注册)

插件资源类型

安装插件后,对应的资源类型会出现在”可添加的资源”列表中,与内置类型并列展示。配置方式一致:创建 Resource → 添加凭据 → 绑定到 Bot。

插件资源类型可能支持额外的认证方式(如 OAuth),这些在创建凭据时会自动出现。

详见 插件


常见用法

最小权限配置

为每个 Bot 只绑定必要的资源,并设置最严格的权限约束:

  • SSH:限制主机白名单和命令白名单
  • Web3:限制操作类型为只读、限制合约地址白名单
  • Bot 间调用:限制可调用的目标 Bot

多环境管理

为同一类型创建多个 Resource 实例,分别对应不同环境:

  • “SSH - 生产环境”:严格的命令白名单
  • “SSH - 测试环境”:宽松的命令白名单
  • 不同 Bot 绑定不同环境的 Resource

共享资源

一个 Resource 可以被多个 Bot 绑定,每个 Bot 可以有不同的权限约束。这样多个 Bot 可以共享同一个外部系统连接,但各自的权限互相独立。


常见问题

Resource 状态显示”已断开”

  • SSH:检查主机地址和端口是否正确,服务器是否在线
  • MCP:检查 MCP 服务器地址是否可达

工具发现失败(MCP)

  • 检查 MCP 服务器地址是否正确
  • 检查认证信息是否有效
  • 确认 MCP 服务器是否支持 Streamable HTTP 传输

Bot 调用工具时提示”权限不足”

  • 检查资源绑定中的权限配置
  • 确认调用参数是否在权限约束范围内
  • 数据中心 的日志审计中查看权限校验详情

凭据过期

  • OAuth Token:进入 Resource 详情重新授权
  • API Key:编辑凭据更新 Key 值
  • SSH Key:编辑凭据替换新的私钥