掌握安全獲取 EC2實(shí)例元數(shù)據(jù)的核心技能。在 AWS 云環(huán)境中,EC2實(shí)例元數(shù)據(jù)(如實(shí)例 ID、公網(wǎng) IP、AMI 類(lèi)型、安全組規(guī)則等)是自動(dòng)化運(yùn)維、日志關(guān)聯(lián)和安全審計(jì)的關(guān)鍵信息。本實(shí)驗(yàn)旨在通過(guò) AWS 控制臺(tái),完成以下目標(biāo):使用 IMDSv2令牌機(jī)制防止未授權(quán)訪(fǎng)問(wèn),通過(guò)獲取的實(shí)例 ID 動(dòng)態(tài)配置應(yīng)用服務(wù)。
EC2實(shí)例元數(shù)據(jù)存儲(chǔ)在 http://169.254.169.254的虛擬接口中,包含兩類(lèi)信息。實(shí)例屬性:如 instance-id、public-ipv4、ami-id,用于標(biāo)識(shí)實(shí)例身份和環(huán)境;動(dòng)態(tài)令牌:IMDSv2通過(guò)會(huì)話(huà)令牌(Token)限制訪(fǎng)問(wèn),防止 CSRF 攻擊或內(nèi)部數(shù)據(jù)泄露。
本次采用 AWS Console 界面完成作業(yè)。
注意:根據(jù)項(xiàng)目的具體情況,可以采用不同的實(shí)施方法。比如使用命令行(CLI)部署、代碼部署 (CloudFomation、Terraform 等)、以及其它開(kāi)發(fā)語(yǔ)言(SDK)完成作業(yè)。
步驟一:通過(guò) SSH 登錄 EC2實(shí)例
在 AWS 控制臺(tái)進(jìn)入 EC2服務(wù),選擇目標(biāo)實(shí)例,點(diǎn)擊“連接”→“SSH 客戶(hù)端”;
復(fù)制提供的 SSH 命令(如 ssh -i "key.pem" ec2-user@<公網(wǎng) IP>),在本地終端執(zhí)行并登錄。
步驟二:生成 IMDSv2令牌并查詢(xún)?cè)獢?shù)據(jù)
執(zhí)行以下命令獲取令牌(TTL 設(shè)為6小時(shí)):
TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600")
echo "Instance ID: $(curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/instance-id)"
echo "Public IP: $(curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/public-ipv4)"
步驟三:通過(guò) AWS 控制臺(tái)直接查看元數(shù)據(jù)
返回 AWS 控制臺(tái),進(jìn)入 EC2實(shí)例的“描述”選項(xiàng)卡;
向下滾動(dòng)至“元數(shù)據(jù)”部分,點(diǎn)擊“查看完整元數(shù)據(jù)”;
在彈出的 IMDSv2終端中粘貼之前生成的令牌,瀏覽所有可用字段(如 placement/availability-zone、security-groups)。
1. 對(duì)比控制臺(tái)顯示的實(shí)例 ID 與命令行輸出結(jié)果,確認(rèn)兩者一致,將獲取的實(shí)例 ID 寫(xiě)入臨時(shí)文件(如/tmp/instance_info.txt)。
2. 嘗試不使用令牌直接訪(fǎng)問(wèn)元數(shù)據(jù)(如 curl http://169.254.169.254/latest/meta-data/instance-id),返回401 Unauthorized 錯(cuò)誤。
3. 檢查 CloudTrail 日志,確認(rèn)所有元數(shù)據(jù)訪(fǎng)問(wèn)請(qǐng)求均攜帶有效令牌。
通過(guò)本實(shí)驗(yàn),可以快速掌握安全獲取 EC2元數(shù)據(jù)的方法,并理解其在自動(dòng)化運(yùn)維中的關(guān)鍵作用。