16-Pod 身份與認證機制
Pod 身份與認證機制概念引入在文章 14 中你學了 RBAC——“誰能做什么”。但有個問題被跳過了API Server 怎么知道你是誰RBAC文章 14 → 授權(quán)Authorization→ 你有權(quán)限做這個操作嗎 Pod 身份本篇 → 認證Authentication→ 你是誰你是合法的 Pod 嗎每個 Pod 從出生就攜帶一個身份證——ServiceAccount Token。Pod 用這個 Token 訪問 API Server。Pod身份綁定Bearer Token 認證通過 RBAC 檢查權(quán)限ServiceAccountmy-app-saProjected Token自動掛載到 /var/run/secrets/...API Server驗證 Token → 識別身份授權(quán)判斷這個身份能 GET pods 嗎學完本篇你將能夠查看 Pod 自動掛載的 ServiceAccount Token理解 Pod 如何向 API Server 證明身份區(qū)分新版 projected token 和舊版 Secret token 的差異為 Pod 配置自定義 ServiceAccount結(jié)合 RBAC 控制 API 訪問權(quán)限原理講解Pod 的身份證ServiceAccount Token每個 Pod 創(chuàng)建時K8s 自動做三件事為 Pod 創(chuàng)建一個ServiceAccount Token通過 TokenRequest API將 Token 以projected volume方式掛載到 Pod 內(nèi)Token 有過期時間kubelet 會自動續(xù)期# 進入任何 Pod 都能看到 Tokenls/var/run/secrets/kubernetes.io/serviceaccount/# ca.crt namespace token ← 三個文件Schema從創(chuàng)建 Pod 到認證的全鏈路API ServerTokenRequest APIkubeletPodAPI ServerTokenRequest APIkubeletPodPod 創(chuàng)建階段Pod 運行時需要 ServiceAccount TokenTokenRequest(samy-app-sa, audienceapi, expiration3600s)簽發(fā) JWT Token掛載到 projected volumeGET /api/v1/namespaces/default/podsAuthorization: Bearer token驗證 JWT 簽名 過期時間識別 SA 身份system:serviceaccount:default:my-app-saRBAC 檢查這個 SA 能 list pods 嗎允許/拒絕新 Token vs 舊 Secret Token特性新版 Projected Token1.21舊版 Secret Token過期時間? 有1 小時可配置? 永不過期自動輪換? kubelet 自動續(xù)期? 需手動重建 Secret綁定 Pod? Token 和 Pod 綁定? 不綁定Audience? 支持限制用途? 不支持安全性???????手動創(chuàng)建 SA 和 TokenapiVersion:v1kind:ServiceAccountmetadata:name:my-readernamespace:default---apiVersion:v1kind:Podmetadata:name:reader-podspec:serviceAccountName:my-reader# 指定 SA不指定則用 defaultcontainers:-name:appimage:nginx:1.27# 手動創(chuàng)建一個 Token用于本地調(diào)試kubectl create token my-reader# 指定 audience 和過期時間kubectl create token my-reader--audiencemy-api--duration2hToken 的 JWT 結(jié)構(gòu)Token 是一個 JWTJSON Web Token可以解碼查看# 在 Pod 內(nèi)解碼 TokenBASE64 中間那部分cat/var/run/secrets/kubernetes.io/serviceaccount/token|cut-d.-f2|base64-d|python3-mjson.tool{aud:[https://kubernetes.default.svc],exp:1753187200,iat:1753183600,iss:https://kubernetes.default.svc,kubernetes.io:{namespace:default,pod:{name:reader-pod,uid:abc123...},serviceaccount:{name:my-reader,uid:def456...}},sub:system:serviceaccount:default:my-reader}使用 Token 訪問 API Server# 在 Pod 內(nèi)直接訪問 API ServerTOKEN$(cat/var/run/secrets/kubernetes.io/serviceaccount/token)APISERVERhttps://kubernetes.default.svccurl-sk-HAuthorization: Bearer$TOKEN$APISERVER/api/v1/namespaces/default/pods動手實驗配套實驗位于docs/labs/beginner/pod-identity/步驟 1部署實驗環(huán)境cddocs/labs/beginner/pod-identitybashsetup.sh步驟 2查看 Pod 的默認身份kubectlexecreader-pod --cat/var/run/secrets/kubernetes.io/serviceaccount/token kubectlexecreader-pod --ls/var/run/secrets/kubernetes.io/serviceaccount/步驟 3用 SA Token 訪問 API Serverkubectlexecreader-pod --sh-c TOKEN$(cat /var/run/secrets/kubernetes.io/serviceaccount/token) APISERVERhttps://kubernetes.default.svc curl -sk -H Authorization: Bearer $TOKEN $APISERVER/api/v1/namespaces/default/pods # 根據(jù) SA 的 RBAC 權(quán)限可能會返回 pods 列表或被拒絕步驟 4解碼查看 Token 內(nèi)容kubectlexecreader-pod --sh-c cat /var/run/secrets/kubernetes.io/serviceaccount/token | cut -d. -f2 | base64 -d 2/dev/null | python3 -m json.tool 2/dev/null || echo 需要 python3 解碼 步驟 5創(chuàng)建自定義 Token 并測試權(quán)限區(qū)別# 創(chuàng)建 Token無任何 RBAC 權(quán)限的 SATOKEN$(kubectl create token test-sa--duration1h)# 用這個 Token 嘗試訪問kubectl get pods--token$TOKEN21# 預期Error from server (Forbidden)步驟 6清理bashteardown.sh自檢問題[基礎(chǔ)]每個 Pod 默認能訪問 API Server 嗎能做什么操作[理解]為什么新版的 Projected Token 比舊的 Secret-based Token 更安全[應(yīng)用]你發(fā)現(xiàn) Pod 里的惡意容器正在用 SA Token 調(diào)用 API Server。除了刪 Pod你能做什么來在架構(gòu)層面減少這種風險查看答案能訪問。每個 Pod 默認掛載了defaultServiceAccount 的 Token。但defaultSA 通常幾乎沒有任何 RBAC 權(quán)限——所以 Pod 能連上 API Server但驗證身份后幾乎所有操作都被拒絕??梢酝ㄟ^ RBAC 授予特定權(quán)限如文章 14 中的 readonly-sa。舊 Secret Token永不過期、不綁定 Pod、不支持 audience 限制——如果 Token 泄露攻擊者可以永久使用它。新版 Projected Token① 1 小時后自動過期kubelet 自動續(xù)期泄露的 Token 很快失效② Token 綁定到特定 Podkubernetes.io.pod.uid其他 Pod 無法使用③ 支持audience字段——給外部的 Token 不能用于訪問 API Server。① 遵循最小權(quán)限原則不要給 default SA 任何 RBAC 權(quán)限② 為每個應(yīng)用創(chuàng)建專用 SA只給必要的權(quán)限③ 關(guān)閉不需要的automountServiceAccountTokenspec.automountServiceAccountToken: false④ 使用 NetworkPolicy 限制 Pod 到 API Server 的流量⑤ 啟用審計日志監(jiān)控異常的 API 調(diào)用。下一步Pod 的身份認證搞清楚了。接下來學習如何擴展 K8s 的 API 定義你自己的資源類型→ 27. Custom Resource 入門 本文來自 K8s Guide —— 開源免費的 Kubernetes 中文學習指南? 初學者軌道 面試軌道從零基礎(chǔ)到拿 Offer 一站式覆蓋 每篇文章配套 Kind 實驗腳本本地一鍵運行 本文源碼docs/beginner/20-gateway-api.md? 如果對你有幫助歡迎 Star github.com/callmebg/k8s-guide

相關(guān)新聞

GD32H7定時器輸出比較與PWM模式詳解:從原理到實戰(zhàn)配置

GD32H7定時器輸出比較與PWM模式詳解:從原理到實戰(zhàn)配置

1. 項目概述:從定時器到精準控制在嵌入式開發(fā),尤其是電機控制、電源管理、LED調(diào)光這些領(lǐng)域,精準的時序控制是核心。你可能會遇到這樣的需求:需要在一個精確的時刻翻轉(zhuǎn)一個引腳的電平,或者生成一個頻率和占空比都可調(diào)的…

2026/8/2 2:34:37 閱讀更多
Python游戲存檔系統(tǒng)開發(fā)實戰(zhàn):從數(shù)據(jù)模型到版本兼容性

Python游戲存檔系統(tǒng)開發(fā)實戰(zhàn):從數(shù)據(jù)模型到版本兼容性

最近在開發(fā)一個游戲存檔管理工具時,遇到了一個非常棘手的問題:如何高效、安全地處理游戲存檔數(shù)據(jù),特別是那些涉及復雜狀態(tài)(如“極度困難”難度、“出道曲”成就、“珍愛”道具、“低卡位”資源)的存檔。網(wǎng)上資料要么過…

2026/8/2 2:34:36 閱讀更多
數(shù)據(jù)庫Mysql結(jié)課實驗

數(shù)據(jù)庫Mysql結(jié)課實驗

實驗環(huán)境:openEuler Linux 虛擬機、MySQL 8.0.45、Python3.11.9、騰訊云 TokenHub 大模型 API實驗目標:獨立完成 Linux 服務(wù)器、MySQL 數(shù)據(jù)庫、Python 運行環(huán)境全套部署;實現(xiàn)自然語言自動生成只讀 MySQL 查詢、自動執(zhí)行并 AI 解讀業(yè)務(wù)數(shù)據(jù)&am…

2026/8/2 3:24:40 閱讀更多
shell編程日記

shell編程日記

if中[ ] 和 [[ ]],后者語法寬松好用,不易報錯。export 和 sourceexport : 把普通本地變量 → 升級成環(huán)境變量讓這個變量不光當前終端能用,你運行的所有子程序(腳本、ROS 節(jié)點、程序)全都可以讀取到。source : 在終端配…

2026/8/2 3:24:40 閱讀更多
量子場論:從粒子到場的必然選擇與核心動機

量子場論:從粒子到場的必然選擇與核心動機

1. 從“粒子”到“場”:一個根本性的視角轉(zhuǎn)換如果你對現(xiàn)代物理感興趣,或者試圖理解那些聽起來高深莫測的理論,比如“希格斯機制”、“標準模型”甚至“弦論”,那么有一個概念是你絕對繞不開的基石:量子場論。這個名字聽…

2026/8/2 3:24:40 閱讀更多
親測 6 款免費 UML 類圖工具:在線繪制、AI 生成、團隊協(xié)作怎么選?

親測 6 款免費 UML 類圖工具:在線繪制、AI 生成、團隊協(xié)作怎么選?

做過系統(tǒng)設(shè)計、寫過技術(shù)方案的同學應(yīng)該都有體會:UML 類圖這東西,畫起來不難,難的是畫得又快又準確。 尤其是項目剛啟動的時候,十幾個類之間的關(guān)系還沒理清,你對著 Visio 拖拽半天,結(jié)果產(chǎn)品經(jīng)理過來說需求變…

2026/8/2 3:24:40 閱讀更多
游戲模組制作實戰(zhàn):從腳本修改到武器配置的完整指南

游戲模組制作實戰(zhàn):從腳本修改到武器配置的完整指南

在游戲開發(fā)或模組制作領(lǐng)域,為經(jīng)典游戲創(chuàng)作新的劇本、關(guān)卡或角色,是許多資深玩家和技術(shù)愛好者深入探索游戲機制、實現(xiàn)個人創(chuàng)意的常見方式。這個過程不僅需要對游戲引擎和資源文件有深刻理解,還需要具備一定的腳本編寫、關(guān)卡設(shè)計和平衡性調(diào)整能…

2026/8/2 3:14:38 閱讀更多
3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南 【免費下載鏈接】GetQzonehistory 獲取QQ空間發(fā)布的歷史說說 項目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾想過,那些年發(fā)過的QQ空間說說,那些記錄青春的文字…

2026/8/2 0:04:01 閱讀更多
3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南 【免費下載鏈接】GetQzonehistory 獲取QQ空間發(fā)布的歷史說說 項目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾想過,那些年發(fā)過的QQ空間說說,那些記錄青春的文字…

2026/8/2 0:04:01 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應(yīng)用材料(Applied Materials)公司生產(chǎn)的一款用于半導體設(shè)備的I/O信號分配電路板。該型號(0100-02186)的核心特點如下:專用于Endura等半導體工藝腔室。集成信號路由與分配功能。連接控制…

2026/8/2 2:51:21 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機是日本日清(Nissei)品牌的一款工業(yè)用三相異步電機,適用于自動化設(shè)備及通用機械驅(qū)動。該型號(FFMN-32L-10-T0 40AX)的核心特點如下:三相交流異步電動機。額定…

2026/8/2 2:52:49 閱讀更多