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

相關(guān)新聞

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

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

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

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

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

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

2026/8/2 2:34:36 閱讀更多
NFC供電電子紙顯示方案:零功耗、免布線硬件開(kāi)發(fā)詳解

NFC供電電子紙顯示方案:零功耗、免布線硬件開(kāi)發(fā)詳解

1. 項(xiàng)目概述:當(dāng)NFC遇上電子紙,一個(gè)“零功耗”顯示方案的誕生最近在搗鼓一個(gè)挺有意思的小玩意兒:一個(gè)2.13英寸、靠NFC供電的電子紙(e-Paper)顯示屏。這項(xiàng)目聽(tīng)起來(lái)就有點(diǎn)“黑科技”的感覺(jué),對(duì)吧?它…

2026/8/2 2:24:36 閱讀更多
PHP+微信小程序?qū)崿F(xiàn)KTV餐廳預(yù)約排隊(duì)系統(tǒng):從架構(gòu)到部署全解析

PHP+微信小程序?qū)崿F(xiàn)KTV餐廳預(yù)約排隊(duì)系統(tǒng):從架構(gòu)到部署全解析

1. 項(xiàng)目概述:一個(gè)解決線下排隊(duì)痛點(diǎn)的數(shù)字化方案 每次去熱門(mén)餐廳或者KTV,最頭疼的就是排隊(duì)等位。前臺(tái)服務(wù)員手忙腳亂地翻著紙質(zhì)記錄本,顧客伸長(zhǎng)脖子張望,不知道還要等多久,這種體驗(yàn)相信大家都不陌生。我最近用PHP和微信…

2026/8/2 13:06:09 閱讀更多
2026年P(guān)DF轉(zhuǎn)換器怎么選?免費(fèi)無(wú)廣告、安全無(wú)水印的實(shí)用工具實(shí)測(cè)教程

2026年P(guān)DF轉(zhuǎn)換器怎么選?免費(fèi)無(wú)廣告、安全無(wú)水印的實(shí)用工具實(shí)測(cè)教程

2026年P(guān)DF轉(zhuǎn)換器怎么選?免費(fèi)無(wú)廣告、安全無(wú)水印的實(shí)用工具實(shí)測(cè)教程 上周朋友扔過(guò)來(lái)一份230頁(yè)的掃描版合同PDF,總共117MB,要在兩小時(shí)內(nèi)把里面所有條款改完、排版不亂,然后發(fā)回給客戶。他電腦上連Office都沒(méi)裝,只抱著一臺(tái)…

2026/8/2 13:06:09 閱讀更多
C++跨平臺(tái)打開(kāi)網(wǎng)頁(yè):ShellExecute與system函數(shù)實(shí)戰(zhàn)指南

C++跨平臺(tái)打開(kāi)網(wǎng)頁(yè):ShellExecute與system函數(shù)實(shí)戰(zhàn)指南

1. 項(xiàng)目概述:從命令行到瀏覽器窗口 “C怎樣打開(kāi)網(wǎng)頁(yè)?” 這個(gè)問(wèn)題乍一看很簡(jiǎn)單,但背后其實(shí)涉及了從系統(tǒng)調(diào)用到進(jìn)程間通信,再到現(xiàn)代軟件開(kāi)發(fā)中命令行工具與圖形界面交互的多個(gè)層面。它絕不僅僅是調(diào)用一個(gè)函數(shù)那么簡(jiǎn)單。對(duì)于C開(kāi)發(fā)者…

2026/8/2 13:06:09 閱讀更多
Spark Streaming微批次架構(gòu)解析與實(shí)時(shí)計(jì)算實(shí)踐指南

Spark Streaming微批次架構(gòu)解析與實(shí)時(shí)計(jì)算實(shí)踐指南

1. 項(xiàng)目概述:為什么Spark Streaming依然是實(shí)時(shí)計(jì)算的基石 最近和幾個(gè)做數(shù)據(jù)平臺(tái)的朋友聊天,發(fā)現(xiàn)一個(gè)挺有意思的現(xiàn)象:盡管現(xiàn)在實(shí)時(shí)計(jì)算領(lǐng)域新框架層出不窮,比如Flink風(fēng)頭正勁,但在很多公司的生產(chǎn)環(huán)境里,Spar…

2026/8/2 13:06:09 閱讀更多
2026年P(guān)DF轉(zhuǎn)換器實(shí)測(cè)盤(pán)點(diǎn):免費(fèi)好用、離線安全、手機(jī)端方案一次說(shuō)清

2026年P(guān)DF轉(zhuǎn)換器實(shí)測(cè)盤(pán)點(diǎn):免費(fèi)好用、離線安全、手機(jī)端方案一次說(shuō)清

2026年P(guān)DF轉(zhuǎn)換器實(shí)測(cè)盤(pán)點(diǎn):免費(fèi)好用、離線安全、手機(jī)端方案一次說(shuō)清 前陣子同事扔過(guò)來(lái)一份簽完字的合同掃描件,讓我把關(guān)鍵條款摘出來(lái)補(bǔ)進(jìn)報(bào)告。文件不大,但排版密密麻麻,頁(yè)腳還有手寫(xiě)備注。我下意識(shí)先掏出手機(jī),在微信里…

2026/8/2 12:56:09 閱讀更多
MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案 【免費(fèi)下載鏈接】MoneyPrinterPlus AI一鍵批量生成各類短視頻,自動(dòng)批量混剪短視頻,自動(dòng)把視頻發(fā)布到抖音,快手,小紅書(shū),視頻號(hào)上,賺錢(qián)從來(lái)沒(méi)有這么容易過(guò)! 支持本地語(yǔ)音模型chatTTS,fasterwhisper,…

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

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

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

2026/8/2 0:04:01 閱讀更多
MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案 【免費(fèi)下載鏈接】MoneyPrinterPlus AI一鍵批量生成各類短視頻,自動(dòng)批量混剪短視頻,自動(dòng)把視頻發(fā)布到抖音,快手,小紅書(shū),視頻號(hào)上,賺錢(qián)從來(lái)沒(méi)有這么容易過(guò)! 支持本地語(yǔ)音模型chatTTS,fasterwhisper,…

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

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

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

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)的一款用于半導(dǎo)體設(shè)備的I/O信號(hào)分配電路板。該型號(hào)(0100-02186)的核心特點(diǎn)如下:專用于Endura等半導(dǎo)體工藝腔室。集成信號(hào)路由與分配功能。連接控制…

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

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)

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

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