云服务器 ECS使用实例元数据
网站编辑2020-10-29 09:50:04960
阿里云云服务器 ECS的使用实例元数据相关介绍,包括实例元数据访问模式、获取实例元数据详细内容,典名科技为您优质的服务。典名科技介绍实例元数据的概念,典名科技为您并列出了支持的实例元数据项,您可以使用实例元数据灵活管理或配置ECS实例。
什么是实例元数据?
实例元数据包含了ECS实例在阿里云系统中的基本信息,例如实例ID、IP地址、网卡MAC地址和操作系统类型等。实例还支持动态实例元数据项,动态实例元数据是在实例初次启动以后产生或自定义的数据,目前包括系统事件、实例标识和实例自定义数据。
实例元数据列表
下表包含了ECS实例目前能获取的基本实例元数据项:
| 实例元数据项 | 说明 | 引入版本 |
|---|---|---|
| /dns-conf/nameservers | 实例的DNS配置。 | 2016-01-01 |
| /eipv4 | 实例主网卡挂载的弹性公网IP(IPv4类型)。 | 2016-01-01 |
| /hostname | 实例的主机名。 | 2016-01-01 |
| /instance/instance-type | 实例规格。 | 2016-01-01 |
| /image-id | 创建实例时所使用的镜像ID。 | 2016-01-01 |
| /image/market-place/product-code | 镜像市场镜像的商品码。 | 2016-01-01 |
| /image/market-place/charge-type | 镜像市场镜像的计费方式。 | 2016-01-01 |
| /instance-id | 实例ID。 | 2016-01-01 |
| /mac | 实例的MAC地址,如果实例存在多个网卡,只显示eth0上的MAC地址。 | 2016-01-01 |
| /network-type | 网络类型,只支持VPC类型实例。 | 2016-01-01 |
| /network/interfaces/macs | 网卡的MAC地址列表。 | 2016-01-01 |
| /network/interfaces/macs/[mac]/network-interface-id | 网卡的标识ID,其中[mac]参数需要替换为实例MAC地址。 | 2016-01-01 |
| /network/interfaces/macs/[mac]/netmask | 网卡对应的子网掩码。 | 2016-01-01 |
| /network/interfaces/macs/[mac]/vswitch-cidr-block | 网卡所属的虚拟交换机IPv4 CIDR段。 | 2016-01-01 |
| /network/interfaces/macs/[mac]/vpc-cidr-block | 网卡所属的VPC IPv4 CIDR段。 | 2016-01-01 |
| /network/interfaces/macs/[mac]/private-ipv4s | 网卡分配的私网IPv4地址列表。 | 2016-01-01 |
| /network/interfaces/macs/[mac]/vpc-ipv6-cidr-blocks | 网卡所属的VPC IPv6 CIDR段,仅支持已配置了IPv6的VPC类型实例。 | 2016-01-01 |
| /network/interfaces/macs/[mac]/vswitch-id | 网卡所属安全组的虚拟交换机ID。 | 2016-01-01 |
| /network/interfaces/macs/[mac]/vpc-id | 网卡所属安全组的VPC ID。 | 2016-01-01 |
| /network/interfaces/macs/[mac]/primary-ip-address | 网卡主私有IP地址。 | 2016-01-01 |
| /network/interfaces/macs/[mac]/gateway | 网卡对应的IPv4网关地址。 | 2016-01-01 |
| /instance/max-netbw-egress | 实例规格的出方向内网最大带宽。单位:Kbit/s。 | 2016-01-01 |
| /instance/max-netbw-ingerss | 实例规格的入方向内网最大带宽。单位:Kbit/s。 | 2016-01-01 |
| /network/interfaces/macs/[mac]/ipv6s | 网卡分配的IPv6地址列表,仅支持已配置了IPv6的VPC类型实例。 | 2016-01-01 |
| /network/interfaces/macs/[mac]/ipv6-gateway | 网卡所属的VPC的IPv6网关地址。 | 2016-01-01 |
| /network/interfaces/macs/[mac]/vswitch-ipv6-cidr-block | 网卡所属的虚拟交换机IPv6 CIDR段,仅支持已配置了IPv6的VPC类型实例。 | 2016-01-01 |
| /private-ipv4 | 实例主网卡的私网IPv4地址。 | 2016-01-01 |
| /public-ipv4 | 实例主网卡的公网IPv4地址。 | 2016-01-01 |
| /ntp-conf/ntp-servers | NTP服务器地址。 | 2016-01-01 |
| /owner-account-id | 实例拥有者的阿里云账号ID。 | 2016-01-01 |
| /public-keys | 当前实例所有公钥的列表。 | 2016-01-01 |
| /region-id | 实例所属地域。 | 2016-01-01 |
| /zone-id | 实例所属可用区。 | 2016-01-01 |
| /serial-number | 实例所对应的序列号。 | 2016-01-01 |
| /source-address | Linux实例的包管理软件(主要为Yum源或者apt源)获取更新的镜像库。 | 2016-01-01 |
| /kms-server | Windows实例的KMS激活服务器。 | 2016-01-01 |
| /wsus-server/wu-server | Windows实例的更新服务器。 | 2016-01-01 |
| /wsus-server/wu-status-server | Windows实例的更新状态监控服务器。 | 2016-01-01 |
| /vpc-id | 实例所属VPC ID。 | 2016-01-01 |
| /vpc-cidr-block | 实例所属VPC CIDR段。 | 2016-01-01 |
| /vswitch-cidr-block | 实例所属虚拟交换机CIDR段。 | 2016-01-01 |
| /vswitch-id | 实例所属虚拟交换机ID。 | 2016-01-01 |
| /ram/security-credentials/[role-name] | 实例RAM角色策略所生成的STS临时凭证。只有在实例指定了RAM角色后,您才能获取STS临时凭证。其中[role-name]参数需要替换为实例RAM角色的名称。 说明 STS临时凭证更新时间早于凭证失效前半小时,在这半小时内,新旧STS临时凭证均可以使用。 | 2016-01-01 |
| /instance/spot/termination-time | 抢占式实例的操作系统设置的停机释放时间,时区标准为UTC+0,格式为yyyy-MM-ddThh:mm:ssZ。例如,2018-04-07T17:03:00Z。 | 2016-01-01 |
| /instance/virtualization-solution | ECS虚拟化方案,支持Virt 1.0和Virt 2.0。 | 2016-01-01 |
| /instance/virtualization-solution-version | 内部Build号。 | 2016-01-01 |
| /instance-identity/pkcs7 | 实例标识签名。 | 2016-01-01 |
实例标识用于快速辨识并区分 ECS 实例,可以为应用程序权限控制和软件激活等提供重要的信任基础。实例标识由动态生成的实例标识文档(document)和实例标识签名(signature)组成。
配置类动态实例元数据项
实例自定义数据主要通过不同类型的自定义脚本实现,然后在创建实例时指定,提供了自定义启动行为及传入数据的功能,例如,自动获取软件资源包、开启服务、打印日志、安装依赖包、初始化Web服务环境等其他配置实例环境的操作。实例自定义数据也可以作为普通数据,将某些信息传入实例中,您可以在实例中引用这些数据。
在实例开始运行时(Running),系统首先以管理员或者root权限运行实例自定义数据,其次运行初始化或/etc/init信息。
一、实例元数据访问模式
访问实例元数据时支持普通模式和加固模式。加固模式下,ECS实例基于token鉴权访问实例元数据。加固模式相比普通模式,对SSRF攻击有更好的防范效果。
典名科技介绍实例元数据访问模式
SSRF(Server-Side Request Forgery)是指攻击者利用服务器漏洞,篡改获取资源的请求发给服务端,进而利用服务端访问其所在内网资源的攻击方式。由于访问实例元数据时,服务端通过URL方式分享数据内容,因此可能被恶意篡改用于攻击从外网无法访问的内部系统。针对SSRF攻击,建议您采用加固模式访问实例元数据。
普通模式和加固模式的对比如下:
| 对比项 | 普通模式 | 加固模式 |
|---|---|---|
| 交互方式 | 请求/响应 | 会话 |
| 安全校验 | 同VPC内源IP地址校验 | 基于token鉴权 |
| 访问方法 | 通过curl命令直接访问endpoint | 通过curl命令访问endpoint,请求中必须包含token标头 |
普通模式下,每次访问实例元数据时都需要建立新连接,且校验方式简单,请求完毕即释放连接。如果实例元数据服务器遭受攻击泄露RAM角色等敏感数据,会威胁到您的数据和资产。
加固模式下,ECS实例和实例元数据服务器间建立一个会话,并在访问实例元数据时通过token验证身份,超过有效期后关闭会话并清除token。访问流程详情请参见加固模式访问流程。token具有以下特点:
仅适用于一台ECS实例,将token文件复制到其它ECS实例使用,会被拒绝访问。
必须定义token有效期,范围为1秒~21600秒(6小时)。在有效期内可以重复使用,方便您平衡安全性和用户体验。
不接受代理访问,如果创建token的请求中包含X-Forwarded-For标头,则拒绝签发token。
不限制向ECS实例签发的token数量。
加固模式应用场景
在以下场景中,建议您利用加固模式访问实例元数据,防范SSRF攻击,提高应用安全性。
自建网络防火墙应用
自建反向代理应用
自建并提供转码、下载服务的Web应用
加固模式访问流程
以下为加固模式下创建token并使用token访问实例元数据的流程,但执行时可以通过一条curl命令实现。
1、使用PUT方法发起创建token请求。必须指定token有效期,标头格式为X-aliyun-ecs-metadata-token-ttl-seconds:
2、实例元数据服务器签发token。
3、访问实例元数据时填入实例元数据服务器endpoint和token标头。token标头格式为X-aliyun-ecs-metadata-token: $TOKEN。
4、鉴权通过,实例元数据服务器返回实例元数据信息。
二、如何为Linux实例和Windows实例获取实例元数据







