在多租户环境中使用代理实现租户隔离 机器学习博客
  • 11

使用 Amazon Bedrock 在多租户环境中实现租户隔离

关键要点集中管理不同租户的访问权限是多租户应用程序中的一个重要挑战。租户隔离确保每个租户只能访问自己的资源,即使它们在共享基础设施上运行。本文介绍了如何使用 Amazon Bedrock 代理实现租户隔离,以构建安全、个性化的 AI 助手。

在不断增长的生成性人工智能AI功能中,Amazon Bedrock 提供了一种统一的 API 访问多个基础模型FMs这些模型可以维护安全性、隐私和负责任的 AI 使用。本篇文章演示了如何通过样例多租户电子商务应用,利用 Amazon Bedrock 代理实现租户隔离。

快橙加速器官方版

架构概述

图 1 样例 AI 助手应用的架构图

在多租户环境中使用代理实现租户隔离 机器学习博客

组件介绍

租户用户通过身份提供者如 Amazon Cognito进行登录并获取 JSON Web Token (JWT) 以进行 API 请求。租户用户通过客户端应用输入问题,发送至 AWS AppSync 的 GraphQL API 端点。GraphQL 变更请求调用 EventBridge 解析器,触发 AWS Lambda 函数。Lambda 函数调用 Amazon Bedrock InvokeAgent API,使用租户隔离策略生成专用凭证。Amazon Bedrock 代理依据生成的凭证和上下文处理用户请求。Lambda 函数利用租户特定的凭证从 Amazon DynamoDB 检索信息。代理将响应通过 AWS AppSync 的 GraphQL 变更发布。客户端利用 GraphQL 订阅接收响应。

这一架构确保租户隔离和安全,同时为每个租户及其用户提供个性化体验。

租户与用户数据的隔离

本文描述了在用户请求处理过程中如何隔离用户与租户数据。每个组件的作用详解如下:

生成唯一 ID 对于每个提示,生成唯一的 answerId,以跟踪用户的请求和响应关系。

使用 AWS Amplify SDK 前端使用 AWS Amplify SDK 处理 GraphQL 请求的认证。

确保权限隔离 收到的请求和响应通过订阅相互关联,确保用户无法访问其他用户的数据。

IAM 策略实现租户隔离 Lambda 函数获取用户信息,并通过针对租户的 IAM 策略生成唯一凭证。

通过 InvokeAgent API 传递身份信息 将用户 ID、租户 ID 和凭证信息传输给 Amazon Bedrock 代理。

执行数据库操作 使用租户特定凭证创建 DynamoDB 客户端,以对特定租户的表进行查询。

实施步骤

先决条件

具有管理员权限的 AWS 账户。安装并配置 AWS Cloud Development Kit (CDK)。安装 git。

启用大型语言模型

首先需要为代理启用大型语言模型LLM,以增强用户请求的处理能力。按照 Amazon Bedrock 模型访问文档 操作。

部署示例应用

通过 AWS CDK 部署示例应用的基础架构。执行命令以克隆项目并部署 CDK 项目:

git clone https//githubcom/awssamples/multitenantaiassistantcd multitenantaiassistant/cdknpm installcdk deploy cd

启动前端并登录

将前端应用启动并访问 localhost3000,按照说明输入租户用户信息并登录。

与代理交互

一旦成功登录,现在可以与代理进行互动,输入不同的问题以验证租户安全性和数据隔离。

添加测试数据

使用准备好的 bash 脚本向数据库中添加订单并进行测试。

清理资源

为避免额外费用,运行以下命令删除创建的资源:

cdk destroy

结论

实现安全的多租户 AI 助手是保护数据隐私和防止未授权访问的重要任务。本文介绍的方法可以确保生成智能应用在维护数据隔离的同时,提供个性化体验。

作者简介

Ulrich Hinze 是 AWS 的解决方案架构师,擅长帮助软件公司在 AWS 上架构和实现云解决方案。

Florian Mair 是 AWS 的高级解决方案架构师,专注于数据流处理,帮助客户利用 AWS 云服务应对业务挑战。

如需进一步了解 AWS 上的生成 AI 模式,访问 AWS 机器学习博客。