View a markdown version of this page

设置沙盒 - AWS DevOps 代理人

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

设置沙盒

沙盒是一项预览功能,它为 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 服务终端节点之外的所有出站请求。

  • 软件包-环境中预安装的pipnpm软件包。代理的代码可以导入它们,而无需在运行时获取它们。

注意

在预览期间,代理仅在调查期间使用沙箱。对聊天、自定义代理和其他 DevOps 代理功能的 Support 即将推出。

沙盒中的技能

启用沙盒后,代理会DevOps 特工技能从沙盒的文件系统而不是虚拟文件系统中读取您的内容。这通过两种方式改变了代理使用技能的方式:

  • 使用命令行工具搜索和读取 — 代理可以使用标准命令行工具搜索您的技能并读取其文件,而不必通过虚拟文件系统加载它们。这有助于它找到并应用适合任务的技能。

  • 运行捆绑代码-代理可以运行和改编与技能捆绑在一起的代码。如果没有沙盒,技能只能包含不可执行的文件,例如 Markdown 指令、参考文献和数据文件。使用沙盒,技能可以包含代理可以在环境中运行的可执行代码。

开始前的准备工作

默认情况下未配置沙箱,因此在您选择加入之前,代理无法运行代码。下图显示了配置之前的 “沙盒” 部分。

沙盒部分显示 “未配置沙箱”,其中包含空的 pip 包、npm 包和允许名单条目字段。

在配置沙盒之前,请确定以下几点:

  • 代理代码需要到达的主机、HTTP 方法和路径(如果有)。在添加许可名单条目之前,沙箱只能访问 AWS 服务端点。

  • 要在环境中预安装的pipnpm软件包。

为代理空间配置沙箱

  1. 登录 AWS 管理控制台并打开 AWS DevOps 代理控制台。

  2. 选择您的代理空间,然后选择 “功能” 选项卡。

  3. 在 “沙盒” 部分中,选择配置

  4. 按照以下各节所述配置网络策略和预安装的软件包。

  5. 保存您的配置。

配置沙盒后,沙盒部分会显示您的预安装pipnpm软件包以及允许名单条目的数量。要稍后删除配置,请参阅移除沙箱

配置网络策略

沙箱将出站请求限制在明确的允许名单范围内。空白名单会拒绝除 AWS 服务终端节点之外的所有出站请求。要让环境访问任何其他主机,请为其添加一个允许名单条目。

选择添加条目,然后为许可名单条目配置以下内容:

  • 主机模式-条目适用的主机。不支持部分标签匹配。使用以下表格之一:

    • **— 所有主机。

    • *.example.com— 一个子域级别。

    • **.example.com— 任何子域深度。

    • example.com— 确切的主持人。

  • HTTP 方法-此主机允许使用的 HTTP 方法。从下拉列表中选择一种或多种方法OPTIONS,例如GET和。

  • 路径模式-该主机允许的路径。选择添加路径以添加一个或多个模式:

    • *匹配一个区段,例如/repos/*/pulls

    • 允许部分匹配,例如/users/aws-*/

    • /**允许所有子路径。

    • 查询参数将被忽略。

下图显示了已完成的许可名单条目。

包含主机模式 *.github.com、GET 和 OPTIONS 方法以及路径模式 /** 的允许名单条目。

为代理代码需要到达的每台其他主机选择添加条目。要删除条目,请选择 “删除”。

配置预安装的软件包

在 “软件包” 部分,指定要在沙盒环境中预安装的pipnpm软件包。然后,代理的代码可以直接导入这些软件包,环境不需要出站访问软件包注册表即可使用它们。下图显示了配置了示例的 “软件包” 部分。

包部分包含 pip 包请求以及 pandas 和 npm 包 axios,每个都带有 “删除” 按钮。
  • 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 代理安全