本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
设置沙盒
沙盒是一项预览功能,它为 AWS DevOps Agent 提供了一个安全、隔离的 Linux 环境,它可以在调查期间编写和运行代码。与仅通过推理相比,用代码解决某些问题更快、更可靠。在沙盒中,代理通过计算来补充其推理,例如,分析大型日志文件,计算一组指标的统计数据,或者在调查期间解析和关联来自多个来源的数据。
每个沙箱都是短暂的,仅限于一次调查,因此代理运行的代码与您的其他资源保持隔离。您可以控制环境的出站网络访问权限和预安装的软件包。默认情况下,沙箱限制出站网络访问:在将条目添加到网络许可名单之前,它只能 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 代理功能的 Support 即将推出。
沙盒中的技能
启用沙盒后,代理会DevOps 特工技能从沙盒的文件系统而不是虚拟文件系统中读取您的内容。这通过两种方式改变了代理使用技能的方式:
使用命令行工具搜索和读取 — 代理可以使用标准命令行工具搜索您的技能并读取其文件,而不必通过虚拟文件系统加载它们。这有助于它找到并应用适合任务的技能。
运行捆绑代码-代理可以运行和改编与技能捆绑在一起的代码。如果没有沙盒,技能只能包含不可执行的文件,例如 Markdown 指令、参考文献和数据文件。使用沙盒,技能可以包含代理可以在环境中运行的可执行代码。
开始前的准备工作
默认情况下未配置沙箱,因此在您选择加入之前,代理无法运行代码。下图显示了配置之前的 “沙盒” 部分。
在配置沙盒之前,请确定以下几点:
代理代码需要到达的主机、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 pac kages — 选择 “添加软件包”,然后为每个要预安装的软件包输入 Node.js 软件包名称
axios,例如。
要移除包裹,请选择其旁边的 “删除”。
移除沙箱
要选择退出,请移除沙盒配置:选择您的代理空间,前往 “功能” 选项卡,然后在 “沙盒” 部分中选择 “移除”。删除配置后,代理不再为新的调查配置沙箱环境。
沙盒配置限制
在预览期间,以下限制适用于每个沙盒配置。
| 限制 | 值 |
|---|---|
| pip 软件包 | 50 |
| npm 软件包 | 50 |
| 网络许可名单条目 | 100 |
| 每个许可名单条目的路径模式 | 50 |
| 每个许可名单条目的 HTTP 方法数 | 至少 1 |
安全注意事项
AWS DevOps 代理将每项调查隔离在自己的沙盒环境中,因此一项调查的代码和数据永远不会与其他调查共享。 AWS DevOps 代理会检查和筛选所有离开沙箱的流量,以便只有安全、允许的请求才能到达目的地。它允许向 AWS 服务端点和与您的网络许可名单匹配的主机发出的请求,并拒绝所有其他请求。
代理在沙箱中生成和运行代码。配置时请记住以下几点:
尽量减少许可名单。如果许可名单为空,则沙箱只能访问 AWS 服务端点。仅为代理所需的特定主机、方法和路径添加许可名单条目。
缩小许可名单条目的范围。使用精确的主机模式和特定的路径模式,而不是宽泛的通配符,例如
**和/**,并且仅授予所需的 HTTP 方法。Pre-install 软件包而不是许可名单注册表。在预安装代理所需的软件包时,可以避免在运行时授予对软件包注册表的出站访问权限。
有关 AWS DevOps 代理安全模型的更多信息,请参阅AWS DevOps 代理安全。