目录

AI Agent 安全红线:我的生产环境检查清单

AI Agent 安全为什么重要

AI Agent 的能力越强,安全风险越大。

# 如果 AI Agent 能执行命令:
task = "帮我清理一下日志文件"

# 它执行了:
rm -rf /var/log/*
# 或者更糟:
task = "帮我看看这个文件"
# 文件是 /etc/shadow

这篇文章是生产环境 AI Agent 的安全检查清单。

权限控制

1. 最小权限原则

# 不要给 AI Agent 管理员权限
# 只给完成任务的最小权限

# 错误:
admin_agent = Agent(
    role="admin",
    permissions=["read", "write", "execute", "delete"]
)

# 正确:
limited_agent = Agent(
    role="code_reviewer",
    permissions=["read", "comment"]
)

2. 危险操作二次确认

# 执行危险命令前,需要人工确认
dangerous_operations = [
    "rm",
    "drop table",
    "delete",
    "sudo",
    "chmod",
    "curl http",  # 防止 SSRF
]

def check_dangerous(command):
    for op in dangerous_operations:
        if op in command:
            return require_human_approval(command)
    return execute(command)

3. 网络访问限制

# AI Agent 的网络访问应该被限制

允许的域名:
  - github.com
  - api.slack.com
  - 公司内部 API

不允许的:
  - 任意外部 API
  - 内网数据库
  - metadata 服务 (169.254.169.254)

数据安全

1. 敏感数据不进 Agent

# 不要把敏感数据放进 Agent 的 context
# API keys、密码、Token 应该通过安全通道传递

# 错误:
task = "帮我调用这个 API: https://api.example.com
Headers: Authorization: Bearer sk-xxxxx"

# 正确:
# API key 存在 secret manager
# Agent 只拿 token,不接触明文 key

2. 数据分类

AI Agent 能访问的数据:

绿色(无风险):
  - 公开代码
  - README
  - 文档

黄色(需审批):
  - 内部代码
  - 用户非敏感数据
  - 配置(无密钥)

红色(禁止):
  - 数据库密码
  - 用户敏感信息
  - 支付信息
  - 密钥/Token

3. 日志和审计

# 所有 Agent 操作必须记录
class SecureAgent:
    def execute(self, command, context):
        # 记录操作
        audit_log.info({
            "agent": self.name,
            "command": command,
            "context_hash": hash(context),  # 不记录具体内容
            "timestamp": now(),
            "user": current_user()
        })
        
        # 执行
        return self.run(command)

MCP Server 安全

MCP Server 权限隔离

# 每个 MCP Server 用不同的 token
mcp_servers:
  github_readonly:
    token: read_only_github_token
    permissions: [read]
  
  github_write:
    token: write_github_token
    permissions: [read, write]
  
  database:
    token: db_readonly_token
    permissions: [select]  # 只能 SELECT,不能 DDL/DML

MCP Server 最小暴露

# MCP Server 只暴露必要的工具
class SecureGitHubServer:
    # 只暴露安全的工具
    allowed_tools = [
        "get_file",      # ✅ 读文件
        "list_files",    # ✅ 列表
        "create_pr",     # ⚠️ 需要审批
    ]
    
    # 隐藏危险工具
    hidden_tools = [
        "delete_file",   # ❌
        "delete_repo",    # ❌
        "admin_api",     # ❌
    ]

生产环境检查清单

权限:
  □ Agent 没有管理员权限
  □ 危险操作需要审批
  □ 每个 MCP Server 用独立 token
  □ 数据库只能读,不能写

网络:
  □ 白名单域名
  □ 禁止访问 metadata
  □ SSRF 防护

数据:
  □ 敏感数据不进 context
  □ 数据分类标识
  □ 日志记录操作

审计:
  □ 所有操作可追溯
  □ 定期审计日志
  □ 异常操作告警

结论

AI Agent 安全不是可选项,是必选项。

能力越强,风险越大。生产环境部署 Agent 之前,把检查清单过一遍。

安全设计要从一开始就做,不是后期打补丁。