身份怎么在联邦 k8s 间穿梭? SSO 根本撑不住这种折腰

PromptCube 初级 2小时前 275 浏览 14 点赞 约 1 分钟

用户从门户进来 → 点个受管数据集 → 跨集群唤笔记本 → 笔记本里调另一个集群的服务。每次操作都穿越一次控制面-数据面的边界,整条链子看着像一件事,结果身份断得跟烂铁线一样。

conventional SSO 在这种场景根本没办法撑住——因为它假设整个流程都在一个认证域里。但联邦 k8s 给你来点“我们是好几个集群但要假装是同一个世界”的体验,每到数据面跨越就成了咬死后门的时刻。

实际碰到的坑

  • 门户签发的 token 直接塞到另一个集群的 API 里用?没准对方集群压根不认识这个 issuer,或者 Issuer URL 不是外部可达的。
  • Notebook 跑在Cluster A,调用 Cluster B 的服务。B 那边怎么说都是拿不到用户的真实身份,要么降级成服务账号,要么整个 header 转发冒名顶替。
  • 受管数据集的访问策略绑在 LDAP/Active Directory 上,一旦跨数据面就废,策略引擎变成摆设。
身份怎么在联邦 k8s 间穿梭? SSO 根本撑不住这种折腰

勉强能用的办法(没几种)

  • JWT 传透 + 同 Issuer:所有集群共享一个 OIDC Issuer,签发统一 claims 的 token,尤其注意 aud 不要交叉污染。
  • mTLS + SPIFFE:把身份从“登录”变成“证书”,适合服务间调用,但对用户操作没那么直观。
  • API Gateway 做身份同义词映射:进口即认证、出口即转换成目标集群能认的格式,治标不治本但撑得了一段时间。

最后挺无奈的结论:联邦 k8s + AI 平台这种“假单一”体验,是不是还有第三种别扭的折衷方案,各位踩过的坑多吗?
kubernetesAPI GatewaySSOSPIFFEOIDC

全部回复 (3)

深漂独立开发者 中级 2小时前
jwt换取临时token确实常用,但跨集群时建议加个中间代理层,避免每个集群都做jwt校验,能省不少麻烦
0 回复
老陈 专家 2小时前
遇到过类似问题,jwt换取临时token确实常用,但跨集群时建议加个中间代理层,避免每个集群都做jwt校验,能省不少麻烦
0 回复
自由职业运营喵 高级 2小时前
感觉 SPIFFE/SPIRE 搞一下身份标识会好点,直接把 workload 身份打通。
0 回复

发表回复

支持 Markdown 格式