本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
设置沙盒
Sandbox 是一项预览功能,它为 AWS DevOps Agent 提供了一个安全、隔离的 Linux 环境,它可以在调查期间编写和运行代码。与仅通过推理相比,使用代码解决某些问题更快、更可靠。借助 Sandbox,代理通过计算来补充其推理——例如,分析大型日志文件、计算一组指标的统计数据,或者在调查期间解析和关联来自多个来源的数据。
每个沙箱都是短暂的,仅限于一次调查,因此代理运行的代码与其他资源保持隔离。您可以控制环境的出站网络访问权限和预安装的软件包。默认情况下,沙箱限制出站网络访问:在您向网络许可列表中添加条目之前,它只能 AWS 访问服务端点。
注意
沙盒现已提供预览版,可能会发生变化。
在预览期间,沙盒仅在以下 AWS 区域可用:
美国东部(弗吉尼亚北部)
us-east-1美国西部(俄勒冈州)
us-west-2亚太地区(东京)
ap-northeast-1欧洲(爱尔兰)
eu-west-1
有关更多信息,请参阅按区域划分的功能可用性。
沙盒的工作原理
为代理空间配置沙盒后, AWS DevOps 代理在进行调查时会自动预置一个新的 Linux 环境。在此环境中,代理可以运行 shell 命令并读取和写入文件,然后将结果读回分析中。环境仅在调查期间持续下去,没有两项调查共享。
该环境为连接到您的代理空间的 AWS 帐户提供了预先 AWS 配置的配置文件。代理可以使用这些配置文件对这些账户进行 AWS CLI 和 boto3(AWS 适用于 Python 的 SDK)调用,其范围与代理已有的权限相同。这使代理可以在调查期间以编程方式查询 AWS 资源并将资源与代码关联起来。
代理还可以使用命令行工具或 Python 和 Node.js 库从沙箱向您的网络策略允许的任何主机和路径发出 HTTP 请求。
两个设置控制环境可以做什么:
网络策略 — 明确的主机、HTTP 方法和环境可能到达的路径的许可名单。空白的允许列表拒绝除 AWS 服务终端节点之外的所有出站请求。
软件包 -环境中预安装的
pip和npm软件包。代理的代码可以导入它们,而无需在运行时提取它们。
注意
在预览期间,代理仅在调查期间使用沙盒。对聊天、自定义代理和其他 DevOps 代理功能的支持即将推出。
沙盒环境隔离
AWS DevOps 代理在隔离的 Lambda 微虚拟机中运行每个沙箱。每个 microVM 仅限于一项调查,并在调查结束时被丢弃。当代理从沙箱发出 AWS CLI 或 SDK 调用时,它会通过代理路由这些调用。该代理将调用限制为只读操作,因此沙盒代码无法修改或删除您的 AWS 资源。
沙盒中的技能
启用沙盒后,代理会DevOps 代理技能从沙箱的文件系统读取您的数据,而不是从虚拟文件系统读取数据。这以两种方式改变了代理使用技能的方式:
使用命令行工具进行搜索和读取 — 代理可以使用标准命令行工具搜索您的技能并读取他们的文件,而不是通过虚拟文件系统加载它们。这有助于它为任务找到并应用正确的技能。
运行捆绑代码 -代理可以运行和改编与技能捆绑在一起的代码。如果没有 Sandbox,技能只能包含不可执行的文件,例如 Markdown 指令、参考和数据文件。使用 Sandbox,技能可以包括代理可以在环境中运行的可执行代码。
开始前的准备工作
默认情况下未配置沙盒,因此除非您选择加入,否则代理无法运行代码。下图显示了配置之前的沙盒部分。
在配置沙盒之前,请确定以下几点:
代理代码需要到达的主机、HTTP 方法和路径(如果有)。在您添加许可名单条目之前,沙箱只能访问 AWS 服务端点。
您要在环境中预安装的
pip和npm软件包。
为代理空间配置沙盒
登录 AWS 管理控制台并打开 AWS DevOps 代理控制台。
选择您的代理空间并选择 “功能” 选项卡。
在沙盒部分中,选择配置。
按照以下部分所述配置网络策略和预安装的软件包。
保存您的配置。
配置沙盒后,沙盒部分会显示您的预安装pip和npm软件包以及许可名单条目的数量。要稍后删除配置,请参阅移除沙盒。
配置网络策略
沙箱将出站请求限制在明确的允许名单内。空白的允许列表拒绝除 AWS 服务终端节点之外的所有出站请求。要让环境到达任何其他主机,请为其添加允许列表条目。
选择添加条目,然后为许可名单条目配置以下内容:
主机模式 -条目适用的主机。不支持部分标签匹配。使用以下形式之一:
**— 所有主机。*.example.com— 一个子域级别。**.example.com— 任何子域深度。example.com— 精确的主机。
HTTP 方法 -允许该主机使用的 HTTP 方法。从下拉列表中选择一种或多种方法
OPTIONS,例如GET和。路径模式 -此主机允许的路径。选择 “添加路径” 以添加一个或多个模式:
*匹配一个区段,例如/repos/*/pulls。允许部分匹配,例如
/users/aws-*/。/**允许所有子路径。查询参数被忽略。
下图显示了已完成的许可名单条目。
为代理代码需要到达的每增加一台主机选择 “添加条目”。要删除条目,请选择 “移除” 。
配置预安装的软件包
在 “软件包” 部分中,指定要在沙盒环境中预安装的pip和npm软件包。然后,代理的代码可以直接导入这些包,环境不需要出站访问程序包注册表即可使用它们。下图显示了配置了示例包的 “软件包” 部分。
pip 软件包 -选择 “添加软件包”,然后为要预安装的每个 Python 包输入软件包名称
pandas,例如requests或。npm packages — 选择 “添加软件包”,然后为每个要预安装的软件包输入 Node.js 软件包名称
axios,例如。
要移除软件包,请选择其旁边的 “移除”。
移除沙盒
要选择退出,请移除沙盒配置:选择您的代理空间,转至 “功能” 选项卡,然后在 “沙盒” 部分中选择 “删除”。删除配置后,代理不再为新的调查预置沙盒环境。
沙盒配置限制
以下限制适用于预览期间的每种沙盒配置。
| 限制 | 值 |
|---|---|
| pip 软件包 | 50 |
| npm 软件包 | 50 |
| 网络许可名单条目 | 100 |
| 每个许可名单条目的路径模式 | 50 |
| 每个许可名单条目的 HTTP 方法 | 至少 1 |
安全注意事项
AWS DevOps 代理将每项调查隔离在自己的沙箱环境中,因此一项调查的代码和数据永远不会与另一项调查共享。 AWS DevOps 代理检查并过滤所有离开沙箱的流量,这样只有安全、允许的请求才能到达目的地。它允许向 AWS 服务终端节点和与您的网络许可名单匹配的主机发出的请求,并拒绝所有其他请求。
该代理在沙箱中生成和运行代码。配置时请记住以下几点:
尽量减少许可名单。允许清单为空时,沙箱只能到达 AWS 服务端点。仅为代理所需的特定主机、方法和路径添加许可名单条目。
限制允许名单条目的范围。使用精确的主机模式和特定的路径模式,而不是宽泛的通配符,例如
**和/**,并且仅授予所需的 HTTP 方法。Pre-install 包而不是允许列入注册表名单。预安装代理所需的软件包时,可以避免在运行时授予对软件包注册表的出站访问权限。
有关 AWS DevOps 代理安全模型的更多信息,请参阅AWS DevOps 代理安全。