AWS Bedrock知识库增细粒度访问控制 防多租户泄
时间:2026年11月12日
地点:亚马逊云科技官方博客
人物:亚马逊云科技(AWS)AI/ML团队
事件详情:亚马逊云科技(AWS)AI/ML博客发布文章《Fine-grained access control for Amazon Bedrock Managed Knowledge Base tools》,演示如何在共享AI智能体场景下为Amazon Bedrock Managed Knowledge Base实现细粒度访问控制,确保每个用户只能搜索其有权限查看的文档。文章通过一个名为AnyCompany的内部助手案例说明:当智能体代表用户搜索内部文档时,如果应用不限定搜索范围,部门B的商业计划可能出现在部门A员工的答案中。解决方案的核心原则是"不让LLM决定用户身份",而是让可信代码基于身份提供商的验证信息来决策。具体实现包含四层防御机制:在工具层(AgentCore Gateway),请求拦截器从已验证的JWT令牌中解析邮箱并覆盖userContext参数,防止LLM或客户端伪造;在资源层(Managed Knowledge Base),ACL感知功能根据userContext只返回用户有权限查看的文档;在策略层,Policy in AgentCore使用Cedar策略验证注入的userContext与JWT声明是否匹配;在资源策略层,基于资源的策略拒绝除网关执行角色外的所有检索请求。
背景:随着更多企业将AI智能体嵌入日常工作,一个常见模式是智能体搜索内部文档来组织答案。单个组织可能很快运行数百个智能体,每个连接到多个数据源和工具。当智能体代表用户搜索时,如何确保它只使用该用户被允许查看的信息,成为多租户环境下的关键安全问题。在传统应用中,应用代码确定已登录用户身份并以该用户权限搜索;但在智能体中,LLM在运行时决定调用哪个工具及传入什么参数,如果搜索工具接受"以谁身份搜索"作为参数,LLM也会决定这个值。
影响:该方案通过AWS CDK提供了可部署的示例架构,支持多租户场景和部门级访问控制。文章强调Managed Knowledge Base本身不认证最终用户,它信任接收到的userContext并基于此过滤结果,因此传递已验证的userContext是调用方的责任。当通过AgentCore Gateway将知识库暴露为MCP工具时,userContext变成工具参数,LLM可以构造其值,因此必须在网关层通过拦截器注入,在策略层验证,在资源层兜底。文章还指出,如果账户内有其他主体具有bedrock:Retrieve权限,应添加基于资源的策略来限制搜索来源。
总结:这篇博文为企业级共享AI智能体提供了一套可落地的细粒度访问控制方案。通过AgentCore Gateway的请求拦截器、Policy in AgentCore的Cedar策略、Managed Knowledge Base的ACL感知以及基于资源的策略四层防御,可以在不让LLM决定用户身份的前提下,实现多租户环境下的文档级访问隔离。示例代码已通过AWS CDK栈部署,并包含验证脚本可确认每个机制是否有效阻断对应攻击路径。
参考来源:
AWS AI/ML Blog
https://aws.amazon.com/cn/blogs/machine-learning/fine-grained-access-control-for-amazon-bedrock-managed-knowledge-base-tools/
AWS News Feed
https://aws-news.com/article/2026-11-12-fine-grained-access-control-for-amazon-bedrock-managed-knowledge-base-tools
AI导航
https://ai-tokens.cn/news/news-475ac78efec3f49a.html
AWS Documentation
https://docs.aws.amazon.com/bedrock/latest/userguide/kb-managed-ds-custom-acl.html
AWS Documentation
https://docs.aws.amazon.com/bedrock/latest/userguide/kb-osm-permissions-console-fgap.html
AWS Samples
https://github.com/aws-samples/amazon-bedrock-samples/blob/d481795702a043af8fcedfdf843b94ec20224675/rag/managed-knowledge-bases/04-security-and-access-controls/README.md







