实例元数据服务是什么
实例元数据服务是实例内部可以访问的特殊 HTTP 端点,用来查询自身信息:实例 ID、地域与可用区、内网 IP、网卡信息,以及实例绑定的角色临时凭证。各厂商地址不同:阿里云是 100.100.100.200,腾讯云是 169.254.0.23,华为云与 AWS、OpenStack 一样用 169.254.169.254。它是云上程序自我识别、免 AK 访问云服务的基础设施。
基本信息
| 阿里云 | http://100.100.100.200/latest/meta-data/ |
|---|---|
| 腾讯云 | http://169.254.0.23/latest/meta-data/ |
| 华为云 | http://169.254.169.254/latest/meta-data/ |
| 主要用途 | 识别实例身份、获取角色临时凭证、初始化脚本读取环境信息 |
| 安全风险 | SSRF 漏洞可能被利用来读取凭证,应用侧不能代用户请求该端点 |
典型使用场景
- 初始化脚本按实例 ID、可用区分支执行不同配置,无需人工传参
- 程序自动识别运行环境(地域、可用区),不用把参数写死在配置文件里
- 通过实例角色端点获取 STS 临时凭证,实现免 AK 访问对象存储等服务
- 资产与监控系统自动采集实例归属信息,减少人工登记错误
- 多地域部署时读取地域标识,选择就近的存储 Endpoint 与可用区
查询实例信息(阿里云实例内)
查询实例信息(阿里云实例内)
curl http://100.100.100.200/latest/meta-data/instance-id # 实例 ID
curl http://100.100.100.200/latest/meta-data/region-id # 所在地域
curl http://100.100.100.200/latest/meta-data/private-ipv4 # 内网 IP
curl -m 2 http://100.100.100.200/latest/meta-data/ # 列出可查询的字段目录
# 访问超时或拒绝说明元数据服务被禁用或策略拦截,需要排查实例与网络配置常见字段与用途
| 字段 | 含义 | 典型用途 |
|---|---|---|
| instance-id | 实例唯一标识 | 监控上报、资产登记、去重 |
| region-id | 所在地域 | 选择就近的 Endpoint 与依赖服务 |
| zone-id | 所属可用区 | 多可用区部署与容灾拓扑判断 |
| private-ipv4 | 内网 IP 地址 | 服务注册、配置生成、白名单 |
| ram/security-credentials/角色名 | 角色临时凭证 | 免 AK 调用云服务 API |
元数据端点可能被 SSRF 漏洞利用:应用侧禁止代理访问这些内网地址,也不要把用户可控的 URL 请求转发到元数据服务,否则等于把临时凭证交给攻击者。
是否直接关闭元数据服务要谨慎:依赖它获取凭证与实例信息的组件会一并失效。多数厂商提供更细的加固手段(如限制访问来源、启用带令牌校验的模式),优先用加固而不是一刀切禁用。