在环境实例上配置实例元数据服务 - AWS Elastic Beanstalk
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

在环境实例上配置实例元数据服务

实例元数据 是有关 Amazon Elastic Compute Cloud (Amazon EC2) 实例的数据,可供应用程序用来配置或管理正在运行的实例。实例元数据服务 (IMDS) 是实例上的组件,在实例上进行编码,用于安全访问实例元数据。此代码可以是环境实例上的 Elastic Beanstalk 平台代码,应用程序可能正在使用的 AWS 开发工具包,甚至是应用程序自己的代码。有关更多信息,请参阅适用于 Linux 的 Amazon EC2 用户指南 中的实例元数据和用户数据

代码可以使用以下两种方法之一从正在运行的实例访问实例元数据:实例元数据服务版本 1 (IMDSv1) 或实例元数据服务版本 2 (IMDSv2)。IMDSv2 使用面向会话的请求,并防范了多种类型的漏洞,这些漏洞可用于尝试访问 IMDS。有关这两种方法的详细信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南 中的配置实例元数据服务

IMDS 平台支持

较早的 Elastic Beanstalk 平台版本支持 IMDSv1。较新的 Elastic Beanstalk 平台版本(所有 Amazon Linux 2 平台版本)支持 IMDSv1 和 IMDSv2。您可以将环境配置为支持这两种方法(默认)或禁用 IMDSv1。

注意

禁用 IMDSv1 需要使用 Amazon EC2 启动模板。在创建或更新环境过程中配置此功能时,Elastic Beanstalk 尝试将环境配置为使用 Amazon EC2 启动模板(如果环境尚未使用启动模板)。在这种情况下,如果您的用户策略缺乏必要的权限,则创建或更新环境可能会失败。因此,我们建议您使用托管用户策略,或者将所需的权限添加到自定义策略中。有关所需权限的详细信息,请参阅创建自定义用户策略

选择 IMDS 方法

在确定希望环境支持的 IMDS 方法时,请考虑以下情况:

  • AWS 开发工具包 - 如果您的应用程序为任何语言使用 AWS 开发工具包,请确保您使用的是开发工具包的最新版本。AWS 开发工具包发出 IMDS 调用,而较新版本的开发工具包尽可能使用 IMDSv2。如果您禁用了 IMDSv1,并且应用程序使用较早的开发工具包版本,则 IMDS 调用可能会失败。

  • 您的应用程序代码 - 如果您的应用程序发出 IMDS 调用,请考虑使用 AWS 开发工具包进行调用,而不是发出直接 HTTP 请求。通过这种方式,您无需进行代码更改即可在 IMDS 方法之间切换。AWS 开发工具包尽可能使用 IMDSv2。

  • Elastic Beanstalk 平台代码 - 我们的代码通过 AWS 开发工具包发出 IMDS 调用,因此在所有支持的平台版本上使用 IMDSv2。如果您的代码使用最新的 AWS 开发工具包并通过开发工具包进行所有 IMDS 调用,则可以安全地禁用 IMDSv1。

使用 Elastic Beanstalk 控制台配置 IMDS

您可以在 Elastic Beanstalk 控制台中修改 Elastic Beanstalk 环境的 Amazon EC2 实例配置。

使用 Elastic Beanstalk 控制台在 Amazon EC2 实例上配置 IMDS

  1. 打开 Elastic Beanstalk 控制台,然后在 Regions (区域) 列表中选择您的 AWS 区域。

  2. 在导航窗格中,选择 Environments (环境),然后从列表中选择环境的名称。

    注意

    如果您有多个环境,请使用搜索栏筛选环境列表。

  3. 在导航窗格中,选择 Configuration (配置)

  4. Instances (实例) 配置类别中,选择 Edit (编辑)

    
            Elastic Beanstalk 实例配置窗口中的 IMDS 选项
  5. 设置 Disable IMDSv1 (禁用 IMDSv1) 以强制实施 IMDSv2。清除 Disable IMDSv1 (禁用 IMDSv1) 可同时启用 IMDSv1 和 IMDSv2。

  6. 选择 Apply

aws:autoscaling:launchconfiguration 命名空间

您可以使用 aws:autoscaling:launchconfiguration 命名空间中的配置选项在环境实例上配置 IMDS。

以下配置文件示例使用 DisableIMDSv1 选项禁用 IMDSv1。

option_settings: aws:autoscaling:launchconfiguration: DisableIMDSv1: true