在 Elastic Beanstalk 环境的实例上配置 IMDS - AWS Elastic Beanstalk

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

在 Elastic Beanstalk 环境的实例上配置 IMDS

本主题介绍实例元数据服务(IMDS)。

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

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

IMDS 平台支持

在 Amazon Linux 2 和 Amazon Linux 2023 以及 Windows Server 上运行的 Elastic Beanstalk 平台均支持 IMDSv1 和 IMDSv2。有关更多信息,请参阅 使用 Elastic Beanstalk 控制台配置 IMDS

选择 IMDS 方法

在确定希望环境支持的 IMDS 方法时,请考虑以下使用案例:

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

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

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

使用 Elastic Beanstalk 控制台配置 IMDS

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

重要

DisableIMDSv1 选项设置可能导致 Elastic Beanstalk 使用启动模板创建环境或将现有环境从启动配置更新为启动模板。有关更多信息,请参阅 启动模板

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

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

    注意

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

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

  4. Instance traffic and scaling(实例流量和扩展)配置类别中,选择 Edit(编辑)。

  5. 设置 Disable IMDSv1(禁用 IMDSv1)以强制实施 IMDSv2。清除 Disable IMDSv1(禁用 IMDSv1)可同时启用 IMDSv1 和 IMDSv2。

  6. 要保存更改,请选择页面底部的 Apply(应用)。

aws:autoscaling:launchconfiguration 命名空间

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

重要

DisableIMDSv1 选项设置可能导致 Elastic Beanstalk 使用启动模板创建环境或将现有环境从启动配置更新为启动模板。有关更多信息,请参阅 启动模板

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

option_settings: aws:autoscaling:launchconfiguration: DisableIMDSv1: true

DisableIMDSv1 设置为 true 以禁用 IMDSv1 并强制执行 IMDSv2。

DisableIMDSv1 设置为 false 以同时启用 IMDSv1 和 IMDSv2。