IMDSv2强制实施:即将登陆您所在的区域!

本文详细介绍了AWS新推出的区域级IMDSv2强制实施功能,包括其安全背景、历史演进过程、API调用方法以及与Terraform的集成实现,帮助用户防范SSRF漏洞导致的元数据服务滥用风险。

IMDSv2强制实施:即将登陆您所在的区域!

3月25日,AWS发布了一项新功能,默认对新启动的EC2实例实施IMDSv2(Instance Metadata Service Version 2)。这项期待已久的功能虽然仍有改进空间,但标志着云安全的重要进步。

IMDSv2简介

IMDSv2是AWS于2019年11月推出的安全机制,旨在应对Capital One数据泄露事件。该事件由SSRF(服务器端请求伪造)漏洞引发,促使美国参议员致信AWS询问防护措施。IMDSv2能有效防止攻击者通过SSRF漏洞从实例元数据服务窃取凭证。

2021-2022年的研究表明,此类漏洞是公开云安全事件最常见的原因之一。Nick Frichette的《保护EC2实例元数据服务》对此有深度解析。

演进历程

  • 初始阶段:需在实例或启动模板中手动设置metadata_options.http_tokens="required"
  • 2022年10月:支持在AMI注册时指定--imds-support v2.0参数
  • 2023年3月:Amazon Linux 2023默认启用IMDSv2
  • 2023年11月:EC2控制台"快速启动"界面默认启用
  • 2024年3月:推出区域级默认设置功能

新API详解

新增的两个API允许在区域级别设置元数据默认值:

1
2
3
4
5
6
client.modify_instance_metadata_defaults(
    HttpTokens='required',  # 关键参数
    HttpPutResponseHopLimit=123,
    HttpEndpoint='enabled',
    InstanceMetadataTags='disabled'
)

优先级规则:实例设置 > 区域设置 > AMI设置 > 默认不启用。

Terraform集成

通过aws_ec2_instance_metadata_defaults资源实现:

1
2
3
4
5
6
resource "aws_ec2_instance_metadata_defaults" "imdsv2" {
  http_tokens                 = "required"
  instance_metadata_tags      = "disabled"
  http_endpoint               = "enabled"
  http_put_response_hop_limit = 1
}

注意事项

  1. 2024年中起,新型EC2实例将默认仅支持IMDSv2
  2. 该功能仅设置默认值,仍需配合SCP或ec2:MetadataHttpTokens条件键进行强制管控

这项功能为云安全实践者提供了重要的管控工具,但AWS仍需进一步改进默认安全配置。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计