为新实例配置实例元数据选项
要求使用 IMDSv2
您可以通过多种方式要求在启动时在实例上使用 IMDSv2,如下所示:
在启动时配置实例
当您 启动实例 时,您可以通过配置以下字段,从而将实例配置为要求使用 IMDSv2:
-
Amazon EC2 控制台:将 Metadata version(元数据版本)设置为 V2 only (token required) [仅 V2(必须使用令牌)]。
-
AWS CLI:将
HttpTokens
设置为required
。
当您指定必须使用 IMDSv2 时,还必须将可访问元数据设置为已启用(控制台),或将 HttpEndpoint
设置为 enabled
(AWS CLI),以启用实例元数据服务(IMDS)端点。
配置 AMI
注册新 AMI 或修改现有 AMI 时,可将 imds-support
参数设置为 v2.0
。从此 AMI 启动的实例会将 Metadata version(元数据版本)设置为 V2 only (token required) [仅 V2(必须使用令牌)](控制台),或将 HttpTokens
设置为 required
(AWS CLI)。借助这些设置,实例将要求在请求实例元数据时使用 IMDSv2。
请注意,如果您将 imds-support
设置为 v2.0
,从此 AMI 启动的实例还会将 Metadata response hop limit(元数据响应跃点限制)(控制台)或 http-put-response-hop-limit
(AWS CLI)将设置为 2。
重要
除非 AMI 软件支持 IMDSv2,否则不要使用该参数。将值设置为 v2.0
后,无法撤消。“重置”AMI 的唯一方法是从底层快照创建新的 AMI。
为 IMDSv2 配置新的 AMI
下面的 register-image 示例将使用某个 EBS 根卷的指定快照的 AMI 注册为设备 /dev/xvda
。为 imds-support
参数指定 v2.0
,以便从此 AMI 启动的实例要求在请求实例元数据时使用 IMDSv2。
aws ec2 register-image \ --name
my-image
\ --root-device-name /dev/xvda \ --block-device-mappings DeviceName=/dev/xvda,Ebs={SnapshotId=snap-0123456789example
} \ --imds-support v2.0
为 IMDSv2 配置现有 AMI
以下 modify-image-attribute 示例仅为 IMDSv2 修改现有 AMI。为 imds-support
参数指定 v2.0
,以便从此 AMI 启动的实例要求在请求实例元数据时使用 IMDSv2。
aws ec2 modify-image-attribute \ --image-id
ami-0123456789example
\ --imds-support v2.0
使用 IAM policy
您可以创建 IAM policy 来阻止用户启动新实例,除非他们要求在新实例上使用 IMDSv2。
使用 IAM policy 强制要求在所有新实例上使用 IMDSv2
要确保用户只能启动要求在请求实例元数据时使用 IMDSv2 的实例,您可以指定在启动实例之前要求 IMDSv2 必须满足的条件。有关示例 IAM policy,请参阅 使用实例元数据。
配置 IPv4 和 IPv6 端点
默认禁用 IPv6 端点。即使在仅 IPv6 子网中启动实例,也是如此。您可以在使用 AWS CLI 启动实例时选择启用 IPv6 端点。此选项在 Amazon EC2 控制台中不可用。
IMDS 的 IPv6 端点仅可在 基于 Nitro 系统构建的实例 上访问。
配置 IPv4 和 IPv6 端点
下方 run-instances 示例会启动一个 t3.large
实例并为 IMDS 启用 IP6 端点。要启用 IPv6 端点,请将 --metadata-options
参数指定为 HttpProtocolIpv6=enabled
。在为 HttpProtocolIpv6
指定值时,还必须将 HttpEndpoint
设置为 enabled
。
aws ec2 run-instances \ --image-id
ami-0abcdef1234567890
\ --instance-typet3.large
\ ... --metadata-options "HttpEndpoint=enabled,HttpProtocolIpv6=enabled"
关闭对实例元数据的访问
您可以确保关闭对实例元数据的访问权限,无论您使用的是哪个版本的 IMDS。您可以稍后开启访问权限。有关更多信息,请参阅开启对实例元数据的访问权限。