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

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

要求使用 IMDSv2

您可以通过多种方式要求在启动时在实例上使用 IMDSv2,如下所示:

在启动时配置实例

当您 启动实例 时,您可以通过配置以下字段,从而将实例配置为要求使用 IMDSv2:

  • Amazon EC2 控制台:将 Metadata version(元数据版本)设置为 V2 only (token required) [仅 V2(必须使用令牌)]。

  • Amazon CLI:将 HttpTokens 设置为 required

当您指定必须使用 IMDSv2 时,还必须将 Metadata accessible(可访问元数据)设置为 Enabled(已启用)(控制台),或将 HttpEndpoint 设置为 enabled(Amazon CLI),从而启用实例元数据服务端点。

New console
要求在新实例上使用 IMDSv2
  • 在 Amazon EC2 控制台中启动新实例时,展开 Advanced details(高级详细信息),然后执行以下操作:

    • 对于 Metadata accessible(可访问的元数据),选择 Enabled(已启用)。

    • 对于 Metadata version(元数据版本),选择 V2 only (token required)(仅限 V2(需要令牌))。

    有关更多信息,请参阅高级详细信息

Old 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 用户指南中的 亚马逊云科技::EC2::LaunchTemplate MetadataOptions 属性。

配置 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-type t3.large ... --metadata-options "HttpEndpoint=enabled,HttpProtocolIpv6=enabled"

关闭对实例元数据的访问

您可以确保关闭对实例元数据的访问权限,无论您使用的是哪个版本的实例元数据服务。您可以稍后使用 modify-instance-metadata-options 命令开启访问权限。

New console
关闭对实例元数据的访问
  • 在 Amazon EC2 控制台中 启动实例,并在 Advanced details(高级详细信息)下指定以下参数:

    • 对于 Metadata accessible(可访问的元数据),选择 Disabled(已禁用)。

有关更多信息,请参阅高级详细信息

Old console
关闭对实例元数据的访问
  • 在 Amazon EC2 控制台中启动实例,并在 Configure Instance Details(配置实例详细信息)页面上选择以下选项:

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

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

Amazon CLI
关闭对实例元数据的访问

启动实例并将 --metadata-options 设置为 HttpEndpoint=disabled

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 属性。