我们使用机器学习技术将英文博客翻译为简体中文。您可以点击导航栏中的“中文(简体)”切换到英文版本。
获得 IMDSv2 的全部好处,在您的 亚马逊云科技 基础设施中禁用 IMDSv1
- IMDSv2 需要在简单的 HTTP PUT 请求中创建秘密令牌才能启动会话,该令牌必须用于检索 IMDSv2 调用中的信息。
- 在后续的 IMDSv2 请求中必须将 IMDSv2 会话令牌用作标头,以便从 IMDS 检索信息。与静态令牌或固定标头不同,当使用令牌的进程终止时,会话及其令牌将被销毁。IMDSv2 会话最多可以持续六个小时。
- 会话令牌只能直接从该会话开始的 EC2 实例中使用。
- 您可以在每次请求中重复使用令牌或创建新令牌。
- 如果会话令牌 PUT 请求包含 X-forwarded-For 标头,则会被阻止。
在之前的
除非你禁用 IMDSv1,否则你将无法获得 IMDSv2 的全部好处。虽然 IMDS 由实例本身提供,但对 IMDS 的调用来自您的软件。这意味着您的软件必须支持 IMDSv2,然后才能禁用 IMDSv1。除了 支持 IMDSv2 的 亚马逊云科技 软件开发工具包、CLI 和
想要从IMDSv2中受益的亚马逊云科技客户告诉我们,他们希望在新的和现有的长期运行的亚马逊云科技基础设施上使用IMDSv2。这篇博文向您展示了可扩展的解决方案,用于识别提供 IMDSv1 的现有基础架构、如何在您的基础架构上过渡到 IMDSv2 以及如何完全禁用 IMDSv1。阅读此博客后,您将能够将新推出的亚马逊 EC2 设置为 IMDSv2。您还将学习如何识别发出 IMDSv1 调用的现有软件,这样您就可以采取措施更新软件,然后要求在现有 EC2 基础设施上使用 IMDSv2。
识别支持 IMDSv1 的 EC2 实例
过渡到 IMDSv2 的第一步是识别所有支持 IMDSv1 的现有的 EC2 实例。你可以通过多种方式做到这一点。
使用控制台
要查看 IMDSv2 属性列,请执行以下操作:
- 打开 Amazon EC2 控制台并转到 实例。
- 选择右上角的设置图标。
- 向下滚动到 IMDSv2 ,打开滑块。
- 选择 “ 确认 ” 。
这为您提供了实例的 IMDS 状态。 可选 状态 表示实例上已启用 IMDSv1, 必填 状态 意味着 IMDSv1 已禁用。
图 1:控制台中 EC2 实例的 IMDS 版本示例
使用 亚马逊云科技 命令行界面
您可以通过运行 aws
ec2 描述实例命令并检查 HttpTokens 的值,使用
使用 亚马逊云科技 Config
图 2:亚马逊云科技 Config 控制台中不合规的 EC2 实例示例
启用此 亚马逊云科技 Config 规则后,您可以
使用安全中心
Security Hub 有 Amazon EC2 控件 (
图 3:显示不合规的 EC2 实例的 亚马逊云科技 Security Hub 示例
使用
确定 EC2 实例是否在进行 IMDSv1 调用
并非所有软件都会调用 IMDSv1;您的依赖库和工具可能已经与 IMDSv2 兼容。但是,为了缓解要求使用 IMDSv2 和完全禁用 IMDSv1 所产生的兼容性问题,你必须检查软件中是否有剩余的 IMDSv1 调用。在您确定存在启用了 IMDSv1 的实例后,请调查您的软件是否正在拨打 IMDSv1 调用。大多数应用程序在实例启动和关闭时都会调用 IMDSv1。对于长时间运行的实例,我们建议在启动或停止和重启周期中监控 IMDSv1 调用。
使用 CloudWatch 检查 IMDSv1 使用情况的步骤
- 打开 CloudWatch 控制台。
- 前往 “ 指标” ,然后转到 “ 所有指标” 。
- 选择 EC2 ,然后选择 每实例指标 。
- 搜索并添加您感兴趣的实例 的指标 metadatan oToken 。
图 4:MetadatanoToken 每实例指标的 CloudWatch 控制面板
您可以 在 CloudWatch 中使用
图 5:使用 CloudWatch 表达式查看 MetadatanoToken 的账户范围内的指标
您可以在 CloudWatch 中组合搜索和排序表达式,以帮助识别使用 IMDSv1 的实例。
图 6:使用 CloudWatch 表达式查看账户范围指标的另一个示例
如果您有多个 亚马逊云科技 账户或使用 亚马逊云科技 Organizations,则可以使用
IMDS 数据包分析器
IMDS 数据包分析器是一个开源工具,用于识别和记录来自您的软件的 IMDSv1 调用,包括实例上的软件启动。该工具可以帮助识别在EC2实例上进行IMDSv1调用的软件,从而使您能够准确地确定需要更新的内容以使软件准备好使用IMDSv2。您可以通过命令行运行 IMDS 数据包分析器或将其作为服务进行安装。有关更多信息,请参阅
禁用 IMDSv1 并仅维护 IMDSv2 实例
在您监控并验证您的 EC2 实例上的软件没有进行 IMDSv1 调用后,您可以在这些实例上禁用 IMDSv1。对于所有兼容的工作负载,我们建议使用
您还可以创建和修改 AMI 和 EC2 实例来禁用 IMDSv1。
创建新实例
对于新实例,您可以通过使用运行实例 CLI 命令指定 元数据 选项参数来禁用 IMDSv1 并启用 IMDSv2。
修改正在运行的实例
配置新的 AMI
修改现有 AMI
使用控制台
如果您使用控制台启动实例,则选择 从 亚马逊云科技 控制台 启动实例 后 ,选择 高级详细信息 选项卡,向下滚动到 元数据版本 , 然后选择 仅限 V2(需要令牌) 。
图 7:使用控制台修改 IMDS 版本
使用 EC2 启动模板
您可以使用
图 8:修改 EC2 启动模板中的 IMDS 版本
将 CloudFormation 与 EC2 启动模板搭配使用
使用
在此状态下,检索
使用系统管理器自动化操作手册
-
打开
系统管理器控制台 ,然后 从导航窗格中选择 “ 自动化 ”。 - 选择 “ 执行自动化 ” 。
- 在 “ 亚马逊 所有 ” 选项卡上,在 “ 自动化” 文档 中,输入 Enfor cec2InstanceimdsV2 ,然后按 E nter。
- 选择 Enf orcec2InstanceimdsV 2 文档,然后选择 “下一步”。
-
对于 “
执行自动化文档
” ,选择 “
简单执行
” 。
注意 :如果您需要在多个目标上运行自动化,请选择 “ 速率控制 ” 。
- 对于 输入参数 ,在实例 ID 下 输入 EC2 实例的 ID
-
在
AutomationAssumeRole 中,选择
一个角色。
注意 :要更改目标 EC2 实例,A utomationAssumeRole 必须具有 ec2: ModifyInstanceMetadat aOptions 和 ec 2: DescribeInstanceInstance 权限。 有关为系统管理员自动化创建代入角色的更多信息,请参阅
为自动化 创建服务角色 。 - 选择 “ 执行 ” 。
使用 亚马逊云科技 CDK
如果您使用
使用 亚马逊云科技 开发工具包
适用于
仅维护 IMDSv2 EC2 实例
要仅维护 IMDSv2 实例,您可以实施服务控制策略和 IAM 策略,以验证您的 EC2 实例上的用户和软件只能使用 IMDSv2 的
您可以在《
使用条件密钥限制凭证的使用
作为额外的防御措施,您可以限制使用您的 Amazon EC2 角色证书,使其仅在颁发证书的 EC2 实例中使用时才有效。此控件与 IMDSv2 相辅相成,因为两者可以协同工作。
结论
除非你禁用 IMDSv1,否则你将无法获得 IMDSv2 的全部好处。在这篇博客文章中,我们向您展示了如何识别支持 IMDSv1 的 EC2 实例,以及如何确定您的软件是否以及何时调用 IMDSv1。我们还向您展示了在您的软件不再调用 IMDSv1 后,如何在新的和现有的 EC2 基础设施上禁用 IMDSv1。您可以使用这些工具来转换现有的 EC2 实例,并将新的 EC2 启动设置为仅使用 IMDSv2。
如果您对这篇文章有反馈,请在下面的评论部分提交评论。如果您对这篇文章有疑问,请在
想了解更多 亚马逊云科技 安全新闻?在
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。