View a markdown version of this page

设置沙盒 - AWS DevOps 代理人

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

设置沙盒

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 服务终端节点之外的所有出站请求。

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

注意

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

沙盒环境隔离

AWS DevOps 代理在隔离的 Lambda 微虚拟机中运行每个沙箱。每个 microVM 仅限于一项调查,并在调查结束时被丢弃。当代理从沙箱发出 AWS CLI 或 SDK 调用时,它会通过代理路由这些调用。该代理将调用限制为只读操作,因此沙盒代码无法修改或删除您的 AWS 资源。

沙盒中的技能

启用沙盒后,代理会DevOps 代理技能从沙箱的文件系统读取您的数据,而不是从虚拟文件系统读取数据。这以两种方式改变了代理使用技能的方式:

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

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

开始前的准备工作

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

沙盒部分显示 “未配置沙箱”,其中包含空的 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 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 代理安全