在CentOS上进行K8s权限管理,核心是通过**RBAC(基于角色的访问控制)**实现,步骤如下:
启用RBAC
确保API服务器启动时添加参数--authorization-mode=RBAC。
定义权限对象
Role:定义单个命名空间内的权限(如default命名空间内操作Pod)。ClusterRole:定义集群全局权限(如访问所有命名空间的Secrets)。apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: pod-reader
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch"]
绑定权限到用户/服务账户
Role绑定到特定命名空间的用户或服务账户。apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: read-pods-binding
namespace: default
subjects:
- kind: User
name: jane
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: pod-reader
apiGroup: rbac.authorization.k8s.io
ClusterRole绑定到全局用户或服务账户。验证权限
使用命令检查用户是否有权限执行操作:
kubectl auth can-i <verb> <resource> --namespace <命名空间> --as <用户名>
# 示例:检查用户jane是否有权限在default命名空间列出Pod
kubectl auth can-i list pods --namespace default --as jane
安全加固建议
RoleBinding。ClusterRole的*通配符权限。参考来源: