可为新实例配置以下实例元数据选项。
注意
这些选项的设置在账户级别配置,可以直接在账户中配置,也可以使用声明式策略进行配置。必须在要配置实例元数据选项的每个 AWS 区域中对选项进行配置。使用声明式策略允许同时将设置应用于多个区域,也可以同时应用于多个账户。当使用声明式策略时,您无法直接在账户中修改设置。本主题介绍如何直接在账户中配置设置。有关使用声明式策略的信息,请参阅《AWS Organizations User Guide》中的 Declarative policies。
要求使用 IMDSv2
可以使用以下方法要求在新实例上使用 IMDSv2。
将 IMDSv2 设置为账户默认设置
可以在账户级别为每个 AWS 区域 设置实例元数据服务(IMDS)的默认版本。这意味着在启动新实例后,实例元数据版本会自动设置为该账户级别的默认值。但是,您可以在启动实例时或启动实例后手动覆盖该值。有关账户级别设置和手动覆盖会如何影响实例的更多信息,请参阅 实例元数据选项的优先顺序。
注意
设置账户级别的默认值不会重置现有的实例。例如,假设您将账户级别的默认值设置为 IMDSv2,则任何设置为 IMDSv1 的现有实例都不会受到影响。如果要更改现有实例的值,则必须手动更改相关实例本身的值。
您可以将实例元数据版本的账户默认值设置为 IMDSv2,这样账户中的所有新实例启动时都会需要 IMDSv2,而 IMDSv1 将被禁用。如果应用此账户默认设置,以下是该实例启动时的默认值:
-
控制台:元数据版本设置为仅 V2(需要令牌),并且元数据响应跃点限制设置为 2。
-
AWS CLI:
HttpTokens
设置为required
,并且HttpPutResponseHopLimit
设置为2
。
注意
在将账户默认值设置为 IMDSv2 之前,请确保您的实例不依赖 IMDSv1。有关更多信息,请参阅 要求 IMDSv2 的建议途径。
将 IMDSv2 设置为指定区域内的账户默认设置
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/
。 -
要更改 AWS 区域,请使用页面右上角的区域选择器。
-
在导航窗格中,选择 EC2 控制面板。
-
在账户属性下,选择数据保护和安全。
-
选择 IMDS 默认设置旁边的管理。
-
在管理 IMDS 默认设置页面上,执行以下操作:
-
对于实例元数据服务,选择启用。
-
对于 Metadata version(元数据版本),选择 V2 only (token required)(仅限 V2(需要令牌))。
-
对于元数据响应跃点限制,如果实例将托管容器,请指定 2。否则,请选择无首选项。如果未指定首选项,则启动时,如果 AMI 需要 IMDSv2,则该值默认为 2;否则默认为 1。
-
选择更新。
-
在启动时配置实例
当您 启动实例 时,您可以通过配置以下字段,从而将实例配置为要求使用 IMDSv2:
-
Amazon EC2 控制台:将 Metadata version(元数据版本)设置为 V2 only (token required) [仅 V2(必须使用令牌)]。
-
AWS CLI:将
HttpTokens
设置为required
。
当您指定必须使用 IMDSv2 时,还必须将可访问元数据设置为已启用(控制台),或将 HttpEndpoint
设置为 enabled
(AWS CLI),以启用实例元数据服务(IMDS)端点。
在容器环境中,需要 IMDSv2 时,我们建议将跃点限制设置为 2
。有关更多信息,请参阅 实例元数据访问注意事项。
要求在新实例上使用 IMDSv2
-
在 Amazon EC2 控制台中启动新实例时,展开 Advanced details(高级详细信息),然后执行以下操作:
-
对于 Metadata accessible(可访问的元数据),选择 Enabled(已启用)。
-
对于 Metadata version(元数据版本),选择 V2 only (token required)(仅限 V2(需要令牌))。
-
(容器环境)对于元数据响应跃点限制,请选择 2。
有关更多信息,请参阅 高级详细信息。
-
配置 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
使用以下方法之一将新 AMI 配置为 IMDSv2。
下面的 register-image/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
} \ --architecture x86_64 \ --imds-support v2.0
为 IMDSv2 配置现有 AMI
使用以下方法之一配置 IMDSv2 的现有 AMI。
以下 modify-image-attributeimds-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,请参阅 使用实例元数据。
启用 IMDS IPv4 和 IPv6 端点
实例上的 IMDS 有两个端点:IPv4 (169.254.169.254
) 和 IPv6 ([fd00:ec2::254]
)。启用 IMDS 时,会自动启用 IPv4 端点。即使将实例启动到仅限 IPv6 的子网中,IPv6 端点仍处于禁用状态。要启用 IPv6 端点,需将其显式启用。启用 IPv6 端点后,IPv4 端点将保持启用状态。
您可以在启动实例时或启动实例之后启用 IPv6 端点。
启用 IPv6 端点的要求
-
所选的实例类型是基于 Nitro 的实例。
-
选定的子网支持 IPv6,其中子网要么为双堆栈,要么仅限 IPv6。
使用以下方法之一启动启用了 IMDS IPv6 端点的实例。
关闭对实例元数据的访问
您可以通过在启动实例时禁用 IMDS 来关闭对实例元数据的访问。您可以稍后通过重新启用 IMDS 来开启访问权限。有关更多信息,请参阅 开启对实例元数据的访问权限。
重要
您可以选择在启动时或启动后禁用 IMDS。如果您在启动时禁用 IMDS,则可能发生以下情况:
-
您可能不再拥有对实例的 SSH 访问权限。
public-keys/0/openssh-key
作为您的实例的 SSH 公钥,将无法访问,因为该密钥通常是从 EC2 实例元数据提供和访问的。 -
EC2 用户数据将不可用,也不会在实例启动时运行。EC2 用户数据托管在 IMDS 上。如果您禁用 IMDS,则实际上关闭了对用户数据的访问。
要访问此功能,您可以在启动后重新启用 IMDS。
允许访问实例元数据中的标签
默认情况下,无法访问实例元数据中的实例标签。对于每个实例,您必须明确允许访问。如果允许访问,则实例标签键必须符合特定的字符限制,否则实例启动将失败。有关更多信息,请参阅 允许访问实例元数据中的标签。