先这样答
远程 MCP Server 要在连接层完成身份认证,再在 Server 端完成授权、审计和租户隔离。鉴权可以使用 token 或 OAuth,目标是确认连接方是谁,并让客户端身份可验证。认证通过只代表身份成立,不代表客户端可以调用所有能力。
授权必须按身份限制可用工具和资源。权限判定放在 Server 端,不能信任客户端自己声明的身份、角色或权限。Server 收到请求后,应根据已验证的身份判断它能否调用目标工具,或者访问目标资源。这样可以避免客户端绕过限制直接访问不该使用的能力。
审计要覆盖每次调用。记录至少包括调用身份、工具、参数和结果,便于追踪一次请求由谁发起、调用了什么、传入了什么以及返回了什么。租户隔离则要把数据和配额按租户分区。处理请求时要绑定当前租户,保证一个租户读不到另一个租户的缓存和数据,也不能使用另一个租户的配额。
面试官会怎么追问
-
「为什么不能直接相信客户端传来的权限信息?」
客户端传来的权限属于请求内容,不能证明它真实有效。Server 必须使用连接层验证得到的身份,在服务端独立判断可用工具和资源。这样客户端只能申请调用,不能自行决定授权结果。 -
「审计日志只记录调用成功或失败够不够?」
不够。每次调用都应记录身份、工具、参数和结果。只记录成功或失败,无法还原是谁调用了什么,也无法确认当时传入的参数和返回内容。 -
「租户隔离除了隔离数据,还需要隔离什么?」
还要按租户隔离配额。数据和配额都按租户分区,处理请求时使用对应租户的范围。这样一个租户既读不到另一个租户的缓存与数据,也不能占用另一个租户的配额。
回答的坑
- 通过 token 或 OAuth 只能完成身份认证,不能因此默认放行所有工具和资源。
- 只隔离主数据而不隔离缓存或配额,仍然不能算完成租户隔离。
同系列的题