配置实例元数据选项 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

配置实例元数据选项

通过实例元数据选项,您可以通过配置新实例或现有实例来执行以下操作:

  • 在请求实例元数据时要求使用 IMDSv2

  • 指定 PUT 响应跃点限制

  • 关闭对实例元数据的访问

您还可以在 IAM policy 或 SCP 中使用 IAM 条件键执行以下操作:

  • 仅在实例配置为要求使用 IMDSv2 时允许实例启动

  • 限制允许的跃点数

  • 关闭对实例元数据的访问

注意

如果您的 PowerShell 版本早于 4.0,则必须更新到 Windows Management Framework 4.0 才能要求使用 IMDSv2。

注意

在进行任何更改之前,您应谨慎执行操作并进行仔细的测试。记录以下内容:

  • 如果您强制使用 IMDSv2,则使用 IMDSv1 访问实例元数据的应用程序或代理将会中断。

  • 如果禁用对实例元数据的所有访问,则依赖于实例元数据访问才能正常工作的应用程序或代理将会中断。

  • 对于 IMDSv2,在检索令牌时必须使用 /latest/api/token

为新实例配置实例元数据选项

您可以在启动实例时要求使用 IMDSv2。您还可以创建 IAM policy,使得除非用户在新实例上要求使用 IMDSv2,否则阻止用户启动新实例。

Console

要求在新实例上使用 IMDSv2

  • 在 Amazon EC2 控制台中启动新实例时,请在配置实例详细信息页面上选择以下选项:

    • 高级详细信息下,对于可访问的元数据,选择已启用

    • 对于元数据版本,选择 V2 (令牌必填)

有关更多信息,请参阅步骤 3:配置实例详细信息

Amazon CLI

要求在新实例子网上使用 IMDSv2

以下 run-instances 示例会启动 c3.large 设置为 --metadata-optionsHttpTokens=required 实例。在为 HttpTokens 指定值时,还必须将 HttpEndpoint 设置为 enabled。由于元数据检索请求的安全令牌标头设置为 required,因此会在请求实例元数据时使实例选择要求 IMDSv2。

aws ec2 run-instances --image-id ami-0abcdef1234567890 --instance-type c3.large ... --metadata-options "HttpEndpoint=enabled,HttpTokens=required"
Amazon CloudFormation

要使用 Amazon CloudFormation 指定实例的元数据选项,请参阅 Amazon CloudFormation 用户指南中的 AWS::EC2::LaunchTemplate MetadataOptions 属性。

在所有新实例上强制使用 IMDSv2

要确保 IAM 用户只能启动要求在请求实例元数据时使用 IMDSv2 的实例,您可以指定在启动实例之前要求 IMDSv2 必须满足的条件。有关示例 IAM policy,请参阅 使用实例元数据

配置 IPv4 和 IPv6 端点

默认禁用 IPv6 端点。即使在仅 IPv6 子网中启动实例,也是如此。您可以在实例启动时选择启用此端点。IMDS 的 IPv6 端点仅可在 基于 Nitro 系统构建的实例 上访问。有关元数据选项的更多信息,请参阅《Amazon CLI 命令参考》中的 run-instances。以下示例展示了如何启用 IMDS 的 IPv6 端点:

aws ec2 run-instances --image-id ami-0abcdef1234567890 --instance-type t3.large ... --metadata-options "HttpEndpoint=enabled,HttpProtocolIpv6=enabled"
Console

关闭对实例元数据的访问

  • 为了确保关闭对实例元数据的访问(无论您使用的是哪个版本的实例元数据服务),请在 Amazon EC2 控制台中启动实例,并在配置实例详细信息页面上选择以下选项:

    • 高级详细信息下,对于可访问的元数据,选择已禁用

有关更多信息,请参阅步骤 3:配置实例详细信息

Amazon CLI

关闭对实例元数据的访问

要确保关闭对实例元数据的访问权限,无论您使用的是哪个版本的实例元数据服务,请将 --metadata-options 设置为 HttpEndpoint=disabled 来启动实例。您可以稍后使用 modify-instance-metadata-options 命令打开访问权限。

aws ec2 run-instances --image-id ami-0abcdef1234567890 --instance-type c3.large ... --metadata-options "HttpEndpoint=disabled"
Amazon CloudFormation

要使用 Amazon CloudFormation 指定实例的元数据选项,请参阅 Amazon CloudFormation 用户指南中的 AWS::EC2::LaunchTemplate MetadataOptions 属性。

为现有实例修改实例元数据选项

在现有实例上要求使用 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-id i-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-id i-1234567898abcdef0 \ --http-put-response-hop-limit 3 \ --http-endpoint enabled

使用 IMDSv2 恢复在实例上使用 IMDSv1

您可以使用 modify-instance-metadata-options CLI 命令并将 http-tokens 设置为 optional,以在请求实例元数据时恢复使用 IMDSv1。

aws ec2 modify-instance-metadata-options \ --instance-id i-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-id i-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-id i-1234567898abcdef0 \ --http-endpoint disabled

控制 modify-instance-metadata-options 的使用

要控制哪些 IAM 用户可以修改实例元数据选项,请指定一个策略,阻止具有除指定角色的用户以外的所有用户使用 ModifyInstanceMetadataOptions API。有关示例 IAM policy,请参阅 使用实例元数据