使用 AWS PrivateLink 设置对 Amazon Bedrock 的私有访问 机器学习博客

使用 AWS PrivateLink 建立对 Amazon Bedrock 的私有访问

主要要点

在这篇文章中,我们将探讨如何利用 AWS PrivateLink 将 Amazon Bedrock 服务安全地连接到您的 VPC 中,以便开发者能够使用自己的数据构建生成式 AI 应用。这一过程将避免将敏感数据暴露在公网上,并确保您的数据安全。

Amazon Bedrock 是 AWS 提供的完全管理服务,为开发者提供访问 基础模型FMs及自订这些模型的工具。开发者无需管理基础设施即可通过 API 构建和扩展 生成式 AI 应用。您可以从 Amazon 和其他顶尖 AI 新创公司如 AI21 Labs、Anthropic、Cohere 和 Stability AI中选择不同的 FMs,以找到最符合您的需求的模型。通过 Amazon Bedrock 的伺服器无需管理的体验,您可以快速入门,轻松实验 FMs,并使用 AWS 工具和功能将它们私有化、整合并部署到您的应用中。

许多客户正在使用 Amazon Bedrock APIs 和自己的专有数据构建创新的生成式 AI 应用程序。在访问 Amazon Bedrock APIs 时,客户希望设置数据周边,而不将数据暴露于公网,以减少潜在的安全威胁。由 AWS PrivateLink 提供支持的 Amazon Bedrock VPC 端点,可以让您在 AWS 帐户的 VPC 与 Amazon Bedrock 服务帐户之间建立私有连接,使 VPC 实例能够与服务资源进行通讯,而无需公共 IP 地址。

在本文中,我们将演示如何在 AWS 帐户上设置私有访问,以便通过 PrivateLink 驱动的 VPC 端点 访问 Amazon Bedrock APIs,帮助您安全地使用自己的数据构建生成式 AI 应用。

解决方案概述

生成式 AI 可以用来开发各种应用程序,如文本摘要、内容管理等。在使用基础模型或基模型构建这类生成式 AI 应用时,客户希望能在不经公网的情况下,根据其可能储存在企业数据库中的专有数据生成响应。

以下图示显示了如何设置基础设施以读取储存在 Amazon RDS 中的专有数据,并在 Amazon Bedrock API 请求中增强产品资讯,当回答生成式 AI 应用的产品相关查询时。尽管我们在该图中使用 Amazon RDS 来说明,您仍然可以通过本文中的说明,端到端地测试 Amazon Bedrock APIs 的私有访问。

工作流程步骤如下:

在您的私有 VPC 子网中运行的 AWS Lambda 接收来自生成式 AI 应用的请求。Lambda 呼叫专有的 RDS 数据库,增强请求上下文例如,添加产品资讯,并调用增强的 Amazon Bedrock API。API 请求被路由到关联到 VPC 端点策略的 Amazon Bedrock VPC 端点,该策略允许访问 Amazon Bedrock APIs。Amazon Bedrock 服务 API 端点通过 PrivateLink 接收 API 请求,而不经过公网。您可以更改 Amazon Bedrock VPC 端点策略为拒绝权限,以验证对 Amazon Bedrock APIs 的调用被拒绝。您还可以通过 AWS Direct Connect 检测 VPC 端点私有访问 Amazon Bedrock APIs。

先决条件

在您开始之前,请确保您拥有以下先决条件:

一个 AWS 帐户一个具有 IAM 权限的 AWS Identity and Access ManagementIAM联邦角色,具备以下访问权限:创建、编辑、查看和删除 VPC 网络资源创建、编辑、查看和删除 Lambda 函数创建、编辑、查看和删除 IAM 角色及政策列出基础模型并调用 Amazon Bedrock 基础模型本文中使用 useast1 区域通过 Amazon Bedrock 控制台请求 基础模型访问权限

设置私有访问基础设施

在本节中,我们将使用 AWS CloudFormation 模板设置基础设施,如 VPC、私有子网、安全组和 Lambda 函数。

使用以下 模板 在您的 AWS 帐户中创建基础设施堆栈 BedrockGenAIStack。

CloudFormation 模板将为您创建以下资源:

一个 VPC,包含两个位于不同可用区的私有子网安全组和路由表用于 Lambda、Amazon Bedrock 和 Amazon Elastic Compute CloudAmazon EC2的 IAM 角色和政策

设置 Amazon Bedrock 的 VPC 端点

在本节中,我们将使用 Amazon Virtual Private CloudAmazon VPC设置 Amazon Bedrock 的 VPC 端点,以便从您的 VPC 进行私有连接。

在 Amazon VPC 控制台中,于导航面板下的 Virtual private cloud 选择 Endpoints。选择 Create endpoint。

在 Name tag 中输入 bedrockvpce。在 Services 中,搜索 bedrockruntime 并选择 comamazonawsltregiongtbedrockruntime。在 VPC 中,指定您在前面章节中通过 CloudFormation 堆栈创建的 VPC BedrockGenAIProjectvpc。

在 Subnets 部分,从下拉菜单中选择可用区及对应的子网 ID。

在 Security groups 中,选择名称为 BedrockGenAIStackVPCEndpointSecurityGroup 并描述为 Allow TLS for VPC Endpoint 的安全组。

安全组作为您的实例的虚拟防火墙,用以控制入站和出站流量。请注意,此 VPC 端点安全组仅允许来自附加至您的 VPC 私有子网的安全组的流量,增加了一层保护。

选择 Create endpoint。在 Policy 部分,选择 Custom 并输入以下最低权限策略,以确保仅允许在指定的基础模型资源 arnawsbedrockfoundationmodel/anthropicclaudeinstantv1 上执行某些操作:

json { Version 20121017 Statement [ { Action [ bedrockInvokeModel ] Resource [ arnawsbedrockfoundationmodel/anthropicclaudeinstantv1 ] Effect Allow Principal { AWS arnawsiamltaccountidgtrole/GenAIStackBedrock } } ] }

端点的建立可能需要最多 2 分钟,状态会变更为可用。您可以刷新页面检查最新状态。

在私有 VPC 子网上设置 Lambda 函数

请按照以下步骤配置 Lambda 函数:

在 Lambda 控制台中,于导航面板中选择 Functions。选择函数 genailambdastackBedrockTestLambdaFunctionXXXXXXXXXXXX。

在 Configuration 标签中,于左侧面板选择 Permissions。在 Execution role 下,选择 genailambdastackBedrockTestLambdaFunctionRoleXXXXXXXXXXXX 的链接。

这样您将转至 IAM 控制台。

在 Permissions policies 部分,选择 Add permissions,然后选择 Create inline policy。

在 JSON 标签中,修改策略如下:

json { Version 20121017 Statement [ { Sid eniperms Effect Allow Action [ ec2CreateNetworkInterface ec2DescribeNetworkInterfaces ec2DeleteNetworkInterface ec2VpcEndpoint ] Resource } ] }

选择 Next。在 Policy name 中,输入 enivpcepolicy。选择 Create policy。

添加以下内嵌政策提供您的源 VPC 端点,以限制 Lambda 仅透过 VPC 端点访问 Amazon Bedrock APIs:

json { Id lambdabedrocksourcevpceaccessonly Version 20121017 Statement [ { Effect Allow Action [ bedrockListFoundationModels bedrockInvokeModel ] Resource Condition { ForAnyValueStringEquals { awssourceVpce [ vpceltbedrockruntimevpcegt ] } } } ] }

在 Lambda 函数页面,于 Configuration 标签中,选择左侧的 VPC,然后选择 Edit。

在 VPC 中,选择 BedrockGenAIProjectvpc。在 Subnets 中,选择私有子网。

在 Security groups 中,选择 genailambdastackSecurityGroup私有子网中 Amazon Bedrock 工作负载的安全组。选择 Save。

测试私有访问控制

现在,您可以测试私有访问控制Amazon Bedrock APIs 的 VPC 端点访问。

在 Lambda 控制台中,于导航面板选择 Functions。选择函数 genailambdastackBedrockTestLambdaFunctionXXXXXXXXXXXX。在 Code 标签中,选择 Test。

您应该会看到来自 Amazon Bedrock API 调用的以下响应状态:成功。

飞兔加速器官网ios

若要拒绝通过 VPC 端点访问 Amazon Bedrock APIs,请导航至 Amazon VPC 控制台。在导航面板的 Virtual private cloud 下,选择 Endpoints。选择您的政策并导航至 Policy tab。

目前,VPC 端点政策设置为 Allow。

使用 AWS PrivateLink 设置对 Amazon Bedrock 的私有访问 机器学习博客若要拒绝访问,请选择 Edit Policy。

将 Allow 更改为 Deny 并选择 Save。

政策更新可能需要最多 2 分钟。

json{ Version 20121017 Statement [ { Action [ bedrockInvokeModel ] Resource [ arnawsbedrockfoundationmodel/anthropicclaudeinstantv1 ] Effect Deny Principal { AWS arnawsiamltaccountidgtrole/GenAIStackBedrock } } ]}

返回 Lambda 函数页面,在 Code 标签中选择 Test。

如以下截图所示,通过 VPC 端点对 Amazon Bedrock 的访问请求被拒绝状态:失败。

![访问拒绝](https//d2908q01vomqb2cloudfront