Kubernetes中所有的访问,无论外部内部,都会通过API Server处理,访问Kubernetes资源前需要经过认证与授权。
- Authentication:用于识别用户身份的认证,Kubernetes分外部服务账号和内部服务账号,采取不同的认证机制,具体请参见认证与ServiceAccount。
- Authorization:用于控制用户对资源访问的授权,对访问的授权目前主要使用RBAC机制,将在RBAC介绍。
图1 API Server的认证授权
认证与ServiceAccount
Kubernetes的用户分为服务账户(ServiceAccount)和普通账户两种类型。
- 服务账户与Namespace绑定,关联一套凭证,存储在Secret中,Pod创建时挂载Secret,从而允许与API Server之间调用。
- Kubernetes中没有代表普通账户的对象,这类账户默认由外部服务独立管理,比如在华为云上CCE的用户是由IAM管理的。
普通账号并不是这里要讨论的内容,这里主要关注ServiceAccount。
ServiceAccount同样是Kubernetes中的资源,与Pod、ConfigMap类似,且作用于独立的命名空间,也就是S