ECS執行個體中繼資料是指執行個體ID、VPC資訊、網卡資訊等執行個體屬性資訊,支援在ECS執行個體內部通過訪問中繼資料服務(Metadata Service)擷取。通過該擷取方式,您無需登入控制台或調用API,在執行個體內部即可訪問執行個體資訊,可以更便捷、安全地配置或管理正在啟動並執行執行個體或執行個體上的程式。
執行個體中繼資料內容列表
中繼資料服務支援擷取主機名稱(hostname)、執行個體規格、執行個體名稱、鏡像ID等資訊,展開下方表格查看所有中繼資料。
中繼資料訪問模式說明
中繼資料訪問模式有普通模式和加固模式兩種方式,其訪問方式見擷取執行個體中繼資料。兩種模式對比見下表。
推薦您使用加固模式來訪問執行個體中繼資料。因為普通模式是通過IP地址鑒權,這意味著攻擊者可以偽造請求的源IP地址,繞過IP地址鑒權,進行SSRF攻擊,造成執行個體中繼資料資訊泄露風險。
使用加固模式訪問需確保執行個體的cloud-init版本為23.2.2及以上。如果已有執行個體的cloud-init版本不滿足要求,您可以升級cloud-init版本,從而支援加固模式。檢查cloud-init版本及升級方法,請參見安裝cloud-init。
訪問模式對比
對比項 | 普通模式 | 加固模式 |
互動方式 | 請求/響應 | 會話 |
鑒權方式 | 同VPC內源IP地址鑒權 | 同VPC內源IP地址鑒權+執行個體中繼資料訪問憑證鑒權 該訪問憑證具有以下特點:
|
查看方法 | 無需任何訪問憑證即可通過命令直接存取endpoint | 需要先擷取中繼資料訪問憑證進行鑒權,再訪問endpoint,提高了中繼資料訪問的安全性 |
安全層級 | 較低 請求通過IP地址鑒權,意味著攻擊者可以偽造請求的源IP地址,繞過IP地址鑒權,進行SSRF攻擊,造成執行個體中繼資料資訊泄露風險。 | 較高 訪問中繼資料之前,必須先擷取有效中繼資料訪問憑證進行身分識別驗證和授權,該訪問憑證只能在ECS執行個體內部產生,在特定的ECS執行個體上使用,且具有時效性,攻擊者難以通過猜測或偽造的方式產生,可以防範大多數SSRF攻擊。 |
通過不同模式擷取執行個體中繼資料
加固模式
Linux執行個體
# 擷取中繼資料訪問憑證,需設定有效期間,不可包含標題X-Forwarded-For,100.100.100.200表示執行個體中繼資料服務的IPv4地址 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執行個體(PowerShell)
# 擷取中繼資料訪問憑證,需設定有效期間,不可包含標題X-Forwarded-For,100.100.100.200表示執行個體中繼資料服務的IPv4地址 $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執行個體
#100.100.100.200表示執行個體中繼資料服務的IPv4地址 curl http://100.100.100.200/latest/meta-data/<metadata>
Windows執行個體(PowerShell)
#100.100.100.200表示執行個體中繼資料服務的IPv4地址 Invoke-RestMethod http://100.100.100.200/latest/meta-data/<metadata>
<metadata>
:需替換為具體要查詢的執行個體中繼資料,詳情請參見執行個體中繼資料內容列表。
ECS執行個體高頻訪問中繼資料服務器擷取中繼資料時,可能會導致限流。建議快取資料(如RAM憑證)並在到期前重新整理。
設定強制加固模式擷取執行個體中繼資料
為了進一步增強安全性,阿里雲支援您設定執行個體中繼資料訪問模式為僅加固模式(強制加固模式)。設定後,普通模式訪問的流量會被拒絕,以防範普通模式訪問可能帶來的大多數SSRF相關風險。以下為您詳細說明兩種情境下設定的具體方法。
若您在ECS執行個體中部署的程式使用credentials工具擷取執行個體RAM角色的臨時身份憑證,切換時可能會對您的業務產生影響。為了避免業務受到影響,您需要升級credentials工具的版本。credentials支援強制加固模式的版本資訊,請參見通過Credentials工具擷取臨時訪問憑證。
新建立ECS執行個體時設定強制加固模式
使用ECS控制台
在執行個體購買頁,展開進階選項地區,設定中繼資料訪問模式為僅加固模式(強制加固模式)。
只有當您使用的鏡像支援通過加固模式訪問中繼資料時,在購買ECS執行個體頁面可以選擇僅加固模式。
如果您在控制台建立執行個體時無法選擇僅加固模式,則可以先建立執行個體,然後將cloud-init版本升級到23.2.2及以上,再為已有執行個體設定強制加固模式。
阿里雲最新發行的部分公用鏡像已支援通過加固模式訪問(指鏡像包含的cloud-init版本滿足23.2.2及以上)。您可以通過 DescribeImages - 查詢鏡像資源查看鏡像ImdsSupport
屬性,鏡像ImdsSupport
屬性為v2
時表示鏡像支援加固模式訪問中繼資料。
使用API
通過API介面RunInstances或CreateInstance建立執行個體時,設定HttpTokens
參數為required
,表示執行個體中繼資料的訪問模式為僅加固模式(強制加固模式)。
只有當您使用的鏡像支援通過加固模式訪問中繼資料時,調用上述介面建立執行個體時才能啟動成功。
如果啟動失敗,則可以先設定HttpTokens
參數為optional
啟動執行個體,然後將cloud-init版本升級到23.2.2及以上,再為已有執行個體設定強制加固模式。
阿里雲最新發行的部分公用鏡像已支援通過加固模式訪問(指鏡像包含的cloud-init版本滿足23.2.2及以上)。您可以通過 DescribeImages - 查詢鏡像資源查看鏡像ImdsSupport
屬性,鏡像ImdsSupport
屬性為v2
時表示鏡像支援加固模式訪問中繼資料。
為已有執行個體設定強制加固模式
對於已經部署業務的ECS執行個體,設定強制加固模式會導致原來使用普通模式訪問中繼資料的請求被拒絕。建議您修改應用代碼為加固模式訪問後,確保ECS執行個體不存在普通訪問模式,再將執行個體中繼資料訪問模式設定為強制加固模式。
步驟一:修改應用代碼為加固模式訪問
定位出哪些執行個體需要修改為加固模式。
方式一:在CloudMonitor控制台的 頁面,搜尋ECS中繼資料。排查出監控圖表中普通模式訪問成功次數大於0的ECS執行個體,表示當前執行個體記憶體在應用使用普通模式訪問中繼資料服務,這些ECS執行個體需要切換為強制加固模式。為了保證資料準確,建議您設定查看時間長度為14天或者更長。
方式二:使用ACS-ECS-ImdsPacketAnalyzer工具排查出執行個體中哪些進程使用普通模式訪問執行個體中繼資料。
該工具目前只支援Linux作業系統,因為Linux作業系統執行個體在建立時預設預裝了雲助手外掛程式,而雲助手預設提供了
ACS-ECS-ImdsPacketAnalyzer
外掛程式,但存在作業系統限制。
確保上述定位出來的執行個體cloud-init版本為23.2.2及以上。如果已有執行個體的cloud-init版本不滿足要求,您可以升級cloud-init版本,從而支援加固模式。檢查cloud-init版本及升級方法,請參見安裝cloud-init。
修改應用代碼,先擷取中繼資料訪問憑證Token,再將Token設定到要求標頭中擷取中繼資料,詳情請參見通過加固模式擷取執行個體中繼資料。
確保代碼不存在普通訪問模式。
在CloudMonitor控制台的ECS中繼資料頁面,待需要切換訪問模式的ECS執行個體監控圖表中普通模式訪問成功次數顯示為暫無資料(表示次數為0),您就可以執行步驟二。否則可能導致切換到強制加固模式後普通訪問被拒絕,造成業務影響。為了保證資料準確,建議您設定查看時間長度為14天或者更長。
步驟二:設定執行個體中繼資料訪問模式為強制加固模式
使用ECS控制台
在頁面左側頂部,選擇目標資源所在的資源群組和地區。
找到目標執行個體,進入執行個體詳情頁,點擊全部操作,搜尋 修改執行個體中繼資料訪問資訊。
開啟是否啟用執行個體中繼資料訪問通道開關,並設定執行個體中繼資料訪問模式為僅加固模式。
使用API
您可以使用DescribeInstances介面查詢HttpTokens
(訪問執行個體中繼資料時是否強制使用加固模式)選擇optional
篩選出哪些執行個體的應用還在使用普通模式訪問中繼資料。
通過API介面ModifyInstanceMetadataOptions修改執行個體中繼資料訪問模式,設定HttpTokens
為required
(強制加固模式)。
為了避免設定為強制加固模式後普通訪問模式失敗造成業務影響,您可以藉助CloudMonitor控制台配置警示,提醒您普通模式被拒絕。如果設定為強制加固模式後存在普通模式被拒絕,需要先將執行個體切換回相容普通模式和加固模式,然後確保ECS執行個體不存在普通訪問模式後再重新設定。