Skip to content

MCP servers 本质上是第三方代码,连接外部服务时引入了数据传输和代码执行风险。安全使用 MCP 的核心原则是:密钥不入代码库、权限最小化、只连可信源、定期审计工具使用记录。本文梳理从配置到日常使用的全套安全实践,适合在团队或生产项目中推广使用。

MCP servers 扩展了 Kiro 的能力,同时也引入了需要主动管控的安全因素:

  • 访问敏感信息:MCP servers 可能需要 API key 或 token
  • 外部代码执行:MCP servers 在 Kiro 沙箱之外运行代码
  • 数据传输:信息在 Kiro 和外部服务之间流动
  • 来源核实:使用前应审查 server 源码,确认来自可信来源
  • 隔离部署:在隔离环境中运行 server,限制授权范围

安全配置

保护 API Key 和 Token

  1. 不要将含有敏感 token 的配置文件提交到版本控制
  2. 以最小权限原则创建 token(例如 GitHub 优先使用细粒度 personal access token,而非经典 token)
  3. 将访问范围限制在必要的仓库或资源范围内
  4. 定期轮换配置中使用的 API key 和 token
  5. 尽量使用环境变量引用,而非硬编码值

示例:使用环境变量引用

不要在配置中硬编码 token:

json
{
  "mcpServers": {
    "github": {
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}"
      }
    }
  }
}

在 shell 中设置对应的环境变量:

bash
export GITHUB_TOKEN=your-token-value

已批准环境变量

出于安全考虑,Kiro 只展开在批准列表中明确注册的环境变量。当你添加或修改包含未批准环境变量的 MCP server 配置时,Kiro 会弹出安全警告,列出需要审批的变量,你可以直接从弹窗批准,或在设置中统一管理。

管理批准的环境变量:

  1. 打开 Kiro 设置
  2. 搜索 "Mcp Approved Env Vars"
  3. 添加允许展开的环境变量名

这一机制防止 MCP server 随意读取系统中的敏感环境变量。

配置文件权限

限制 MCP 配置文件的访问权限:

bash
# 限制用户级配置的访问权限
chmod 600 ~/.kiro/settings/mcp.json

# 限制工作区级配置的访问权限
chmod 600 .kiro/settings/mcp.json

工具审批规范

工具审批流程

  1. 仔细阅读每次工具请求的描述
  2. 检查工具将接收的具体参数
  3. 在批准前理解工具的实际效果
  4. 对任何与当前任务不符的可疑请求,选择拒绝

自动批准的适用条件

只对以下情况的工具设置自动批准:

  1. 不具备对敏感系统的写权限
  2. 来源可信且源码经过审查
  3. 在工作流中频繁使用
  4. 访问范围有明确限制

配置示例:

json
{
  "mcpServers": {
    "aws-docs": {
      "autoApprove": [
        "mcp_aws_docs_search_documentation",
        "mcp_aws_docs_read_documentation"
      ]
    }
  }
}

工作区隔离

使用工作区级配置

为不同项目配置独立的 MCP server:

project-a/
├── .kiro/
│   └── settings/
│       └── mcp.json  # Project A 专用 servers
project-b/
├── .kiro/
│   └── settings/
│       └── mcp.json  # Project B 专用 servers

工作区隔离的好处:

  • MCP server 只在相关项目工作时运行
  • token 和配置在不同项目间互不干扰
  • 安全风险被限制在特定工作区范围内

监控与审计

查看 MCP 日志

定期检查 MCP 日志,监控 server 活动:

  1. 打开 Kiro 面板
  2. 选择 Output 标签
  3. 从下拉列表中选择 "Kiro - MCP Logs"

审计工具使用情况

定期审查已批准的工具:

  1. 检查 MCP 配置中的 autoApprove 列表
  2. 回顾 MCP 日志中的工具调用记录
  3. 关注异常的 server 活动
  4. 移除不再频繁使用的工具的自动批准权限

安全事件响应

怀疑某个 MCP server 存在安全问题时:

  1. 立即在配置中禁用该 server(将 disabled 设为 true
  2. 吊销与该 server 关联的所有 token 和 API key
  3. 检查连接服务中是否存在未授权的操作记录
  4. 向该 MCP server 的维护者报告问题

其他安全措施

网络安全

  • 使用防火墙限制 MCP server 的出站连接
  • 对敏感的 MCP server 连接考虑使用 VPN
  • 监控 MCP server 的进出网络流量

系统安全

  • 保持系统安全补丁更新
  • 以最低必要权限运行 MCP server
  • 对敏感的 MCP server 考虑使用独立账户运行

常见问题

Q:把配置文件加入 .gitignore 就够了吗?

.gitignore 能防止误提交,但不能防止本地其他用户或进程读取文件。对于包含 API key 的配置文件,还应配合 chmod 600 限制文件系统权限,双重保护更稳妥。

Q:Kiro 的环境变量审批机制是怎么工作的?

首次在 MCP 配置中使用某个环境变量时,Kiro 会弹出审批提示。批准后,该变量名被记录到 Kiro 设置的白名单中。只有白名单内的变量才会在配置文件中被展开,未批准的变量名会被原样保留(不展开),server 收到的将是字面字符串 ${VAR_NAME}

Q:如何判断一个 MCP server 是否可信?

检查以下几点:开源且源码可审查、有明确的维护主体(官方机构或知名开源项目)、README 或文档清晰说明功能范围、社区有使用反馈。对于来源不明的 server,建议在隔离环境中测试后再用于生产工作区。