为新实例配置实例元数据选项
要求使用 IMDSv2
您可以通过多种方式要求在启动时在实例上使用 IMDSv2,如下所示:
在启动时配置实例
当您 启动实例 时,您可以通过配置以下字段,从而将实例配置为要求使用 IMDSv2:
-
Amazon EC2 控制台:将 Metadata version(元数据版本)设置为 V2 only (token required) [仅 V2(必须使用令牌)]。
-
Amazon CLI:将
HttpTokens
设置为required
。
当您指定必须使用 IMDSv2 时,还必须将 Metadata accessible(可访问元数据)设置为 Enabled(已启用)(控制台),或将 HttpEndpoint
设置为 enabled
(Amazon CLI),从而启用实例元数据服务端点。
配置 AMI
注册您的 AMI 时,可以将 imds-support
参数设置为 v2.0
。从此 AMI 启动的实例会将 Metadata version(元数据版本)设置为 V2 only (token required) [仅 V2(必须使用令牌)](控制台),或将 HttpTokens
设置为 required
(Amazon CLI)。借助这些设置,实例将要求在请求实例元数据时使用 IMDSv2。
请注意,如果您将 imds-support
设置为 v2.0
,从此 AMI 启动的实例还会将 Metadata response hop limit(元数据响应跃点限制)(控制台)或 http-put-response-hop-limit
(Amazon CLI)将设置为 2。
为 AMI 配置 IMDSv2
下面的 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
使用 IAM policy
您可以创建 IAM policy 来阻止 IAM 用户启动新实例,除非他们要求在新实例上使用 IMDSv2。
使用 IAM policy 强制要求在所有新实例上使用 IMDSv2
要确保 IAM 用户只能启动要求在请求实例元数据时使用 IMDSv2 的实例,您可以指定在启动实例之前要求 IMDSv2 必须满足的条件。有关示例 IAM policy,请参阅 使用实例元数据。
配置 IPv4 和 IPv6 端点
默认禁用 IPv6 端点。即使在仅 IPv6 子网中启动实例,也是如此。您可以在使用 Amazon CLI 启动实例时选择启用 IPv6 端点。此选项在 Amazon EC2 控制台中不可用。
实例元数据服务的 IP6 端点仅可通过 基于 Nitro 系统构建的实例 访问。
配置 IPv4 和 IPv6 端点
下面的 run-instances 示例会启动一个 t3.large
实例并为实例元数据服务启用 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"
关闭对实例元数据的访问
您可以确保关闭对实例元数据的访问权限,无论您使用的是哪个版本的实例元数据服务。您可以稍后使用 modify-instance-metadata-options 命令开启访问权限。