账户、凭据与权限
账户决定访问身份,凭据用于认证,授权决定可执行的操作。
身份模型
| 概念 | 用途 | 何时结束 |
|---|---|---|
| 账户 | 集群中的 ServiceAccount,代表一个访问身份 | 撤销账户时删除 |
| 凭据 | kubeconfig 中的令牌,用于认证请求 | 到期,或所属账户被撤销 |
| 授权 | 通过已有 Role 或 ClusterRole 赋予账户权限 | 移除对应绑定时结束 |
一个账户可以拥有多份凭据,所有有效凭据共用该账户的权限。再次签发不会替换旧凭据,修改权限不会延长凭据有效期。令牌到期后,账户及其授权仍然存在。
账户命名空间用于存放 ServiceAccount,默认是 kticket-users;目标命名空间用于限定授权范围,两者可以不同。建议使用专门的账户命名空间。同名 ServiceAccount 会被复用并纳入 kticket 管理,之后可被账户撤销操作删除。
例如,kticket-users 中的 alice 在 Kubernetes 中的身份是 system:serviceaccount:kticket-users:alice。kubeconfig 中显示的本地用户别名不会改变这个身份。
权限变更
- 签发时选择的授权会添加到账户已有授权中。
--access none不新增授权,也不会清除已有权限。 - RoleBinding 将权限限定在目标命名空间;ClusterRoleBinding 在集群范围授权。kticket 使用已有角色,不创建自定义角色规则。
- 权限编辑可以添加、替换或移除受管授权;YAML 配置描述希望保留的全部受管授权。
- Kubernetes RBAC 权限是累加的。外部绑定或组授权仍可能提供访问能力,kticket 对这些授权仅提供查看。
授权列表不是完整的有效权限清单。需要确认具体操作是否允许时,使用 TUI 的权限检查,或 kticket access check。操作示例见命令行参考。
替换授权时可能短暂中断访问。部分变更失败时,已完成的操作不会自动回滚;应重新加载账户并检查新计划后再执行,详见故障处理。
kticket 不自动设置授权到期,不为同一账户的不同令牌分配独立权限,也不支持单独撤销某一个令牌。需要独立权限或独立撤销时,请使用不同账户。
令牌有效期
默认申请有效期为 24h,最短 10m。API 服务器可能调整实际有效期,请以签发结果中显示的到期时间为准。
生成的 kubeconfig 可以直接交给接收者用 kubectl 加载,接收者无需安装 kticket。文件包含持有者令牌,应作为凭据妥善保管,并通过可信渠道传递。
撤销账户
kticket revoke 或 TUI 的账户删除操作会删除 ServiceAccount,并清理其受管绑定。该操作影响此账户的全部凭据;Kubernetes 再次校验时会拒绝这些令牌。重新创建同名账户不会使旧令牌恢复有效。
撤销不会主动终止已经建立的连接,也不会删除命名空间、共享角色、外部绑定或本地 kubeconfig 文件。
如果提示账户已删除但绑定清理失败,在重新创建同名账户前,应使用管理员凭据检查并清理残留绑定,避免新账户继承残留权限。
凭据记录
使用 kticket list --credentials,或在 TUI 的账户列表、权限编辑器中按 v,查看凭据 ID、签发时间、到期时间和可用的审计 ID。
记录只涵盖已登记的凭据。没有记录不代表账户没有有效令牌;“未过期”只描述记录的时间状态,不保证认证或授权成功。删除记录不会撤销令牌。
启用相关 Kubernetes 审计记录后,可用审计 ID 关联签发和后续请求。能否关联取决于集群提供的审计信息;本地生成的凭据 ID 不支持原生审计关联,同一 kubeconfig 的不同副本也无法区分。
管理员权限
所需权限取决于具体操作:
| 操作 | 所需权限 |
|---|---|
| 签发 | 读取命名空间、角色、账户和绑定;按需创建账户命名空间及 ServiceAccount;更新账户标签和注解;创建绑定;创建 serviceaccounts/token |
| 查询 | 列出受管 ServiceAccount、跨命名空间的 RoleBinding 和 ClusterRoleBinding;读取指定的账户命名空间 |
| 撤销 | 读取和删除受管 ServiceAccount;列出和删除匹配的受管绑定 |
| 管理授权 | 读取账户、目标命名空间、角色和绑定;创建、删除绑定,更新管理标签 |
| 权限检查 | 读取账户和指定的目标命名空间;创建 subjectaccessreviews.authorization.k8s.io |
| TUI 候选项 | API 发现,以及相关对象的读取和列举权限 |
Kubernetes 的 RBAC 绑定权限限制仍然生效。服务端试运行也需要对应写权限。使用受限管理员角色时,需要覆盖实际流程涉及的操作和资源范围。License 激活不会赋予 Kubernetes 管理员权限。