AWS IMDSv2区域级强制实施详解:提升云安全新举措

本文深入解析AWS最新推出的区域级IMDSv2强制实施功能,涵盖其安全背景、技术实现方式及Terraform集成方案。IMDSv2作为防范SSRF攻击的关键机制,通过实例级、AMI级到区域级的演进历程,展现了云安全防护体系的持续完善。

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

IMDSv2简介

IMDSv2是AWS于2019年11月发布的安全机制,旨在应对类似Capital One数据泄露事件中的SSRF漏洞。该机制通过要求实例元数据服务使用会话认证令牌,有效防止攻击者通过SSRF漏洞窃取凭证。

演进历程

初始阶段

早期只能通过实例级别的metadata_options.http_tokens="required"设置或EC2启动模板来强制实施IMDSv2,操作繁琐且存在不安全默认设置。

AMI级支持

2022年10月,AWS推出新功能,允许在AMI注册时指定默认启用IMDSv2:

1
2
3
4
5
6
aws ec2 register-image \
    --name my-image \
    --root-device-name /dev/xvda \
    --block-device-mappings DeviceName=/dev/xvda,Ebs={SnapshotId=snap-0123456789example} \
    --architecture x86_64 \
    --imds-support v2.0

控制台默认设置

2023年11月,AWS控制台在"快速启动"EC2界面中默认启用IMDSv2。

区域级强制实施

2024年3月,AWS推出两个新API:

  • GetInstanceMetadataDefaults
  • ModifyInstanceMetadataDefaults

通过以下代码可在区域级别设置默认元数据选项:

1
2
3
import boto3
ec2_client = boto3.client('ec2')
ec2_client.modify_instance_metadata_defaults(HttpTokens='required')

AWS CLI支持(v1.32.70+):

1
aws ec2 modify-instance-metadata-defaults --http-tokens required

优先级规则

AWS明确了设置优先级:

  1. 实例级设置(如果配置)
  2. 区域级设置(如果配置)
  3. AMI级设置(如果配置)
  4. 默认不强制IMDSv2

Terraform集成

v5.43.0版本新增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
}

注意事项

  • 该功能仅设置默认值,仍允许启动支持IMDSv1的实例
  • 如需完全禁用IMDSv1,需使用SCP或ec2:MetadataHttpTokens条件键
  • AWS计划在2024年中使新EC2实例类型默认仅支持IMDSv2

这项新功能为日常实施IMDSv2的实践者提供了极大便利,是推动云环境安全默认设置的重要进步。

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