16-Pod 身份与认证机制

发布时间:2026/8/2 2:34:50

16-Pod 身份与认证机制
Pod 身份与认证机制概念引入在文章 14 中你学了 RBAC——“谁能做什么”。但有个问题被跳过了API Server 怎么知道你是谁RBAC文章 14 → 授权Authorization→ 你有权限做这个操作吗 Pod 身份本篇 → 认证Authentication→ 你是谁你是合法的 Pod 吗每个 Pod 从出生就携带一个身份证——ServiceAccount Token。Pod 用这个 Token 访问 API Server。Pod身份绑定Bearer Token 认证通过 RBAC 检查权限ServiceAccountmy-app-saProjected Token自动挂载到 /var/run/secrets/...API Server验证 Token → 识别身份授权判断这个身份能 GET pods 吗学完本篇你将能够查看 Pod 自动挂载的 ServiceAccount Token理解 Pod 如何向 API Server 证明身份区分新版 projected token 和旧版 Secret token 的差异为 Pod 配置自定义 ServiceAccount结合 RBAC 控制 API 访问权限原理讲解Pod 的身份证ServiceAccount Token每个 Pod 创建时K8s 自动做三件事为 Pod 创建一个ServiceAccount Token通过 TokenRequest API将 Token 以projected volume方式挂载到 Pod 内Token 有过期时间kubelet 会自动续期# 进入任何 Pod 都能看到 Tokenls/var/run/secrets/kubernetes.io/serviceaccount/# ca.crt namespace token ← 三个文件Schema从创建 Pod 到认证的全链路API ServerTokenRequest APIkubeletPodAPI ServerTokenRequest APIkubeletPodPod 创建阶段Pod 运行时需要 ServiceAccount TokenTokenRequest(samy-app-sa, audienceapi, expiration3600s)签发 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 自动续期❌ 需手动重建 Secret绑定 Pod✅ Token 和 Pod 绑定❌ 不绑定Audience✅ 支持限制用途❌ 不支持安全性⭐⭐⭐⭐⭐⭐⭐手动创建 SA 和 TokenapiVersion:v1kind:ServiceAccountmetadata:name:my-readernamespace:default---apiVersion:v1kind:Podmetadata:name:reader-podspec:serviceAccountName:my-reader# 指定 SA不指定则用 defaultcontainers:-name:appimage:nginx:1.27# 手动创建一个 Token用于本地调试kubectl create token my-reader# 指定 audience 和过期时间kubectl create token my-reader--audiencemy-api--duration2hToken 的 JWT 结构Token 是一个 JWTJSON Web Token可以解码查看# 在 Pod 内解码 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 内直接访问 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部署实验环境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 # 根据 SA 的 RBAC 权限可能会返回 pods 列表或被拒绝步骤 4解码查看 Token 内容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创建自定义 Token 并测试权限区别# 创建 Token无任何 RBAC 权限的 SATOKEN$(kubectl create token test-sa--duration1h)# 用这个 Token 尝试访问kubectl get pods--token$TOKEN21# 预期Error from server (Forbidden)步骤 6清理bashteardown.sh自检问题[基础]每个 Pod 默认能访问 API Server 吗能做什么操作[理解]为什么新版的 Projected Token 比旧的 Secret-based Token 更安全[应用]你发现 Pod 里的恶意容器正在用 SA Token 调用 API Server。除了删 Pod你能做什么来在架构层面减少这种风险查看答案能访问。每个 Pod 默认挂载了defaultServiceAccount 的 Token。但defaultSA 通常几乎没有任何 RBAC 权限——所以 Pod 能连上 API Server但验证身份后几乎所有操作都被拒绝。可以通过 RBAC 授予特定权限如文章 14 中的 readonly-sa。旧 Secret Token永不过期、不绑定 Pod、不支持 audience 限制——如果 Token 泄露攻击者可以永久使用它。新版 Projected Token① 1 小时后自动过期kubelet 自动续期泄露的 Token 很快失效② Token 绑定到特定 Podkubernetes.io.pod.uid其他 Pod 无法使用③ 支持audience字段——给外部的 Token 不能用于访问 API Server。① 遵循最小权限原则不要给 default SA 任何 RBAC 权限② 为每个应用创建专用 SA只给必要的权限③ 关闭不需要的automountServiceAccountTokenspec.automountServiceAccountToken: false④ 使用 NetworkPolicy 限制 Pod 到 API Server 的流量⑤ 启用审计日志监控异常的 API 调用。下一步Pod 的身份认证搞清楚了。接下来学习如何扩展 K8s 的 API 定义你自己的资源类型→ 27. Custom Resource 入门 本文来自 K8s Guide —— 开源免费的 Kubernetes 中文学习指南️ 初学者轨道 面试轨道从零基础到拿 Offer 一站式覆盖 每篇文章配套 Kind 实验脚本本地一键运行 本文源码docs/beginner/20-gateway-api.md⭐ 如果对你有帮助欢迎 Star github.com/callmebg/k8s-guide

相关新闻

GD32H7定时器输出比较与PWM模式详解:从原理到实战配置

GD32H7定时器输出比较与PWM模式详解:从原理到实战配置

2026/8/2 2:34:50

1. 项目概述:从定时器到精准控制在嵌入式开发,尤其是电机控制、电源管理、LED调光这些领域,精准的时序控制是核心。你可能会遇到这样的需求:需要在一个精确的时刻翻转一个引脚的电平,或者生成一个频率和占空比都可调的…

Python游戏存档系统开发实战:从数据模型到版本兼容性

Python游戏存档系统开发实战:从数据模型到版本兼容性

2026/8/2 2:34:50

最近在开发一个游戏存档管理工具时,遇到了一个非常棘手的问题:如何高效、安全地处理游戏存档数据,特别是那些涉及复杂状态(如“极度困难”难度、“出道曲”成就、“珍爱”道具、“低卡位”资源)的存档。网上资料要么过…

iCloud同步误删GoodNote4数据?三招恢复与备份策略详解

iCloud同步误删GoodNote4数据?三招恢复与备份策略详解

2026/8/2 2:34:50

1. 问题场景深度剖析:当GoodNote4的iCloud同步“反噬”本地数据 如果你正在用GoodNote4,并且开启了iCloud同步,那么恭喜你,你大概率已经享受到了跨设备无缝编辑笔记的便利。但今天要聊的,是这种便利背后一个极其凶险的…

Unity C#泛型约束实战:6大核心用法与避坑指南

Unity C#泛型约束实战:6大核心用法与避坑指南

2026/8/2 3:35:00

1. 项目概述:为什么Unity开发者必须掌握泛型约束如果你在Unity里写过C#脚本,尤其是尝试过构建一些可复用的系统,比如对象池、事件管理器或者数据容器,那你大概率已经和泛型打过交道了。泛型让代码变得灵活且类型安全,但…

C#编译错误CS0246:类型找不到的全面排查指南

C#编译错误CS0246:类型找不到的全面排查指南

2026/8/2 3:35:00

1. 项目概述:当编译器对你“Say No”在C#开发的日常里,没有什么比一个突如其来的编译错误更能打断你的编码节奏了。其中,CS0246这个错误代码,对于从新手到老鸟的所有C#开发者来说,都堪称一位“熟悉的陌生人”。它不像空…

Unity星球系统开发:从CubeSphere到大气散射的完整渲染方案

Unity星球系统开发:从CubeSphere到大气散射的完整渲染方案

2026/8/2 3:35:00

1. 项目概述:从“看星星”到“造宇宙”的跨越如果你玩过《无人深空》或者《星际公民》,肯定对游戏中那些在太空中缓缓旋转、表面细节丰富的星球印象深刻。那种从太空轨道俯瞰,再到大气层内穿梭,最后着陆在异星地表的一体化体验&am…

多元与多变量时间序列:核心差异、模型选择与实战避坑指南

多元与多变量时间序列:核心差异、模型选择与实战避坑指南

2026/8/2 3:35:00

1. 项目概述:从“多元”与“多变量”的混淆说起在时间序列分析这个领域,无论是学术研究还是工业应用,有两个词经常被混用,甚至在一些教科书和论文里也界限模糊——那就是“多元时间序列”和“多变量时间序列”。乍一看&#xff0c…

VRChat Avatar动画高效调试:Gesture Manager核心功能与实战指南

VRChat Avatar动画高效调试:Gesture Manager核心功能与实战指南

2026/8/2 3:35:00

1. 项目概述:为什么你需要一个高效的动画调试工具?如果你和我一样,在VRChat的世界里投入了大量时间,从零开始捏脸、定制服装,再到为你的虚拟形象(Avatar)设计独一无二的动画,那么你肯…

数据库Mysql结课实验

数据库Mysql结课实验

2026/8/2 3:25:00

实验环境:openEuler Linux 虚拟机、MySQL 8.0.45、Python3.11.9、腾讯云 TokenHub 大模型 API实验目标:独立完成 Linux 服务器、MySQL 数据库、Python 运行环境全套部署;实现自然语言自动生成只读 MySQL 查询、自动执行并 AI 解读业务数据&am…

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案

2026/8/2 0:04:43

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经从网易云音乐下载了心爱的歌曲&am…

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比

2026/8/2 0:04:43

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比工程导读:本文深入讨论 分布式配置中心选型实战:Nacos与Consul在创业场景下的对比 在生产工程实践中的核心落地方案。基于 分布式架构与微服务设计 视角,剖析实际痛点、架…

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案

2026/8/2 0:04:43

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案 【免费下载链接】MoneyPrinterPlus AI一键批量生成各类短视频,自动批量混剪短视频,自动把视频发布到抖音,快手,小红书,视频号上,赚钱从来没有这么容易过! 支持本地语音模型chatTTS,fasterwhisper,…

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案

2026/8/2 0:04:43

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经从网易云音乐下载了心爱的歌曲&am…

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比

2026/8/2 0:04:43

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比工程导读:本文深入讨论 分布式配置中心选型实战:Nacos与Consul在创业场景下的对比 在生产工程实践中的核心落地方案。基于 分布式架构与微服务设计 视角,剖析实际痛点、架…

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案

2026/8/2 0:04:43

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案 【免费下载链接】MoneyPrinterPlus AI一键批量生成各类短视频,自动批量混剪短视频,自动把视频发布到抖音,快手,小红书,视频号上,赚钱从来没有这么容易过! 支持本地语音模型chatTTS,fasterwhisper,…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/1 0:03:03

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/1 0:03:03

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/2 1:50:52

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…