TKE 提供了对接 Kubernetes RBAC 的授权模式,便于对子账号进行细粒度的访问权限控制。该授权模式下,可通过容器服务控制台及 kubectl 两种方式进行集群内资源访问。如下图所示:
名词解释
RBAC(Role-Based Access Control)
基于角色的权限控制。通过角色关联用户、角色关联权限的方式间接赋予用户权限。
在 Kubernetes 中,RBAC 是通过
rbac.authorization.k8s.io
API Group 实现的,即允许集群管理员通过 Kubernetes API 动态配置策略。Role
用于定义某个命名空间的角色的权限。
ClusterRole
用于定义整个集群的角色的权限。
RoleBinding
将角色中定义的权限赋予一个或者一组用户,针对命名空间执行授权。
ClusterRoleBinding
将角色中定义的权限赋予一个或者一组用户,针对集群范围内的命名空间执行授权。
TKE Kubernetes 对象级别权限控制方案
认证方式
Kubernetes APIServer 支持丰富多样的认证策略,例如 x509 证书、bearer token、basic auth。其中,仅 bearer token 单个认证策略支持指定 known-token csv 文件的 bearer token、serviceaccount token、OIDC token、webhook token server 等多种 token 认证方式。
TKE 分析了实现复杂性及多种场景等因素,选择使用 x509 证书认证方式。其优势如下:
用户理解成本低。
对于存量集群无需进行复杂变更。
按照 User 及 Group 进行划分,后续扩展性好。
TKE 基于 x509 证书认证实现了以下功能:
每个子账号单独具备客户端证书,用于访问 Kubernetes APIServer。
当子账号在控制台访问 Kubernetes 资源时,后台默认使用该子账号的客户端证书去访问用户 Kubernetes APIServer。
支持子账号更新独有的客户端证书,防止凭证泄露。
支持主账号或使用集群
tke:admin
权限的账号进行查看、更新其他子账号的证书。授权方式
Kubernetes 包含 RBAC 及 Webhook Server 两种主流授权模式。为给熟悉 Kubernetes 的用户提供一致性体验,并且需要与原生 Kubernetes 结合使用,TKE 选择使用 RBAC 模式。该模式提供了预设 Role 及 ClusterRole,用户只需要在集群内创建相应的 RoleBinding 和 ClusterRoleBinding 即可实现授权变更。其优势如下:
亲和有 Kubernetes 基础的用户。
复用 Kubernetes RBAC 能力,支持 Namespace 维度、APIGroup 维度及资源维度的多种 Verb 权限控制。
支持用户自定义策略。
支持管理用户自定义的扩展 API 资源。
TKE Kubernetes 对象级别权限控制功能
通过 TKE 提供的授权管理功能,您可以进行更细粒度的权限控制。例如,仅赋予某个子账号只读权限或仅赋予某个子账号下的某个命名空间读写权限等。可参考以下文档,对子账号进行更细粒度的权限控制: