# 用户与组

认证流程结束后，会得到经过认证的 **用户信息** 和 **组信息（一个或多个组）**，这些信息会被授权插件使用，验证用户是否被授权执行某个操作。

## 用户

用户的主体主要有两类：

* 真实用户：该类用户独立于 Kubernetes 集群外，不由集群管理，通常由系统管理员在集群外部实现，例如单点登录系统 (SSO)；
* Pod 中的应用：该类用户使用的是 `ServiceAccount` 资源来代表用户，该类资源可创建，并由 Pod 使用，标识一个或多个 Pod，类似于身份证，只不过可以被多个 Pod 使用。API 服务器认证时，通过 `ServiceAccount` 来标识 Pod，对其进行认证；

## 组

与 Linux 中的用户和组的概念类似，Kubernetes 集群中同样可以 **将多个用户分配为一组**，然后对该组赋予相应权限，这样便于管理。**授权插件** 也会根据组信息判定该用户或 Pod 是否具有相应操作的权限。

在集群中，**认证插件** 也会为 **一个用户分配多个组**，意味着该用户具有这几个组的权限。

Kubernetes 集群具有一些内置的组，这些内置组具有特殊含义：

* `system:unauthenticated` : 当用户没有通过所有的认证插件时，会默认为其分配至该组中；
* `system:authenticated` : 成功通过认证流程的用户，会为其分配该组；
* `system:serviceaccounts` : 系统中所有的 `ServiceAccount` 都属于该组；
* `system:serviceaccounts:<namespace>` : 系统中特定命名空间中的所有 `ServiceAccount` 都属于该组；
