1.介绍
在 Kubernetes 项目中,负责完成授权(Authorization)工作的机制,就是 RBAC:基于角色的访问控制(Role-Based Access Control)。
Role:角色,它其实是一组规则,定义了一组对 Kubernetes API 对象的操作权限。
Subject:被作用者,即User或ServiceAccount。
RoleBinding:定义了“被作用者”和“角色”的绑定关系。

2.RoleBinding
只针对指定Namespace生效
创建ServiceAccount
apiVersionv1
kindServiceAccount
metadata
namespacemynamespace
nameexample-sa设置role:example-role的权限
拥有pod的"get", "watch", "list"权限
拥有某个pod的"get", "watch", "list"权限
kindRole
apiVersionrbac.authorization.k8s.io/v1
metadata
namespacemynamespace
nameexample-role
rules
apiGroups""
resources"pods"
resourceNames"my-pod"
verbs"get" "watch" "list"设置哪个User拥有上面的角色
这里的user需要通过外部认证服务,比如 Keystone,来提供。
kindRoleBinding
apiVersionrbac.authorization.k8s.io/v1
metadata
nameexample-rolebinding
namespacemynamespace
subjects
kindUser
nameexample-user
apiGrouprbac.authorization.k8s.io
roleRef
kindRole
nameexample-role
apiGrouprbac.authorization.k8s.io设置哪个ServiceAccount拥有上面的角色
kindRoleBinding
apiVersionrbac.authorization.k8s.io/v1
metadata
nameexample-rolebinding
namespacemynamespace
subjects
kindServiceAccount
nameexample-sa
namespacemynamespace
roleRef
kindRole
nameexample-role
apiGrouprbac.authorization.k8s.io3.ClusterRoleBinding
对所有Namespace生效
设置ClusterRole权限
kindClusterRole
apiVersionrbac.authorization.k8s.io/v1
metadata
nameexample-clusterrole
rules
apiGroups""
resources"pods"
verbs"get" "watch" "list"设置哪个ServiceAccount拥有上面的角色
kindClusterRoleBinding
apiVersionrbac.authorization.k8s.io/v1
metadata
nameexample-clusterrolebinding
subjects
kindServiceAccount
nameexample-sa
namespacemynamespace
roleRef
kindClusterRole
nameexample-clusterrole
apiGrouprbac.authorization.k8s.io4.Group概念
Kubernetes 还拥有“用户组”(Group)的概念,也就是一组“用户”的意思。
一个 ServiceAccount,在 Kubernetes 里对应的“用户”的名字是:
system:serviceaccount:<Namespace名字>:<ServiceAccount名字>它对应的内置“用户组”的名字,就是
system:serviceaccounts:<Namespace名字>举例如下规则1:
意味着这个 Role 的权限规则,作用于整个系统里的所有 ServiceAccount
subjects
kindGroup
namesystemserviceaccounts
apiGrouprbac.authorization.k8s.io举例如下规则2:
意味着这个 Role 的权限规则,作用于 mynamespace 里的所有 ServiceAccount。这就用到了“用户组”的概念。
subjects
kindGroup
namesystemserviceaccountsmynamespace
apiGrouprbac.authorization.k8s.io更多介绍查看我的另一篇文章
https://blog.51cto.com/u_10983441/4976185










