权限控制
此处要介绍的是基于rbac 的权限控制,主要涉及四个概念,角色(role,clusterrole),角色绑定(rolebinding,clusterrolebinding),授权对象(serviceaccount, user),权限(apiGroups,resources,verbs)
serviceaccount 与 user 区别
sa 通常都是用于pod 中的应用授权,例如pod 中的程序要访问集群做一些操作就可以使用sa ,默认pod 都都有一个default sa
user 通常是给人使用的,标记的是个人,例如在kubectl 配置文件中的多用户就是用user 定义的。
但是两者的使用没有严格限制
基于serviceaccount 的权限分配
命名空间的角色授权
###角色就是绑定了一些权限,角色是基于命名空间的,集群角色才是全局的,也就是角色绑定给用户或者sa都是作用在固定命名空间的。 apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: {{ .Release.Name }} rules: - apiGroups: - "*" resources: - "*" verbs: - list - get - create ###RoleBinding 是命名空间资源对象,把serviceaccount 与role 绑定在一起 apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: {{ .Release.Name }}-binding RoleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: {{ .Release.Name }} subjects: - kind: ServiceAccount name: {{ .Release.Name }} ###serviceaccount 是基于命名空间的,伴随着它的创建,命名空间内会自动生成与它同名的token apiVersion: v1 kind: ServiceAccount metadata: name: {{ .Release.Name }}