Kubernetes 集群授权与准入控制详解
1. 授权模块概述
Kubernetes 支持多种授权模块,包括:
- ABAC(基于属性的访问控制)
- RBAC(基于角色的访问控制)
- 节点授权
- Webhook
- 自定义模块
在 RBAC 引入之前,ABAC 是主要的授权模式。节点授权由 kubelet 用于向 API 服务器发出请求。Kubernetes 支持 Webhook 授权模式,可与外部 RESTful 服务建立 HTTP 回调。也可以通过实现自定义模块来进行授权,具体实现信息可参考相关文档。下面重点介绍如何在 Kubernetes 中使用 RBAC。
2. 基于角色的访问控制(RBAC)
自 Kubernetes 1.6 起,RBAC 默认启用。在 RBAC 中,管理员创建多个角色(Role)或集群角色(ClusterRole),定义细粒度的权限,指定角色可以访问和操作的一组资源和操作(动词)。然后,管理员通过角色绑定(RoleBinding)或集群角色绑定(ClusterRoleBinding)将角色权限授予用户。
不同环境启用 RBAC 的方式如下:
- minikube :使用 minikube start
时添加 --extra-config=apiserver.Authorization.Mode=RBAC
。
- AWS 上的自托管集群(kops) :启动集群时添加 --authoriz