依赖元数据端点的AWS工作负载容易受到服务器端请求伪造(SSRF)攻击。IMDShift可以自动化将所有工作负载迁移到IMDSv2,具备广泛的功能,实现了增强的安全措施以防御这些攻击。

MetadataNoToken CloudWatch指标识别在指定区域中使用IMDSv1的资源Metabadger是一个较旧的工具,用于促进AWS EC2工作负载迁移到IMDSv2。
IMDShift在Metabadger的能力基础上进行了多项改进:
git clone https://github.com/ayushpriya10/imdshift.git
cd imdshift/
python3 -m pip install .
git clone https://github.com/ayushpriya10/imdshift.git
cd imdshift/
python3 -m pip install -e .
选项:
--services TEXT 此标志指定要扫描IMDSv1使用情况的服务,可选值包括[EC2, Sagemaker, ASG (Auto Scaling Groups), Lightsail, ECS, EKS, Beanstalk]。
格式:"--services EC2,Sagemaker,ASG"
--include-regions TEXT 此标志显式指定要包含在IMDSv1使用情况扫描中的区域。格式:"--include-regions ap-south-1,ap-southeast-1"
--exclude-regions TEXT 此标志显式指定要从扫描中排除的区域。格式:"--exclude-regions ap-south-1,ap-southeast-1"
--migrate 此布尔标志启用IMDShift执行迁移,默认为"False"。格式:"--migrate"
--update-hop-limit INTEGER 此标志指定是否更新跃点限制以及更新的值。建议将跃点限制设置为"2",以使容器能够与IMDS端点正常工作。如果未传递此标志,则迁移期间不更新跃点限制。格式:"--update-hop-limit 3"
--enable-imds 此布尔标志启用IMDShift为已禁用元数据端点的资源启用该端点,然后执行迁移,默认为"False"。格式:"--enable-imds"
--profile TEXT 允许您使用~/.aws/credentials文件中的任何配置文件。格式:"--profile prod-env"
--role-arn TEXT 此标志允许您通过aws sts承担角色。格式:"--role-arn arn:aws:sts::111111111:role/John"
--print-scps 此布尔标志打印可用于控制IMDS使用的服务控制策略(SCP),例如拒绝访问从IMDSv2获取的凭据或拒绝使用IMDSv1创建资源,默认为"False"。格式:"--print-scps"
--check-imds-usage 此布尔标志启动扫描,通过使用"MetadataNoToken" CloudWatch指标,识别过去30天内指定区域中有多少实例正在使用IMDSv1,默认为"False"。格式:"--check-imds-usage"
--help 显示此消息并退出。