AI 助教问 AI 助教
东方瑞通 · CKA

用户账号与服务账号、角色绑定

UserAccount 是面向人的账号(由外部身份系统管理),ServiceAccount 是供 Pod/应用使用的集群内身份,通过绑定 Role/ClusterRole 获得权限。

考点精讲

  1. Kubernetes 里有两类账号:UserAccount 面向「人」,由集群外部的身份系统(证书、OIDC 等)管理,在集群内没有对应的资源对象;ServiceAccount 面向「Pod/应用」,是命名空间级的集群内身份。每个 Pod 默认会挂载所在命名空间的 default ServiceAccount,其对应的 token 用于访问 API 时做认证。给 Pod 赋权,就是创建(或选用)ServiceAccount,再通过 RoleBinding/ClusterRoleBinding 把它绑定到相应角色上。记住「UserAccount 给人用、ServiceAccount 给 Pod 用」,并养成最小权限的习惯——不要默认给 Pod 过大的权限。

记忆技巧

UserAccount 给人用,ServiceAccount 给 Pod 用
SA 是 Pod 的身份证

常见误区

  • 用 UserAccount 概念去 kubectl create(SA 才有对象)
  • 给 Pod 用错 SA 导致权限不足
  • 默认 SA 权限过大未做最小权限收敛

真题思路

  • 【示例】本页题目为教学模拟题,非真题,仅用于讲解答题思路 让 Pod 以最小权限访问 API,正确的做法是?
    一直用 default ServiceAccount 创建专用 ServiceAccount 并绑定最小权限角色 给所有 Pod 绑定 ClusterRole 禁用认证
    答案:B
    解析:最佳实践是创建专用 ServiceAccount 并绑定最小权限角色;用 default 或全局 ClusterRole 权限过大,禁用认证不可行。

常见问题

Q:ServiceAccount 和 UserAccount 区别

A:ServiceAccount 是集群内对象、给 Pod/应用用;UserAccount 由外部身份系统管理、给人用。

Q:能用 kubectl create 创建 UserAccount 吗

A:不能,UserAccount 没有集群内对象,只有 ServiceAccount 可用 kubectl 创建。

Q:Pod 默认用哪个 ServiceAccount

A:所在命名空间的 default ServiceAccount。

相关知识

教材出处:第13章 Kubernetes集群安全 用户账号与服务账号、角色绑定

AI 助教

让 AI 助教带你深入学习,把你卡住的地方直接问它

随时为您答疑解惑

开始答疑