一、K8s多用户和权限分配的使用场景

1.1 针对不同租户

Day020-K8s多用户权限管理-图1

多租户资源隔离场景

  • 场景描述:不同租户(如租户 A、B、C)需在同一 K8s 集群中独立使用资源,避免资源混淆与权限交叉。
  • 权限分配:通过 Namespace 划分资源边界,为每个租户分配对专属 Namespace(如 NameSpace A1、B1、C1)的完全访问权限,确保租户仅能操作自身资源,实现租户级别的资源隔离与权限隔离。

1.2 针对不同团队

Day020-K8s多用户权限管理-图2

团队协作分工场景

  • 场景描述:同一集群内不同团队(如团队 A、B、C)协作开发,但需限制非关联资源的访问权限。
  • 权限分配:为团队配置差异化权限,如团队 A 对部分 Namespace 完全访问,对其他 Namespace 限制访问;团队 B 仅完全访问专属 Namespace B1。通过细粒度权限控制,既保障协作需求,又避免越权操作。

1.3 针对不同场景不同角色

Day020-K8s多用户权限管理-图3、

环境分层管理场景

  • 场景描述:开发、测试、生产等不同环境需严格区分访问权限,保障环境安全性。
  • 权限分配:按角色划分权限,如开发人员对开发环境完全访问,对测试、生产环境限制访问;测试人员对测试环境只读访问;运维人员对生产环境完全访问。通过环境与角色的权限绑定,确保各环节操作符合安全规范。

1.4 小结

权限分配小结:

  • 1)需要根据不同租户、不同团队、不同角色创建用户或组
  • 2)每个用户或组可能有一个或多个不同空间的不同权限

二、K8s常用权限需求分析

K8s常用权限归纳如下:

  • 1)Namespace列表查看权限
  • 2)日志查看权限
  • 3)执行命令权限
  • 4)Pod删除权限(非生产环境)
  • 5)资源编辑权限
  • 6)其他权限

三、K8s如何进行合理的用户和权限管理

Day020-K8s多用户权限管理-图4 - 副本

K8s 通过以下方式实现合理的用户和权限管理:

1、用户身份管理

定义用户主体(如 userAuserBuserCkube-user),作为权限分配的基础单元,明确操作集群的身份标识,确保所有操作可追溯至具体用户。

2、权限抽象与组合

利用 通用权限列表 拆分细化权限(如查看空间列表、Pod 查日志、执行命令、删除资源、编辑资源等),将这些基础权限组合成不同角色(如管理员、开发者、观察者),实现权限的模块化管理,避免重复定义。

3、资源范围控制

  • 指定空间授权:针对特定 NameSpace(如 NameSpace ANameSpace B)单独授权,允许用户仅在指定命名空间内拥有对应权限,实现资源隔离。
  • 全局授权:对需要跨命名空间操作的用户,授权 “全部空间” 访问权限,平衡灵活性与安全性。

4、细粒度授权策略

通过关联用户、权限列表和资源范围(命名空间),实现精细化控制。例如:为 userA 授权 “全部空间” 的通用权限,为 userB 仅开放 NameSpace A 的部分权限,确保不同用户在对应资源范围内行使合理权限,规避越权风险。