存取金鑰(AccessKey)是您調用阿里雲API時用於完成身分識別驗證的憑證,AccessKey泄露會對該帳號下所有資源的安全帶來威脅,產生非預期的費用以及惡意勒索等,嚴重情況下甚至可能給阿里雲或其他使用者帶來危害。本文為您介紹疑似泄露的AccessKey的處理方案,避免AccessKey泄露造成更大範圍的身份憑證冒用風險。
阿里雲安全措施
阿里雲一直致力於提升雲端服務的安全性,並盡最大努力支援您更好地保護您的賬戶及資產安全。當阿里雲根據外部線索,掌握到您的AccessKey已經被公開,阿里雲將通過您預留的連絡方式及時通知您。同時,為保障您的業務及資料安全,阿里雲將對該AccessKey進行限制性保護,禁止該AccessKey調用部分雲產品的高危許可權API,詳情請參見AccessKey限制性保護說明。
請您務必及時關注簡訊、郵箱、站內訊息等渠道的通知,並結合業務實際需求進行及時處置,同時關注您帳號下的雲資源異動,以免影響業務的正常運行。
阿里雲無法也不可能掌握您全部AccessKey的使用安全情況。根據安全責任共擔模型,雲上的安全由您和阿里雲共同分擔。其中AccessKey屬於雲客戶的帳號和身份訪問憑證,相關安全責任仍需要由您負責承擔,請您務必關注。
AccessKey泄露導致RAM使用者無法登入或提示帳號被凍結怎麼辦?
當阿里雲安全系統檢測到AccessKey存在泄露風險後,會自動觸發保護機制,限制關聯RAM使用者登入控制台。您可能會遇到Authentication.Block.AccountFrozen、"當前帳號不允許登入"等報錯資訊。
處理方法如下:
使用阿里雲帳號(主帳號)登入RAM控制台,立即禁用或刪除泄露的AccessKey,然後建立新的AccessKey完成輪轉。僅禁用AccessKey可能不足以釋放保留,必須完成刪除或輪轉操作。
完成AccessKey處置後,若RAM使用者仍無法登入,請提交工單申請解除安全風控限制。
阿里雲帳號(主帳號)AccessKey疑似泄露手動處理措施
若確認AccessKey不在使用中,請訪問AccessKey管理頁面,直接禁用和刪除AccessKey。
若確認AccessKey在使用中,請訪問AccessKey管理頁面,輪轉AccessKey。
您可以先建立一個新的AccessKey,妥善保管AccessKey Secret。將原AccessKey替換為新的AccessKey,驗證正常運行後,禁用和刪除AccessKey。
RAM使用者AccessKey疑似泄露手動處理措施
若確認AccessKey不在使用中,訪問RAM控制台,直接禁用和刪除RAM使用者的AccessKey。具體操作,請參見禁用RAM使用者的AccessKey、刪除RAM使用者的AccessKey。
禁用AccessKey時,系統會要求您完成安全驗證(多因素認證MFA),驗證通過後AccessKey狀態才會變更為已禁用。如果該AccessKey最近60天內有調用記錄,系統會提示禁用可能造成業務中斷,請確認無業務依賴後再繼續操作。
若確認AccessKey在使用中且可以直接輪轉,請儘快輪轉。
建立新的AccessKey時,系統會彈出使用情境選擇對話方塊,請從CLI、本地開發、ECS、ACK、第三方、其他中選擇實際使用情境。您可以建立新的AccessKey,妥善保管AccessKey Secret。將原AccessKey替換為新的AccessKey,驗證正常運行後,禁用和刪除舊的AccessKey。具體操作,請參見輪轉RAM使用者的AccessKey。
刪除AccessKey時,需手動輸入AccessKey ID完成二次確認。如果該AccessKey禁用未滿7天,系統會提示刪除可能造成業務中斷,請確認無業務依賴後再繼續操作。刪除後AccessKey不會立即銷毀,而是移入資源回收筒,保留30天后自動清理,如需恢複請在保留期內操作。
若確認AccessKey在使用中且短期內無法順利輪轉,為降低被盜用的影響,您可以按照下圖所示步驟進行處置。完成後務必儘快輪轉。
步驟一:縮小AccessKey許可權
請先明確業務情境,在不影響當前業務啟動並執行前提下,儘快縮小疑似泄露的AccessKey許可權,限制高風險許可權,降低業務和資費受損的風險。在AccessKey禁用和刪除之前請不要解除該策略(限制高風險許可權)的授權。
建議限制的高風險許可權,例如:禁止該RAM使用者在存取控制(RAM)中建立新的RAM使用者及授權,禁止ECS、RDS、OSS、SLS資源的釋放,禁止傳送簡訊等。
以下提供一個禁用高風險許可權的自訂權限原則樣本,請您充分評估影響,根據業務情況設定。
{ "Version": "1", "Statement": [ { "Effect": "Deny", "Action": [ "ram:AddUserToGroup", "ram:AttachPolicyToGroup", "ram:AttachPolicyToRole", "ram:AttachPolicyToUser", "ram:ChangePassword", "ram:CreateAccessKey", "ram:CreateLoginProfile", "ram:CreatePolicyVersion", "ram:CreateRole", "ram:CreateUser", "ram:DetachPolicyFromUser", "ram:PassRole", "ram:SetDefaultPolicyVersion", "ram:UpdateAccessKey", "ram:SetPasswordPolicy", "ram:UpdateRole", "ram:UpdateLoginProfile", "ram:UpdateUser" ], "Resource": "*" }, { "Effect": "Deny", "Action": [ "ecs:DeleteInstance", "ecs:DeleteInstances", "ecs:DeregisterManagedInstance", "ecs:ReleaseDedicatedHost" ], "Resource": "*" }, { "Effect": "Deny", "Action": [ "rds:DeleteAccount", "rds:DeleteDatabase", "rds:DeleteDBInstance", "rds:DestroyDBInstance" ], "Resource": "*" }, { "Effect": "Deny", "Action": [ "oss:DeleteBucket", "oss:DeleteObject", "oss:PutBucketAcl", "oss:PutBucketPolicy" ], "Resource": "*" }, { "Effect": "Deny", "Action": [ "log:DeleteLogStore", "log:DeleteProject", "log:PutProjectPolicy", "log:DeleteProjectPolicy" ], "Resource": "*" }, { "Effect": "Deny", "Action": [ "dysms:CreateProductNew", "dysms:CreateSmsTemplateNew", "dysms:AddSmsTemplate", "dysms:SendSms", "dysms:SendBatchSms" ], "Resource": "*" } ] }具體操作,請參見建立自訂權限原則、管理RAM使用者的許可權。
建議您明確AccessKey所需要的業務許可權,將不需要的許可權全部移除。
步驟二:開啟RAM使用者的MFA
按照最佳實務,建議您阿里雲帳號(主帳號)下所有用於控制台訪問的RAM使用者開啟多因素認證(MFA)。
設定主帳號下的RAM使用者登入控制台必須開啟MFA。
具體操作,請參見管理RAM使用者登入設定。
為使用者綁定MFA裝置。
具體操作,請參見RAM使用者自行綁定MFA裝置。
步驟三:檢查是否存在AccessKey異常操作
檢查AccessKey是否存在異常操作行為,以及排查是否有其他疑似泄露的身份。重點關注異常的訪問IP、非業務需要的資源建立或刪除操作等。
泄露期間需重點排查的危險操作包括:
身份與許可權變更:建立RAM使用者(
CreateUser)、建立AccessKey(CreateAccessKey)、附加權限原則(AttachPolicyToUser)、建立角色(CreateRole)、開通控制台登入(CreateLoginProfile)等。CreateLoginProfile、AttachPolicyToUser、CreateUser等事件通常意味著攻擊者正在建立後門帳號或提權,需重點核查調用源IP及UserAgent。資源刪除與釋放:刪除ECS執行個體(
DeleteInstance)、刪除RDS執行個體(DeleteDBInstance)、刪除OSS儲存空間(DeleteBucket)等。資料外泄操作:修改OSS儲存空間存取權限(
PutBucketAcl)、修改OSS儲存空間策略(PutBucketPolicy)等。異常調用行為:短時間內大量發起API請求、從非常用IP地址或地區發起操作、非工作時間段的大量操作等。
檢查方式:在RAM控制台尋找RAM使用者的AccessKey列表,在列表中查看操作記錄,或在Action Trail控制台的AccessKey 審計頁面直接輸入AccessKey ID查詢操作記錄。
除Action Trail外,您還可以登入Security Center控制台查看AccessKey泄露警示詳情,擷取被惡意建立的具體RAM使用者名稱、異常調用IP等資訊。
通過Action Trail的AccessKey審計功能,您可以查看指定AccessKey在最近90天內的所有API調用記錄,包括調用時間、操作名稱、源IP地址和訪問的雲端服務等資訊。具體操作,請參見使用Action Trail監控AccessKey的使用。
說明未接入Action Trail的資料類動作記錄,如OSS、SLS等,需要使用各雲產品的日誌功能查詢。
您可以通過安全郵箱、站內信通知確認具體泄露的AccessKey ID。若通知中僅包含一個AccessKey且無其他警示,則通常僅該AccessKey存在泄露。
進一步排查除了已知存在泄露風險的AccessKey之外,是否還有其他RAM使用者和AccessKey存在異常操作行為。若發現存在異常行為,與相關人員確認操作是否由本人執行,若存在疑似泄露風險,建議按以下方式處理:
RAM使用者如果需要繼續使用,建議您立即修改RAM使用者密碼並開啟多因素認證(MFA)。
RAM使用者並非正常建立的,或確認為閑置使用者不需要繼續使用的,可進行刪除。RAM使用者刪除後會進入資源回收筒,觀察業務是否受到影響,如有影響該RAM使用者可快速恢複。
AccessKey異常操作,參照上文所述方法進行許可權限制,然後進行輪轉。
排查AccessKey的使用範圍
Action Trail記錄的源IP僅能反映已接入管控事件(如OSS的
GetService、GetBucketInfo等管理類操作)的調用記錄;未接入Action Trail的資料類操作(如OSS對象上傳、下載)預設不會記錄,因此僅憑源IP列表無法還原AccessKey的全部使用範圍。禁用或刪除原AccessKey之前,請逐一確認以下環境中是否仍配置了該AccessKey:本地開發機:開發人員的環境變數、SDK設定檔、CLI憑證檔案等。
CI/CD流水線:構建任務的環境變數、憑證倉庫、部署指令碼等。
第三方應用與SaaS服務:授權給外部平台用於調用阿里雲API的憑證。
容器與鏡像:容器鏡像層、Kubernetes Secret、編排模板中的憑證配置等。
定時任務與營運指令碼:伺服器上的crontab、備份指令碼、監控採集指令碼等。
簡訊等訊息通知類服務的調用方:例如調用簡訊服務傳送簡訊的業務應用。
請確認以上環境全部替換為新的AccessKey並驗證業務正常運行後,再禁用或刪除原AccessKey,避免遺漏調用方導致業務中斷。
步驟四:檢查是否存在異常費用
在費用與成本檢查是否存在異常的費用產生,結合上一步結果,針對性採取產品的防護措施。
僅刪除惡意建立的RAM使用者不足以消除泄露風險。核心風險在於阿里雲帳號(主帳號)或高許可權RAM使用者的AccessKey已泄露,攻擊者可利用該AccessKey持續建立新使用者或提權。您必須執行AccessKey輪轉(建立新AccessKey替換舊AccessKey,並禁用和刪除舊AccessKey),同時排查AccessKey泄露途徑(如代碼、設定檔、伺服器安全等),否則風險將持續存在。
員工離職情境AccessKey回收
員工離職後,需及時檢查並回收其名下的AccessKey,避免遺留的憑證被濫用。請按以下步驟操作:
登入RAM控制台,在使用者列表中找到已離職員工對應的RAM使用者。
單擊該使用者,進入使用者詳情頁,切換到憑證管理頁簽。
檢查該使用者名稱下所有AccessKey的狀態。
對狀態為已啟用的AccessKey,先執行禁用操作。禁用需通過安全驗證(多因素認證MFA),如果該AccessKey最近60天內有調用記錄,系統會提示禁用可能造成業務中斷。
確認該AccessKey無業務依賴後,執行刪除。刪除時需手動輸入AccessKey ID完成二次確認,刪除後AccessKey會移入資源回收筒,保留30天后自動清理。
為什麼AccessKey儲存在私人倉庫、Nacos或離線資料庫中仍被檢測為泄露?
即使您認為AccessKey已安全儲存,仍可能通過以下常見途徑被檢測或竊取:
代碼倉庫:私人倉庫若曾公開、被Fork或共同作業者上傳至其他位置,AccessKey仍可被掃描服務檢測到。
配置中心(如Nacos):若未做許可權控制、存在漏洞或伺服器被入侵,明文儲存的AccessKey可能被竊取。
離線儲存:若讀取AccessKey的應用或指令碼曾連網調用API,密鑰可能在傳輸過程中被截獲或被日誌記錄。
應用漏洞:RCE(遠程代碼執行)或任意檔案讀取漏洞可導致伺服器內設定檔中的AccessKey被竊取。
防範建議:
使用Credentials工具管理認證,避免寫入程式碼AccessKey。
配置AccessKey的網路訪問限制(IP白名單)。
避免將AccessKey直接寫入原始碼或設定檔。
泄露後子帳號安全使用規範
主帳號AccessKey泄露後,按以下規範恢複安全使用:
建立獨立子帳號:不要使用主帳號建立AccessKey。在RAM控制台建立獨立的RAM使用者,僅授予所需最小許可權。建立時請注意以下實測要點:
選擇訪問方式時,介面文案已由“OpenAPI 呼叫訪問”更新為使用永久 AccessKey 訪問。
勾選我確認必須建立 AccessKey 確認框後,需完成安全驗證(多因素認證 MFA)才能繼續建立。
AccessKey Secret 僅在建立時顯示一次,關閉對話方塊後無法重新查詢,請立即妥善儲存。
授權時,
AdministratorAccess會標記為“高風險”;請遵循最小許可權原則,僅授權該 RAM 使用者所需產品的最小許可權(如AliyunOSSReadOnlyAccess),避免授予AdministratorAccess。如非長期免密調用情境,控制台推薦優先使用 STS Token 臨時憑證替代永久 AccessKey,可進一步降低泄露風險。
AccessKey許可權範圍:子帳號AccessKey許可權僅限所附加的權限原則範圍,不繼承主帳號的全部許可權。
檢查代碼中的AccessKey配置:檢查代碼中所有AccessKey配置參數,刪除明文AccessKey。如代碼已上傳至GitHub等第三方代碼託管平台,可通過Security Center的AK泄露檢測功能排查。
使用安全憑證儲存:使用環境變數或Key Management Service(KMS)儲存AccessKey,避免寫入程式碼。具體操作,請參見使用訪問憑據訪問阿里雲OpenAPI最佳實務。
發現非本帳號的AccessKey泄露,能否申請緊急禁用?
由於隱私保護及許可權隔離,阿里雲無法直接根據泄露的AccessKey禁用非當前登入帳號下的密鑰。建議按以下方式處理:
若知曉AccessKey歸屬帳號,應聯絡該帳號持有人自行處理。
若擁有該AccessKey對應帳號的許可權,可通過
DeleteAccessKeyAPI或RAM控制台自行刪除。跨帳號或非己方帳號的泄露AccessKey,需通過法律或安全合規渠道協調處理。