实例元数据

更新时间:2025-03-26 08:16

ECS实例元数据是指实例ID、VPC信息、网卡信息等实例属性信息,支持在ECS实例内部通过访问元数据服务(Metadata Service)获取。通过该获取方式,您无需登录控制台或调用API,在实例内部即可访问实例信息,可以更便捷、安全地配置或管理正在运行的实例或实例上的程序。

实例元数据内容列表

元数据服务支持获取主机名(hostname)、实例规格、实例名称、镜像ID等信息,展开下方表格查看所有元数据。

点击展开

元数据

说明

示例

dns-conf/nameservers

实例的DNS配置。

100.100.XX.XX

hostname

实例的主机名。

iZbp13znx0m0me8cquu****

instance/instance-type

实例规格。

ecs.g6e.large

instance/instance-name

实例名称。

iZbp1bfqfsvqzxhmnd5****

image-id

创建实例时所使用的镜像ID。

aliyun_3_x64_20G_alibase_20210425.vhd

image/market-place/product-code

云市场镜像的商品码。

cmjj01****

image/market-place/charge-type

云市场镜像的计费方式。

PrePaid

instance-id

实例ID。

i-bp13znx0m0me8cquu****

mac

实例的MAC地址,如果实例存在多个网卡,则只显示eth0上的MAC地址。

00:16:3e:0f:XX:XX

network-type

网络类型,只支持VPC类型实例。

vpc

network/interfaces/macs/[mac]/network-interface-id

网卡的标识ID,其中[mac]参数需要替换为实例的MAC地址。

eni-bp1b2c0jvnj0g17b****

network/interfaces/macs/[mac]/netmask

网卡对应的子网掩码。

255.255.XX.XX

network/interfaces/macs/[mac]/vswitch-cidr-block

网卡所属的虚拟交换机IPv4 CIDR段。

192.168.XX.XX/24

network/interfaces/macs/[mac]/vpc-cidr-block

网卡所属的VPC IPv4 CIDR段。

192.168.XX.XX/16

network/interfaces/macs/[mac]/private-ipv4s

网卡分配的私网IPv4地址列表。

["192.168.XX.XX"]

network/interfaces/macs/[mac]/vswitch-id

网卡所属的虚拟交换机ID。

vsw-bp1ygryo03m39xhsy****

network/interfaces/macs/[mac]/vpc-id

网卡所属安全组的VPC ID。

vpc-bp1e0g399hkd7c8q3****

network/interfaces/macs/[mac]/primary-ip-address

网卡主私有IP地址。

192.168.XX.XX

network/interfaces/macs/[mac]/gateway

网卡对应的IPv4网关地址。

192.168.XX.XX

instance/max-netbw-egress

实例规格的出方向内网最大带宽。单位:Kbit/s。

1228800

network/interfaces/macs/[mac]/ipv4-prefixes

网卡分配的私网IPv4前缀列表。

192.168.XX.XX/28

network/interfaces/macs/[mac]/ipv6-prefixes

网卡分配的IPv6前缀列表。

2001:db8:1234:1a00:XXXX::/80

disks/

云盘序列号。

bp131n0q38u3a4zi****

disks/[disk-serial]/id

云盘ID。

d-bp131n0q38u3a4zi****

disks/[disk-serial]/name

云盘名称。

testDiskName

private-ipv4

实例主网卡的私网IPv4地址。

192.168.XX.XX

public-ipv4

实例主网卡的公网IPv4地址。

120.55.XX.XX

eipv4

该实例元数据项用于获取以下信息:

  • 实例的固定公网IPv4地址。

  • 实例主网卡挂载的弹性公网IPv4地址。

120.55.XX.XX

ntp-conf/ntp-servers

NTP服务器地址。

ntp1.aliyun.com

owner-account-id

实例拥有者的阿里云账号ID。

1609****

region-id

实例所属地域。

cn-hangzhou

zone-id

实例所属可用区。

cn-hangzhou-i

public-keys/[keypair-id]/openssh-key

公有密钥。仅在实例启动时提供了公有密钥的情况下可用。

ssh-rsa ****3NzaC1yc2EAAAADAQABAAABAQDLNbE7pS****@****.com

serial-number

实例所对应的序列号。

4acd2b47-b328-4762-852f-998****

source-address

镜像库地址,主要为yum源或者apt源,供Linux实例的包管理软件获取更新。

http://mirrors.cloud.aliyuncs.com

kms-server

Windows实例的KMS激活服务器。

kms.cloud.aliyuncs.com

wsus-server/wu-server

Windows实例的更新服务器。

http://update.cloud.aliyuncs.com

wsus-server/wu-status-server

Windows实例的更新状态监控服务器。

http://update.cloud.aliyuncs.com

vpc-id

实例所属VPC ID。

vpc-bp1e0g399hkd7c8q****

vpc-cidr-block

实例所属VPC CIDR段。

192.168.XX.XX/16

vswitch-cidr-block

实例所属虚拟交换机CIDR段。

192.168.XX.XX/24

vswitch-id

实例所属虚拟交换机ID。

vsw-bp1ygryo03m39xhsy****

ram/security-credentials/[role-name]

如果实例已关联RAM角色,则role-name为角色的名称,并且返回结果包含与role-name角色关联的临时安全凭证。

凭证在Expiration字段指定时间后失效,需重新调用接口获取。

{
  "AccessKeyId" : "****",
  "AccessKeySecret" : "****",
  "Expiration" : "2024-11-08T09:44:50Z",
  "SecurityToken" : "****",
  "LastUpdated" : "2024-11-08T03:44:50Z",
  "Code" : "Success"
}

instance/spot/termination-time

抢占式实例的操作系统设置的停机释放时间,时区标准为UTC+0,格式为yyyy-MM-ddThh:mm:ssZ。

2020-04-07T17:03:00Z

instance/virtualization-solution

ECS虚拟化方案,支持Virt 1.0和Virt 2.0。

ECS Virt

instance/virtualization-solution-version

内部Build号。

2.0

元数据访问模式说明

元数据访问模式有普通模式和加固模式两种方式,其访问方式见获取实例元数据。两种模式对比见下表。

重要

推荐您使用加固模式来访问实例元数据。因为普通模式是通过IP地址鉴权,这意味着攻击者可以伪造请求的源IP地址,绕过IP地址鉴权,进行SSRF攻击,造成实例元数据信息泄露风险。

使用加固模式访问需确保实例的cloud-init版本为23.2.2及以上。如果已有实例的cloud-init版本不满足要求,您可以升级cloud-init版本,从而支持加固模式。检查cloud-init版本及升级方法,请参见安装cloud-init

访问模式对比

对比项

普通模式

加固模式

对比项

普通模式

加固模式

交互方式

请求/响应

会话

鉴权方式

同VPC内源IP地址鉴权

同VPC内源IP地址鉴权+实例元数据访问凭证鉴权

该访问凭证具有以下特点:

  • 短时效性:访问凭证有效期,最长为6小时,超过有效期后将失效,需要重新获取。

  • 绑定实例:仅适用于一台实例,如果将凭证复制到其他实例使用,会被拒绝访问。

  • 不接受代理访问:请求中包含标头X-Forwarded-For,实例元数据会拒绝签发访问凭证。

查看方法

无需任何访问凭证即可通过命令直接访问endpoint

需要先获取元数据访问凭证进行鉴权,再访问endpoint,提高了元数据访问的安全性

安全级别

较低

请求通过IP地址鉴权,意味着攻击者可以伪造请求的源IP地址,绕过IP地址鉴权,进行SSRF攻击,造成实例元数据信息泄露风险。

较高

访问元数据之前,必须先获取有效的元数据访问凭证进行身份验证和授权,该访问凭证只能在ECS实例内部生成,在特定的ECS实例上使用,且具有时效性,攻击者难以通过猜测或伪造的方式生成,可以防范大多数SSRF攻击。

通过不同模式获取实例元数据

加固模式
普通模式
  • Linux实例

    # 获取元数据访问凭证,需设置有效期,不可包含标头X-Forwarded-For
    TOKEN=`curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds:<元数据访问凭证有效期>"`
    # 访问实例元数据
    curl -H "X-aliyun-ecs-metadata-token: $TOKEN" http://100.100.100.200/latest/meta-data/<metadata>
  • Windows实例

    # 获取元数据访问凭证,需设置有效期,不可包含标头X-Forwarded-For
    $token = Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token-ttl-seconds" = "<元数据访问凭证有效期>"} -Method PUT -Uri http://100.100.100.200/latest/api/token
    # 访问实例元数据
    Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token" = $token} -Method GET -Uri http://100.100.100.200/latest/meta-data/<metadata>

    您需要将上述代码中的如下字段根据实际情况进行替换。

    • <元数据访问凭证有效期>:访问凭证用于鉴权以加强数据安全。有效期取值范围为1~21600,单位为秒。

      • 在有效期内可重复使用实例元数据访问命令访问任何元数据信息;超过有效期后,凭证失效需要重新获取,否则无法访问实例元数据。

      • 访问凭证仅适用于一台实例,如果将凭证复制到其他实例使用,会被拒绝访问。

    • <metadata>:需替换为具体要查询的实例元数据,详情请参见实例元数据内容列表

  • Linux实例

    curl http://100.100.100.200/latest/meta-data/<metadata>
  • Windows实例(PowerShell)

    Invoke-RestMethod http://100.100.100.200/latest/meta-data/<metadata>

<metadata>:需替换为具体要查询的实例元数据,可查阅实例元数据内容列表

说明

ECS实例高频访问元数据服务器获取元数据时,可能会导致限流。建议缓存数据(如RAM凭证)并在过期前刷新。

设置强制加固模式获取实例元数据

为了进一步增强安全性,阿里云支持您设置实例元数据访问模式为仅加固模式(强制加固模式)。设置后,普通模式访问的流量会被拒绝,以防范普通模式访问可能带来的大多数SSRF相关风险。以下为您详细说明两种场景下设置的具体方法。

新创建ECS实例时设置强制加固模式

使用ECS控制台
使用API

实例购买页,展开高级选项区域,设置元数据访问模式为仅加固模式(强制加固模式)。

image

说明

只有当您使用的镜像支持通过加固模式访问元数据时,在购买ECS实例页面可以选择仅加固模式

如果您在控制台创建实例时无法选到仅加固模式,则可以先创建实例,然后将cloud-init版本升级到23.2.2及以上,再为已有实例设置强制加固模式。

阿里云最新发布的部分公共镜像已支持通过加固模式访问(指镜像包含的cloud-init版本满足23.2.2及以上)。您可以通过 DescribeImages - 查询可以使用的镜像资源查看镜像ImdsSupport属性,镜像ImdsSupport属性为v2时表示镜像支持加固模式访问元数据。

通过API接口RunInstancesCreateInstance创建实例时,设置HttpTokens参数为required,表示实例元数据的访问模式为仅加固模式(强制加固模式)。

说明

只有当您使用的镜像支持通过加固模式访问元数据时,调用上述接口创建实例时才能启动成功。

如果启动失败,则可以先设置HttpTokens参数为optional启动实例,然后将cloud-init版本升级到23.2.2及以上,再为已有实例设置强制加固模式。

阿里云最新发布的部分公共镜像已支持通过加固模式访问(指镜像包含的cloud-init版本满足23.2.2及以上)。您可以通过 DescribeImages - 查询可以使用的镜像资源查看镜像ImdsSupport属性,镜像ImdsSupport属性为v2时表示镜像支持加固模式访问元数据。

为已有实例设置强制加固模式

对于已经部署业务的ECS实例,设置强制加固模式会导致原来使用普通模式访问元数据的请求被拒绝。建议您修改应用代码为加固模式访问后,确保ECS实例不存在普通访问模式,再将实例元数据访问模式设置为强制加固模式。

步骤一:修改应用代码为加固模式访问

  1. 定位出哪些实例需要修改为加固模式。

    云监控控制台云资源监控 > 云产品监控页面,搜索ECS元数据。排查出监控图表普通模式访问成功次数大于0的ECS实例,表示当前实例内存在应用使用普通模式访问元数据服务,这些ECS实例需要切换为强制加固模式。为了保证数据准确,建议您设置查看时长为14天或者更长。

  2. 确保上述定位出来的实例cloud-init版本为23.2.2及以上。如果已有实例的cloud-init版本不满足要求,您可以升级cloud-init版本,从而支持加固模式。检查cloud-init版本及升级方法,请参见安装cloud-init

  3. 修改应用代码,先获取元数据访问凭证Token,再将Token设置到请求头中获取元数据,详情请参见通过加固模式获取实例元数据

  4. 确保代码不存在普通访问模式。

    云监控控制台ECS元数据页面,待需要切换访问模式的ECS实例监控图表普通模式访问成功次数显示为暂无数据(表示次数为0),您就可以执行步骤二。否则可能导致切换到强制加固模式后普通访问被拒绝,造成业务影响。为了保证数据准确,建议您设置查看时长为14天或者更长。

步骤二:设置实例元数据访问模式为强制加固模式

使用ECS控制台
使用API
  1. 访问ECS管理控制台 - 实例

  2. 在页面左侧顶部,选择目标资源所在的资源组和地域。地域

  3. 找到目标实例,进入实例详情页,点击全部操作,搜索 修改实例元数据访问信息

  4. 开启是否启用实例元数据访问通道开关,并设置实例元数据访问模式仅加固模式

    image

您可以使用DescribeInstances接口查询HttpTokens(访问实例元数据时是否强制使用加固模式)选择optional 筛选出哪些实例的应用还在使用普通模式访问元数据。

通过API接口ModifyInstanceMetadataOptions修改实例元数据访问模式,设置HttpTokensrequired(强制加固模式)。

为了避免设置为强制加固模式后普通访问模式失败造成业务影响,您可以借助云监控控制台配置告警,提醒您普通模式被拒绝。如果设置为强制加固模式后存在普通模式被拒绝,需要先将实例切换回兼容普通模式和加固模式,然后确保ECS实例不存在普通访问模式后再重新设置。

常见问题

加固模式下,使用命令无法访问实例元数据,如何处理?

请确认命令是否正确。常见错误命令如下:

  • 实例元数据访问凭证的有效期超出范围(1秒~21600秒)

    curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds: 21700"
  • 请求中存在X-Forwarded-For标头

    curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-Forwarded-For: www.ba****.com"
  • 指定的实例元数据访问凭证无效

    curl -H "X-aliyun-ecs-metadata-token: aaa" -v http://100.100.100.200/latest/meta-data/
  • 本页导读 (1)
  • 实例元数据内容列表
  • 元数据访问模式说明
  • 访问模式对比
  • 通过不同模式获取实例元数据
  • 设置强制加固模式获取实例元数据
  • 新创建ECS实例时设置强制加固模式
  • 为已有实例设置强制加固模式
  • 常见问题
文档反馈
phone 联系我们