配置实例元数据选项
通过实例元数据选项,您可以通过配置新实例或现有实例来执行以下操作:
-
在请求实例元数据时要求使用 IMDSv2
-
指定
PUT响应跃点限制 -
关闭对实例元数据的访问
您还可以在 IAM policy 或 SCP 中使用 IAM 条件键执行以下操作:
-
仅在实例配置为要求使用 IMDSv2 时允许实例启动
-
限制允许的跃点数
-
关闭对实例元数据的访问
在进行任何更改之前,您应谨慎执行操作并进行仔细的测试。记录以下内容:
-
如果您强制使用 IMDSv2,则使用 IMDSv1 访问实例元数据的应用程序或代理将会中断。
-
如果禁用对实例元数据的所有访问,则依赖于实例元数据访问才能正常工作的应用程序或代理将会中断。
-
对于 IMDSv2,在检索令牌时必须使用
/latest/api/token。
为新实例配置实例元数据选项
您可以在启动实例时要求使用 IMDSv2。您还可以创建 IAM policy,使得除非用户在新实例上要求使用 IMDSv2,否则阻止用户启动新实例。
在所有新实例上强制使用 IMDSv2
要确保 IAM 用户只能启动要求在请求实例元数据时使用 IMDSv2 的实例,您可以指定在启动实例之前要求 IMDSv2 必须满足的条件。有关示例 IAM policy,请参阅 使用实例元数据。
配置 IPv4 和 IPv6 端点
默认禁用 IPv6 端点。即使在仅 IPv6 子网中启动实例,也是如此。您可以在实例启动时选择启用此端点。IMDS 的 IPv6 端点仅可在 基于 Nitro 系统构建的实例 上访问。有关元数据选项的更多信息,请参阅《Amazon CLI 命令参考》中的 run-instances。以下示例展示了如何为 IMDS 启用 IPv6 端点。
aws ec2 run-instances --image-idami-0abcdef1234567890--instance-typet3.large... --metadata-options "HttpEndpoint=enabled,HttpProtocolIpv6=enabled"
为现有实例修改实例元数据选项
在现有实例上要求使用 IMDSv2。您也可以更改 PUT 响应跃点限制,并关闭对现有实例上实例元数据的访问。您还可以创建 IAM policy,防止用户修改现有实例上的实例元数据选项。
目前只有 Amazon SDK 或 Amazon CLI 支持修改现有实例上的实例元数据选项。您无法使用 Amazon EC2 控制台修改实例元数据选项。
要求使用 IMDSv2
您可以选择要求在请求实例元数据时使用 IMDSv2。请使用 modify-instance-metadata-options CLI 命令,并将 http-tokens 参数设置为 required。在为 http-tokens 指定值时,还必须将 http-endpoint 设置为 enabled。
aws ec2 modify-instance-metadata-options \ --instance-idi-1234567898abcdef0\ --http-tokens required \ --http-endpoint enabled
更改 PUT 响应跃点限制
对于现有的实例,您可以更改 PUT 响应跃点数限制设置。请使用 modify-instance-metadata-options CLI 命令,并将 http-put-response-hop-limit 参数设置为所需的跃点数。在以下示例中,跃点数限制设置为 3。请注意,在为 http-put-response-hop-limit 指定值时,还必须将 http-endpoint 设置为 enabled。
aws ec2 modify-instance-metadata-options \ --instance-idi-1234567898abcdef0\ --http-put-response-hop-limit3\ --http-endpoint enabled
使用 IMDSv2 恢复在实例上使用 IMDSv1
您可以使用 modify-instance-metadata-options CLI 命令并将 http-tokens 设置为 optional,以在请求实例元数据时恢复使用 IMDSv1。
aws ec2 modify-instance-metadata-options \ --instance-idi-1234567898abcdef0\ --http-tokens optional \ --http-endpoint enabled
为您的实例启用 IPv6 端点
默认禁用 IPv6 端点。即使您已在仅 IPv6 子网中启动了实例,也是如此。IMDS 的 IPv6 端点仅可在 基于 Nitro 系统构建的实例 上访问。有关元数据选项的更多信息,请参阅 Amazon CLI 命令参考中的 modify-instance-metadata-options。以下示例所示为如何打开实例元数据服务的 IPv6 端点。
aws ec2 modify-instance-metadata-options \ --instance-idi-1234567898abcdef0\ --http-protocol-ipv6 enabled \ --http-endpoint enabled
关闭对实例元数据的访问
您可以通过禁用实例元数据服务的 HTTP 终端节点以禁用实例元数据访问,而无论使用的是哪种实例元数据服务版本。您可以随时启用 HTTP 终端节点以撤消该更改。请使用 modify-instance-metadata-options CLI 命令,并将 http-endpoint 参数设置为 disabled。
aws ec2 modify-instance-metadata-options \ --instance-idi-1234567898abcdef0\ --http-endpoint disabled
控制 modify-instance-metadata-options 的使用
要控制哪些 IAM 用户可以修改实例元数据选项,请指定一个策略,阻止具有除指定角色的用户以外的所有用户使用 ModifyInstanceMetadataOptions API。有关示例 IAM policy,请参阅 使用实例元数据。