全部產品
Search
文件中心

Elastic Compute Service:執行個體中繼資料

更新時間:Oct 30, 2025

運行於ECS執行個體的應用,可通過中繼資料服務動態查詢執行個體ID、IP等執行個體中繼資料資訊,避免寫入程式碼。為防範SSRF攻擊導致中繼資料泄露,建議通過加固模式訪問中繼資料(需先擷取存取權杖),並配置執行個體僅允許加固模式訪問,以有效規避普通模式下的安全風險。

擷取執行個體中繼資料

執行個體中繼資料是執行個體自身屬性的集合,包含執行個體ID、網路環境、憑證等關鍵屬性。

方式一:加固模式(推薦)

通過加固模式訪問中繼資料時,需先擷取臨時存取權杖(Token),然後攜帶令牌擷取中繼資料。

Linux

  1. 登入執行個體。

  2. 擷取臨時令牌(Token)。

    TOKEN=`curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds:21600"`
    參數X-aliyun-ecs-metadata-token-ttl-seconds: 令牌有效期間,取值範圍:1~21600(秒)
  3. 攜帶令牌(Token)擷取中繼資料。

    curl -H "X-aliyun-ecs-metadata-token: $TOKEN" http://100.100.100.200/latest/meta-data/instance-id
    命令末尾的instance-id代表擷取執行個體ID,可替換為其他需要擷取的中繼資料項。例如mac(擷取MAC地址)或hostname(擷取主機名稱)。

    成功執行後,終端將僅輸出執行個體ID字串,例如:i-bp1******

Windows

  1. 登入執行個體。

  2. 擷取臨時令牌(Token)。

    $token = Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://100.100.100.200/latest/api/token
    參數X-aliyun-ecs-metadata-token-ttl-seconds: 令牌有效期間,取值範圍1~21600(秒)。
  3. 攜帶令牌(Token)擷取中繼資料。

    Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token" = $token} -Method GET -Uri http://100.100.100.200/latest/meta-data/instance-id
    命令末尾的instance-id代表擷取執行個體ID,可替換為其他需要擷取的中繼資料項。例如mac(擷取MAC地址)或hostname(擷取主機名稱)。

    成功執行後,終端將僅輸出執行個體ID字串,例如:i-bp1******

方式二:普通模式

警告

普通模式是一種不安全的訪問方式,不推薦使用。

  • Linux:

    # 直接發送GET請求擷取執行個體ID
    curl http://100.100.100.200/latest/meta-data/instance-id
  • Windows:

    # 直接發送GET請求擷取執行個體ID。
    Invoke-RestMethod -Uri http://100.100.100.200/latest/meta-data/instance-id -Method Get

開啟僅允許加固模式訪問中繼資料

為防範嚴重安全風險,建議為ECS執行個體啟用僅加固模式,啟用後,僅能通過加固模式訪問中繼資料,任何普通模式訪問都會報錯(403 - Forbidden)。預設情況下,ECS執行個體支援無令牌訪問中繼資料(普通模式),存在被伺服器端請求偽造 (SSRF) 攻擊的嚴重風險。

典型攻擊情境:利用應用程式從外部URL下載圖片的功能,構造惡意請求,誘使伺服器代替其訪問內部中繼資料服務,竊取執行個體綁定的RAM角色的臨時訪問憑證,若該角色許可權過高,攻擊者便可能獲得雲資源控制許可權,甚至接管整個雲帳號。

建立新執行個體時啟用僅加固模式

控制台

自訂購買執行個體時,將進階選項 > 中繼資料訪問模式調整為僅加固模式

使用自訂鏡像建立執行個體時,若無僅加固模式選項,需對鏡像進行升級

CLI

在通過RunInstancesCreateInstance建立執行個體時,可通過配置HttpEndpoint=enabledHttpTokens=required設定執行個體的中繼資料訪問模式為僅加固模式。命令樣本如下:

執行該命令後,會建立一台僅加固模式的Linux執行個體。
aliyun ecs RunInstances \
--region cn-hangzhou \
--RegionId 'cn-hangzhou' \
--ImageId 'aliyun_3_x64_20G_alibase_20250629.vhd' \
--InstanceType 'ecs.g7.large' \
--VSwitchId 'vsw-bp1******trg' \
--SecurityGroupId 'sg-bp1******dgl' \
--SystemDisk.Size 40 \
--SystemDisk.Category cloud_essd \
--HttpEndpoint enabled \
--HttpTokens required

API

在通過RunInstancesCreateInstance建立執行個體時,通過配置HttpEndpoint=enabledHttpTokens=required設定執行個體的中繼資料存取原則為僅加固模式

將已有執行個體升級到僅加固模式

適用範圍

  • Windows執行個體:不支援開啟僅加固模式。強行開啟將導致執行個體初始化異常,並影響主機名稱修改、KMS啟用等多項關鍵功能。

  • Linux執行個體支援升級,但在操作前必須完成下文所述的依賴項排查與改造。

步驟一:排查並升級代碼及依賴項

在切換到僅加固模式之前,執行個體及其中部署的應用,必須確保滿足以下要求:

  • 確保Cloud-init版本不低於23.2.2:可登入執行個體並執行cloud-init --version命令查看目前的版本。若版本過低,切換僅加固模式後將導致執行個體啟動異常,請先升級Cloud-init版本到23.2.2或更高版本。

  • 所有應用代碼/指令碼已通過方式一:加固模式訪問執行個體中繼資料。

    重要

    若應用代碼依賴Credentials庫擷取STS Token配置SDK,需將Credentials依賴升級至支援加固模式的版本

升級完成後,可如何檢測ECS執行個體是否存在普通模式的中繼資料訪問?,在確定不存在普通模式訪問後,開啟執行個體的僅加固模式

步驟二:切換到僅加固模式

控制台

  1. 進入ECS控制台-執行個體,選擇地區與資源群組。

  2. 在操作列單擊image > 修改執行個體中繼資料訪問資訊

  3. 開啟是否啟用執行個體中繼資料訪問通道開關,並設定執行個體中繼資料訪問模式僅加固模式,然後單擊確定

    image

CLI

調用ModifyInstanceMetadataOptions,設定HttpEndpoint=enabledHttpTokens=required切換執行個體中繼資料訪問模式為僅加固模式。命令樣本:

aliyun ecs ModifyInstanceMetadataOptions \
--region cn-hangzhou \
--RegionId 'cn-hangzhou' \
--InstanceId 'i-bp1******ke' \
--HttpEndpoint enabled \
--HttpTokens required

API

調用ModifyInstanceMetadataOptions,設定HttpEndpoint=enabledHttpTokens=required切換執行個體中繼資料訪問模式為僅加固模式

切換完成後,建議持續監控執行個體的中繼資料訪問情況和應用運行狀態,確保業務平穩運行,避免因遺漏改造的應用而導致服務中斷。若出現異常,建議先切換回普通模式和加固模式,優先恢複業務,然後重新進一步步驟一:排查並升級代碼及依賴項

執行個體中繼資料明細

執行個體中繼資料採用類似目錄結構的層級方式進行組織,支援逐級訪問。當訪問一個中繼資料目錄時,將返回其包含的下一級中繼資料條目或子目錄。例如訪問meta-data/instance/,會顯示instance-nameinstance-type等資訊。

分類

中繼資料

說明

樣本

執行個體基本資料

instance-id

執行個體ID。

i-bp13znx0m0me8cquu****

instance/instance-name

執行個體名稱。

iZbp1bfqfsvqzxhmnd5****

hostname

執行個體的主機名稱。

iZbp13znx0m0me8cquu****

instance/instance-type

執行個體規格。

ecs.g6e.large

serial-number

執行個體所對應的序號。

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

region-id

執行個體所屬地區ID。

cn-hangzhou

zone-id

執行個體所屬可用性區域。

cn-hangzhou-i

owner-account-id

執行個體擁有者的阿里雲帳號ID。

1609****

tags/instance/[tagKey]

用於擷取執行個體的指定標籤值,其中[tagKey]為要查詢的標籤鍵。

使用此功能,需先調用ModifyInstanceMetadataOptions介面,將執行個體的InstanceMetadataTags參數設定為 enabled,以啟用此功能。

dev

鏡像資訊

image-id

建立執行個體時所使用的鏡像ID。

aliyun_3_x64_20G_alibase_20210425.vhd

image/market-place/product-code

雲市場鏡像的商品碼。

cmjj01****

image/market-place/charge-type

雲市場鏡像的計費方式。

PrePaid

source-address

鏡像庫地址,主要為yum源或者apt源,供Linux執行個體的包管理軟體擷取更新。

http://mirrors.cloud.aliyuncs.com

基礎網路設定

network-type

網路類型,只支援VPC類型執行個體。

vpc

vpc-id

執行個體所屬VPC ID。

vpc-bp1e0g399hkd7c8q****

vpc-cidr-block

執行個體所屬VPC CIDR段。

192.168.XX.XX/16

vswitch-id

執行個體所屬虛擬交換器ID。

vsw-bp1ygryo03m39xhsy****

vswitch-cidr-block

執行個體所屬虛擬交換器CIDR段。

192.168.XX.XX/24

instance/max-netbw-egress

執行個體規格的出方向內網最大頻寬。單位:Kbit/s。

1228800

dns-conf/nameservers

執行個體的DNS配置。

100.100.XX.XX

ntp-conf/ntp-servers

NTP伺服器位址。

ntp1.aliyun.com

主網卡IP地址

mac

執行個體的MAC地址,如果執行個體存在多個網卡,則只顯示eth0上的MAC地址。

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

private-ipv4

執行個體主網卡的私網IPv4地址。

192.168.XX.XX

public-ipv4

執行個體主網卡的公網IPv4地址。

120.55.XX.XX

eipv4

擷取執行個體的固定公網IPv4地址或主網卡掛載的Elastic IP Addressv4地址。

120.55.XX.XX

彈性網卡詳細資料

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

網卡的標識ID。

[mac]參數需要替換為執行個體的MAC地址(可通過中繼資料mac擷取),下同。

eni-bp1b2c0jvnj0g17b****

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

網卡所屬的VPC ID。

vpc-bp1e0g399hkd7c8q3****

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

網卡所屬的虛擬交換器ID。

vsw-bp1ygryo03m39xhsy****

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

網卡主私人IP地址。

192.168.XX.XX

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

網卡分配的私網IPv4地址清單。

["192.168.XX.XX"]

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

網卡分配的私網IPv4首碼列表。

192.168.XX.XX/28

network/interfaces/macs/[mac]/netmask

網卡對應的子網路遮罩。

255.255.XX.XX

network/interfaces/macs/[mac]/gateway

網卡對應的IPv4網關地址。

192.168.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]/ipv6s

網卡分配的IPv6地址清單,僅支援已配置了IPv6的VPC類型執行個體。

[2408:XXXX:325:a204:1875:217f:184a:e4e]

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

網卡分配的IPv6首碼列表。

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

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

網卡所屬的VPC的IPv6網關地址。

2408:XXXX:325:a204:ffff:ffff:ffff:fff7

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

網卡所屬的虛擬交換器IPv6 CIDR段,僅支援已配置了IPv6的VPC類型執行個體。

2408:XXXX:325:a204::/64

network/interfaces/macs/[mac]/vpc-ipv6-cidr-blocks

網卡所屬的VPC IPv6 CIDR段,僅支援已配置了IPv6的VPC類型執行個體。

[2408:XXXX:325:a200::/56]

雲端硬碟資訊

disks/

雲端硬碟序號。

bp131n0q38u3a4zi****

disks/[disk-serial]/id

雲端硬碟ID。

d-bp131n0q38u3a4zi****

disks/[disk-serial]/name

雲端硬碟名稱。

testDiskName

安全與憑證

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

公有密鑰。僅在執行個體啟動時提供了公有密鑰的情況下可用。

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

ram/security-credentials/[role-name]

與執行個體關聯的RAM角色的臨時安全憑證。[role-name]需替換為角色名稱。憑證在Expiration欄位指定時間後失效,需重新調用介面擷取。

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

執行個體進階屬性

instance/virtualization-solution

ECS虛擬化方案,支援Virt 1.0和Virt 2.0。

ECS Virt

instance/virtualization-solution-version

內部Build號。

2

instance/spot/termination-time

搶佔式執行個體的作業系統設定的停機釋放時間,時區標準為UTC+0,格式為yyyy-MM-ddThh:mm:ssZ。

2020-04-07T17:03:00Z

Windows特定配置

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

常見問題

  • 什麼是SSRF攻擊?僅加固模式防禦SSRF攻擊原理是什嗎?

    SSRF(Server-Side Request Forgery,服務端請求偽造)是一種安全性漏洞,攻擊者通過誘導伺服器發起任意網路請求,從而訪問受保護的內部系統(如中繼資料服務、資料庫等)。例如,攻擊者提交包含http://100.100.100.200/latest/meta-data/的URL,誘使應用抓取並返回中繼資料中的敏感資訊,造成中繼資料泄露。

    預設情況下,ECS執行個體支援無令牌訪問中繼資料(普通模式)。開啟僅加固模式後,會強制啟用令牌驗證機制:用戶端必須先發送PUT請求擷取臨時令牌,並在後續GET請求中攜帶該令牌。由於SSRF攻擊難以發起PUT請求,無法擷取令牌,從而有效阻斷訪問,提升中繼資料安全。

  • 加固模式下,使用命令無法訪問執行個體中繼資料,如何處理?

    常見錯誤命令如下:

    • 執行個體中繼資料訪問憑證的有效期間超出範圍(400 - Missing or Invalid Parameters)

      執行個體中繼資料訪問憑證有效期間範圍為1秒~21600秒,超過這個限制,會報錯400 - Missing or Invalid Parameters

      curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds: 21700"
    • 請求中存在X-Forwarded-For標題(403 - Forbidden)

      curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-Forwarded-For: www.ba****.com"
    • 指定的執行個體中繼資料訪問憑證無效(401 - Unauthorized)

      curl -H "X-aliyun-ecs-metadata-token: aaa" -v http://100.100.100.200/latest/meta-data/
  • 高頻訪問中繼資料服務被限流怎麼辦?

    中繼資料服務存在訪問頻率限制。最佳實務是在應用啟動時擷取一次基本不變的中繼資料項(如instance-id),然後將其緩衝在本地記憶體或檔案中,並設定合理的緩衝到期時間。

  • 將執行個體中繼資料訪問模式修改為僅加固模式後,應用無法正常工作如何排查?

    可能是執行個體中應用或指令碼中仍在使用舊的普通模式。請按照升級到僅加固模式徹底排查並升級依賴普通模式的應用。

  • 能否從本地主機訪問這個中繼資料地址?

    不能。100.100.100.200 是一個本地地址,僅在ECS執行個體內部的虛擬網路介面上有效。任何從執行個體外部發往該地址的請求都無法路由,這是保障中繼資料安全的基礎設計之一。

  • 使自訂鏡像建立執行個體時,不支援選擇僅加固模式,如何解決?

    當使用自訂Linux鏡像建立ECS執行個體時,若發現無法選擇或啟用僅加固模式,這通常意味著該鏡像尚未滿足支援此安全特性的必要條件。需參考以下流程對鏡像進行升級:

    1. 建立臨時執行個體:使用需升級的自訂鏡像,建立一個用於診斷改造的臨時ECS執行個體。

    2. 改造臨時執行個體:在第一步建立的臨時執行個體上,參考將已有執行個體升級到僅加固模式完成以下改造:

      • 升級 Cloud-init:將其升級到 23.2.2 或更高版本。

      • 改造應用/指令碼:修改所有依賴“普通模式”的應用或指令碼,使其適配“加固模式”。

    3. 建立新鏡像並修改屬性:改造完成後,基於這台執行個體建立新版自訂鏡像。然後調用ModifyImageAttribute調整鏡像屬性Features.ImdsSupport=v2

    4. 釋放資源:新鏡像製作完成後,及時釋放用於診斷和改造的臨時執行個體,以節省成本。

  • Credentials工具支援加固模式的版本

    低版本的Credentials不支援通過加固模式訪問中繼資料,在切換到僅加固模式時,會導致其無法通過普通模式擷取中繼資料中的STS Token初始化SDK,造成業務異常。

    在切換前,請升級Credentials依賴至支援加固模式的版本,具體版本要求如下:

    • Java:credentials-java版本 >= 0.3.10

    • Node.js:credentials版本 >= 2.3.1

    • PHP:credentials版本 >= 1.2.0

    • Python:alibabacloud_credentials版本 >= 0.3.6

    • Go:credentials-go版本 >= 1.3.10

  • 如何檢測ECS執行個體是否存在普通模式的中繼資料訪問?

    在排查執行個體中依賴普通模式的應用代碼時,可通過以下兩種方式,檢測並定位到具體進程,以便後續進行改造升級。

    方式一:通過CloudMonitor確認是否存在普通模式訪問

    在CloudMonitor控制台,通過查看ECS中繼資料監控,可以快速確認近期執行個體是否存在普通模式的訪問。

    1. 進入CloudMonitor控制台

    2. 在左側導覽列選擇雲資源監控 > 雲產品監控頁面,搜尋並進入ECS中繼資料監控頁面。

    3. 查看目標執行個體的普通模式訪問成功次數指標。

    4. 若該指標值不為0,證明執行個體存在普通模式對中繼資料的訪問,需要進一步找到依賴該模式的應用,並將其升級至加固模式。

    方式二:通過雲助手外掛程式定位具體進程

    使用雲助手外掛程式,可以輔助在執行個體內部,精準定位在使用普通模式訪問中繼資料的進程。

    適用作業系統

    • Alibaba Cloud Linux 3

    • Alibaba Cloud Linux 3 Pro

    • Anolis OS 8

    • CentOS Stream 8/9

    • CentOS 8

    • Ubuntu: 20/24

    • Debian:10,11,12

    • Fedora 35+

    • AlmaLinux 8/9

    • Rocky Linux 8/9

    • Red Hat Enterprise Linux 8/9

    • Red Hat中需要自行下載rpm包安裝雲助手Agent

    • SUSE 15.1/15.2/15.3/15.4/15.5/15.6

    • OpenSuse 15.2/15.3/15.4/15.5/15.6

    操作步驟

    1. 安裝並啟用雲助手外掛程式

      登入ECS執行個體,執行以下命令安裝並啟動監控服務,啟用後會佔用部分執行個體效能。

      # 部署監控服務
      sudo acs-plugin-manager --exec --plugin ACS-ECS-ImdsPacketAnalyzer
      
      # 查看監控服務狀態
      sudo systemctl status imds_tracer_tool

      p940998

    2. 定位問題進程 運行命令,查看哪些進程仍在以普通模式訪問中繼資料。日誌會顯示相關進程的PID。

      cat /var/log/imds/imds-trace.* | grep WARNING

      p940995

    3. 分析並改造 根據日誌中的PID,找到對應的應用程式或指令碼,並對其進行升級改造,通過加固模式訪問中繼資料。