Appearance
MCP servers 本质上是第三方代码,连接外部服务时引入了数据传输和代码执行风险。安全使用 MCP 的核心原则是:密钥不入代码库、权限最小化、只连可信源、定期审计工具使用记录。本文梳理从配置到日常使用的全套安全实践,适合在团队或生产项目中推广使用。
MCP servers 扩展了 Kiro 的能力,同时也引入了需要主动管控的安全因素:
- 访问敏感信息:MCP servers 可能需要 API key 或 token
- 外部代码执行:MCP servers 在 Kiro 沙箱之外运行代码
- 数据传输:信息在 Kiro 和外部服务之间流动
- 来源核实:使用前应审查 server 源码,确认来自可信来源
- 隔离部署:在隔离环境中运行 server,限制授权范围
安全配置
保护 API Key 和 Token
- 不要将含有敏感 token 的配置文件提交到版本控制
- 以最小权限原则创建 token(例如 GitHub 优先使用细粒度 personal access token,而非经典 token)
- 将访问范围限制在必要的仓库或资源范围内
- 定期轮换配置中使用的 API key 和 token
- 尽量使用环境变量引用,而非硬编码值
示例:使用环境变量引用
不要在配置中硬编码 token:
json
{
"mcpServers": {
"github": {
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}"
}
}
}
}在 shell 中设置对应的环境变量:
bash
export GITHUB_TOKEN=your-token-value已批准环境变量
出于安全考虑,Kiro 只展开在批准列表中明确注册的环境变量。当你添加或修改包含未批准环境变量的 MCP server 配置时,Kiro 会弹出安全警告,列出需要审批的变量,你可以直接从弹窗批准,或在设置中统一管理。
管理批准的环境变量:
- 打开 Kiro 设置
- 搜索 "Mcp Approved Env Vars"
- 添加允许展开的环境变量名
这一机制防止 MCP server 随意读取系统中的敏感环境变量。
配置文件权限
限制 MCP 配置文件的访问权限:
bash
# 限制用户级配置的访问权限
chmod 600 ~/.kiro/settings/mcp.json
# 限制工作区级配置的访问权限
chmod 600 .kiro/settings/mcp.json工具审批规范
工具审批流程
- 仔细阅读每次工具请求的描述
- 检查工具将接收的具体参数
- 在批准前理解工具的实际效果
- 对任何与当前任务不符的可疑请求,选择拒绝
自动批准的适用条件
只对以下情况的工具设置自动批准:
- 不具备对敏感系统的写权限
- 来源可信且源码经过审查
- 在工作流中频繁使用
- 访问范围有明确限制
配置示例:
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 活动:
- 打开 Kiro 面板
- 选择 Output 标签
- 从下拉列表中选择 "Kiro - MCP Logs"
审计工具使用情况
定期审查已批准的工具:
- 检查 MCP 配置中的 autoApprove 列表
- 回顾 MCP 日志中的工具调用记录
- 关注异常的 server 活动
- 移除不再频繁使用的工具的自动批准权限
安全事件响应
怀疑某个 MCP server 存在安全问题时:
- 立即在配置中禁用该 server(将
disabled设为true) - 吊销与该 server 关联的所有 token 和 API key
- 检查连接服务中是否存在未授权的操作记录
- 向该 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,建议在隔离环境中测试后再用于生产工作区。