Skip to content

MCP 能把外部 tools 接进 Kiro CLI,也会把外部风险带进开发流程。安全接入的核心是显式授权、本地隔离、最小权限、凭据不落盘和持续审计。本文给出配置、token、网络和 tool 权限的实践清单,帮助你在扩展 agent 能力时守住边界。

Kiro CLI MCP Security:安全接入外部 server 与 tools

MCP 的价值在于扩展 agent 能力,但任何能访问文件、网络、仓库、数据库或云资源的 tool,都可能带来安全风险。接入 MCP server 前,先回答一个问题:如果这个 tool 被错误调用,最坏会发生什么?

Kiro CLI 的 MCP security model 主要基于四个原则:

  1. Explicit Permission:tool 执行前需要明确用户授权。
  2. Local Execution:MCP servers 通常在你的机器本地运行。
  3. Isolation:每个 MCP server 作为独立进程运行。
  4. Transparency:用户可以看到有哪些 tools,以及它们声称会做什么。

这些原则能降低风险,但不能替代你的权限设计和凭据管理。

信任与验证

只安装可信来源的 MCP server:

  • 优先选择官方 server、活跃维护的开源项目或组织内部审核过的 server。
  • 安装前阅读 tool descriptions、README、权限说明和 issue。
  • 查看是否有安全公告、漏洞报告或长期无人维护的迹象。
  • 对高权限 server,尽量先在隔离环境中试运行。

不要因为某个 server “能跑起来”就直接接入日常项目。MCP server 本质上是你授权 agent 可以调用的外部程序或服务。

访问控制

按最小权限原则配置 server:

  • 文件系统只开放必要目录。
  • 网络访问只允许必要 endpoint。
  • API token 只授予当前任务需要的 scopes。
  • 能只读就不要给写权限。
  • 能放到特定 agent,就不要全局开放。

如果某个 server 同时提供安全 tool 和危险 tool,可以用 disabledTools 禁用高风险能力:

json
{
  "mcpServers": {
    "server-name": {
      "disabledTools": ["delete_file", "execute_command", "drop_database"]
    }
  }
}

凭据管理

不要在配置文件中硬编码 API keys、tokens 或数据库连接串。推荐用环境变量引用:

bash
export MCP_API_KEY="your-secure-key"
export DATABASE_URL="your-connection-string"

kiro-cli mcp add my-server --env MCP_API_KEY --env DATABASE_URL

mcp.json 中也应使用变量引用:

json
{
  "mcpServers": {
    "my-server": {
      "command": "my-mcp-server",
      "env": {
        "MCP_API_KEY": "${MCP_API_KEY}",
        "DATABASE_URL": "${DATABASE_URL}"
      }
    }
  }
}

实践建议:

  • 不要提交包含真实凭据的配置文件。
  • 定期轮换 token。
  • 优先使用系统 keychain、密码管理器或企业 secret manager。
  • 给不同 server 使用不同 token,避免一个凭据横跨所有系统。
  • token 泄露后立即吊销并重新签发。

网络安全

远程 MCP server 要特别关注网络边界:

  • 使用 HTTPS,不要在公网使用明文 HTTP。
  • 校验 SSL/TLS 证书是否可信。
  • 谨慎接入需要广泛网络访问的 server。
  • 对异常请求、未知域名访问保持警惕。
  • 企业环境中可结合代理、网关或出站访问策略做限制。

如果只是本地开发用的 localhost server,可以使用 HTTP;但一旦跨机器或跨网络,就应该使用 HTTPS 和明确认证。

监控与审计

MCP 不是一次配置完就结束。建议定期做审计:

  • 查看 MCP server 日志。
  • 关注 agent 是否调用了预期之外的 tools。
  • 记录当前安装了哪些 servers、它们拥有哪些权限。
  • 删除不再使用或来源不可信的 servers。
  • 对团队共享配置做 review,避免危险 tools 被默认开放。

企业团队可以配合 MCP registry,把可用 server 收敛到管理员审核过的列表中。

配置安全清单

接入新 MCP server 前,可以按这份清单检查:

  • server 来源是否可信?
  • 是否清楚每个 tool 的用途和副作用?
  • 是否只授予最小 API scopes?
  • 是否没有把 token 写进仓库?
  • 是否禁用了删除、执行命令、写生产系统等高风险 tools?
  • 是否能在 /mcp 中看到 server 和 tools 的实际加载状态?
  • 是否有日志或审计方式可以追踪调用行为?

对高风险 tools 的处理建议

不同 tools 的风险等级不同:

tool 类型风险建议
文档搜索、只读知识库可作为默认 tools,但仍要确认来源
GitHub issue、PR 写操作限制 token scopes,并保留人工确认
文件删除、shell 执行默认禁用,必要时只给特定 agent
数据库写入、云资源变更使用独立环境、最小权限和审计日志

不要为了“省一次确认”滥用 autoApprove。自动批准适合低风险、幂等、只读的 tools,不适合会改变系统状态的操作。

下一步

  • 查看 MCP 示例,选择低风险 server 开始练习。
  • 回到 MCP 入门,理解 server、tools 和 agent 的关系。
  • 阅读 MCP 配置,学习用 disabledTools、env 和 headers 控制边界。

常见问题

MCP server 本地运行就一定安全吗?

不一定。本地运行只能减少远程暴露面,但 server 仍然可能读取文件、访问网络或执行命令。关键还是来源可信和权限最小化。

可以对所有 tools 开启 autoApprove 吗?

不建议。autoApprove 应只用于低风险、只读、幂等的 tools。涉及写文件、执行命令、修改仓库或调用生产 API 的 tools 都应保留人工确认。

token 已经写进 mcp.json 该怎么办?

先从文件中移除 token,改用环境变量或 secret manager;如果文件曾经提交到仓库,应立即吊销旧 token、重新签发,并检查提交历史和访问日志。