亚马逊AWS官方博客

Amazon EC2 将默认使用实例元数据服务 IMDSv2

自 2024 年年中开始,新发布的 Amazon EC2 实例类型将仅使用 EC2 实例元数据服务版本 2(IMDSv2)。我们还采取了一系列措施,使 IMDSv2 成为AWS 管理控制台快速入门和其他启动路径的默认选择。

背景
该服务可通过固定 IP 地址(通过 IPv4 地址 169.254.169.254 或在 Nitro 实例上通过 IPv6 地址 fd00:ec2::254)从 EC2 实例中访问。借助该服务,您(或在实例上运行的代码)将可以访问丰富的静态和动态数据,包括用于启动实例的 AMI ID、块设备映射、附加到实例的角色的临时 IAM 凭证、网络接口信息、用户数据等等,详见实例元数据类别

该服务的版本 1 使用请求/响应的访问方法,而版本 2 则使用本文所述的面向会话的方法。这两个版本都是非常安全的,不过版本 2 针对可用于尝试访问 IMDS 的四种漏洞提供了额外的保护。

许多应用程序和实例已经在使用并受益于 IMDSv2,但要全面发挥新版本的优势,必须在 AWS 账户级别禁用 IMDSv1。

迁移计划
以下是我们为此我们已经采取和计划采取的重要举措,以使 IMDSv2 成为新 AWS 基础设施的默认选择(在 2023 年和 2024 年留出了一定的回旋余地):

2019 年 11 月 – 我们推出了 IMDSv2,并详细向大家展示了如何使用该服务来加强防御。

2020 年 2 月 – 我们开始验证 AWS Marketplace 卖家和 AWS 合作伙伴新发布的产品是否都支持 IMDSv2。

2023 年 3 月 – 我们推出了Amazon Linux 2023,该实例将启动时全面默认使用 IMDSv2。

2023 年 9 月 – 我们发表了博客文章 Get the full benefits of IMDSv2 and disable IMDSv1 across your AWS infrastructure,向大家介绍了如何全面发挥 IMDSv2 的优势并在 AWS 基础设施中禁用 IMDSv1。

2023 年 11 月 – 即日起,所有控制台快速入门在启动时都将仅使用 IMDSv2(所有亚马逊和合作伙伴快速入门 AMI 都支持此功能)。下图说明了启动实例时如何在 EC2 控制台的高级详细信息中指定此选项:

2024 年 2 月 – 我们计划推出一个新的 API 函数,以方便您进行控制,将 IMDSv1 作为账户级别的默认设置。在此之前,您已经可以通过 IAM policy 来控制对 IMDSv1 的使用(剥夺和限制现有的权限),也可以将其作为在账户级别、组织部门(OU)级别或整个组织级别全局应用的 SCP 来进行控制。有关 IAM policy 的示例,请参阅使用实例元数据

2024 年年中 – 默认情况下,新启动的Amazon EC2 实例类型将仅使用 IMDSv2。在过渡期间,您仍然可以在实例启动时或启动后启用/打开 IMDSv1,而无需重启或停止/启动实例。

操作建议
现在即可参考 Get the full benefits.. 博客文章,开始准备从 IMDSv1 迁移到 IMDSv2 了。此外还需要熟悉帮助转换为 IMDSv2 的工具,以及该页面上的推荐路径。除推荐了实用的工具外,该页面还演示了如何设置 IAM policy 以禁用 IMDSv1,并演示了如何使用 MetadataNoToken CloudWatch 指标来检测任何剩余使用情况:

AWS re:Post 上也有一个非常实用的资源:我该怎样使用 Systems Manager 自动化来强制实施仅使用 IMDSv2 访问来自我的 Amazon EC2 实例的实例元数据?

祝愿您和您的客户尽可能顺利地完成过渡。如果您需要任何其他帮助,请联系 AWS Support

Jeff