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

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

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

实例元数据是有关 Amazon Elastic Compute Cloud (Amazon EC2) 实例的数据,可供应用程序用来配置或管理正在运行的实例。实例元数据服务(IMDS)是实例上的组件,在实例上进行编码,用于安全访问实例元数据。此代码可以是环境实例上的 Elastic Beanstalk 平台代码、应用程序可能正在使用的 Amazon SDK,甚至是应用程序自己的代码。有关更多信息,请参阅适用于 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 方法时,请考虑以下使用案例:

  • Amazon SDK – 如果您的应用程序使用 Amazon SDK,请确保使用最新版本的 SDK。Amazon 开发工具包发出 IMDS 调用,而较新版本的开发工具包尽可能使用 IMDSv2。如果您禁用了 IMDSv1,或如果您的应用程序使用较早的 SDK 版本,则 IMDS 调用可能会失败。

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

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

使用 Elastic Beanstalk 控制台配置 IMDS

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

使用 Elastic Beanstalk 控制台在 Amazon EC2 实例上配置 IMDS
  1. 打开 Elastic Beanstalk 控制台,然后在 Regions(区域)列表中选择您的 Amazon Web Services 区域。

  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