AI應用常運行於GPU節點並處理敏感性資料,其特有的模型檔案格式(如pickle)和複雜的軟體供應鏈使其成為資料竊取、算力濫用和遠程代碼執行的風險目標。建議為AI應用構建全鏈路的防禦體系:構建階段確保源頭可信,部署階段實施許可權最小化,運行階段進行持續監測。
安全風險及攻擊路徑
安全風險介紹
與傳統應用相比,AI應用面臨獨特的安全挑戰,需重點關注以下風險:
核心資產風險:資料與模型
資料泄露與投毒:AI應用通常被授予高密級訓練資料的存取權限。一旦容器或Pod被攻陷,攻擊者可直接讀取掛載的資料卷或環境變數中的憑證,導致敏感性資料外泄;同時可通過篡改訓練資料集發起資料投毒攻擊,破壞模型完整性與業務可靠性。
模型檔案執行風險:
pickle等序列化格式在還原序列化過程中允許執行任意Python代碼。若AI應用載入來源不可信、未經校正或已被篡改的模型檔案,將直接觸發遠程代碼執行(RCE),使攻擊者獲得容器內完整控制權。
算力資源濫用風險
AI應用常部署在NVIDIA A100、H100等高效能GPU節點上,其高計算密度與長期空閑特徵易被攻擊者識別為挖礦目標。惡意程式可利用GPU加速雜湊運算,導致資源被惡意佔用併產生高額費用。由於AI訓練本身具有高GPU利用率,此類異常行為難以通過常規業務指標及時發現。
基礎設施與供應鏈風險
Kubernetes與機器學習工具鏈(資料管道、模型註冊表)的結合擴大了攻擊面。同時,AI應用依賴的公用基礎鏡像(Docker Hub)、預訓練模型(Hugging Face)或第三方庫可能存在未修複漏洞或惡意植入,構成典型的軟體供應鏈攻擊進入點。
典型攻擊路徑
理解攻擊者常用滲透手段,有助於針對性加固防禦體系。AI叢集常見攻擊路徑如下。
API介面攻擊:攻擊者通過調用公開的推理API發起提示注入(Prompt Injection),誘導模型泄露訓練資料片段或系統提示詞;或發送超大尺寸映像、長文本等畸形請求,耗盡GPU顯存與記憶體資源,造成拒絕服務(DoS),影響正常業務可用性。
容器鏡像供應鏈攻擊:攻擊者在公用鏡像倉庫發布偽裝成流行架構(如PyTorch、TensorFlow)的惡意鏡像,或向Hugging Face等模型平台上傳含後門的預訓練模型。開發人員拉取並部署後,惡意代碼在容器啟動時自動執行,建立持久化攻擊立足點。
Kubernetes配置錯誤:利用容器不安全配置實現逃逸。例如以Root使用者運行容器、掛載containerd Socket(如 /run/containerd/containerd.sock)或啟用特權模式(
privileged: true),可使攻擊者突破容器邊界,擷取宿主機Root許可權並橫向控制整個叢集節點。叢集橫向移動:攻擊者入侵Pod後,可讀取預設掛載的ServiceAccount Token(位於
/var/run/secrets/kubernetes.io/serviceaccount/token)。若該Token具備高許可權(如cluster-admin),攻擊者即可調用Kubernetes API枚舉Secrets、ConfigMaps、Pod列表,訪問內部Service,甚至探測叢集網路拓撲,最終實現全叢集接管。
安全強化最佳實務
針對前述風險與攻擊路徑,建議遵循縱深防禦原則,在AI應用的構建、部署、運行全生命週期中分階段落地以下安全實踐。
階段一:加固軟體供應鏈
從源頭管控鏡像與模型檔案的安全性,防止惡意代碼進入生產環境。
全面鏡像掃描
在CI/CD流水線中整合ACR的容器鏡像安全掃描。該功能支援使用Trivy掃描引擎和雲安全掃描引擎,覆蓋系統漏洞、應用漏洞、基準檢查、惡意樣本等,並支援配置阻斷策略,確保上線鏡像符合基準安全要求。
規範模型格式與驗簽
為從根本上消除模型檔案帶來的遠程代碼執行風險,需統一模型交付格式並建立可信分發機制。
安全模型格式:生產環境避免使用
pickle格式,改用safetensors、ONNX等無代碼執行能力的格式,降低還原序列化漏洞利用面。製品簽名驗證:對交付的製品進行數位簽章,並在部署時強制驗證簽名,以保障全鏈路完整性。
對於容器鏡像,使用ACR的容器鏡像加簽,實現對鏡像從構建到啟動並執行全程完整性校正。
對於模型檔案等遵循OCI規範的通用AI製品,建議使用Notation和Ratify進行OCI製品的加簽和驗簽,可自動化攔截任何未簽名或簽名無效的製品,有效防範中間人篡改。
使用最小化基礎鏡像
採用無發行版基礎鏡像。此類鏡像僅包含應用運行所需依賴,移除了Shell、包管理器等非必要組件以減少攻擊面,並限制攻擊者在容器內執行命令或橫向移動的能力。
階段二:強化Kubernetes運行時
通過最小許可權原則與強隔離機制,限制攻擊者在容器被入侵後的活動範圍,阻斷逃逸與橫向移動路徑。
配置Pod安全上下文(
securityContext)ACK支援強制實施Kubernetes內建的Pod安全標準(如
restricted策略)。在Pod定義中配置securityContext,可系統性關閉高危能力,提升容器逃逸門檻。配置項
推薦配置
說明
運行使用者
runAsUser: 1001runAsNonRoot: true禁止以Root身份運行容器,降低逃逸風險。
檔案系統
readOnlyRootFilesystem: true將根檔案系統設為唯讀,防止攻擊者植入惡意檔案或修改配置。
核心能力
capabilities.drop: ["ALL"]移除所有不必要的Linux Capabilities,僅按需通過
add顯式授予,收斂特權攻擊面。實施最小許可權原則(RBAC)
身份鑒權:將Kubernetes RBAC與阿里雲RAM和STS機制結合,為Pod綁定臨時、細粒度的雲資源存取權限,避免使用長期有效AccessKey,降低憑據泄露導致的雲資源失控風險。
限制ServiceAccount:為每個AI應用建立專用ServiceAccount,並設定
automountServiceAccountToken: false。僅在確需調用Kubernetes API的情境下,通過volumeMounts顯式掛載Token並限定命名空間範圍,減少憑據暴露面。策略治理:部署Gatekeeper准入控制器,結合OPA策略庫,在資源建立時即時攔截違規配置(如特權容器、HostPath掛載、非唯讀根檔案系統),實現安全性原則的自動化和強一致性。
啟用安全沙箱與網路隔離
階段三:實施監控與審計
建立全鏈路的監控與審計機制,確保安全事件可發現、可追溯。
運行時行為監控
ACK與Security Center整合,提供即時的容器防護能力,可自動化檢測並警示容器內的異常行為,包括:
惡意進程啟動:即時識別反彈Shell、Webshell、挖礦程式、勒索病毒等惡意進程或高危命令的執行。
異常網路連接:監控容器向礦池連接埠或非業務相關公網IP發起的串連。
憑據竊取:檢測
/var/run/secrets/目錄下ServiceAccount Token等敏感憑證檔案的非預期讀取行為。
全鏈路日誌審計
ACK支援API Server審計,將所有API操作記錄投遞至Log ServiceSLS。通過彙總分析日誌,可對所有API請求進行追溯,並重點關注以下高危操作:
對
Secrets、ConfigMaps的讀取請求。kubectl exec進入容器的指令。異常的RBAC許可權變更。