K8SRBAC详解
一.RBAC介绍
RBAC是kubernetes的一种认证访问授权机制,通过设置–authorization-mode=RBAC开启RBAC。RBAC的授权步骤分为两步:
1)定义角色:在定义角色时会指定此角色对于资源的访问控制的规则;
创新互联公司2013年成立,是专业互联网技术服务公司,拥有项目成都网站设计、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元仁寿做网站,已为上家服务,为仁寿各地企业和个人服务,联系电话:13518219792
2)绑定角色:将主体与角色进行绑定,对用户进行访问授权。
如下是官网的图解:
二. role和clusterrole
role是权限的定义,在kubernetes中角色分为两种一种是role针对特定的命名空间,一种是clusterrole在整个集群范围内都生效。
例子如下:
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: default
name: pod-reader
rules:
- apiGroups: [""] # "" indicates the core API group
resources: ["pods"]
verbs: ["get", "watch", "list"]
clusterrole 例子如下:
kind:ClusterRole
apiVersion:rbac.authorization.k8s.io/v1
metadata:
name:secret-reader
rules:
- apiGroups:[""]
resources:["secrets"] #明确资源类型
verbs:["get","watch","list"]
三. serviceaccount
Service account是为了方便Pod里面的进程调用Kubernetes API或其他外部服务而设计的,可以简单的理解为服务账户,一般RBAC的最普遍的使用都是使用serviceaccount,因为k8s默认的user资源是不在集群管理内的,而且使用方式过于繁琐。serviceaccount可以简单方便的实现认证和授权。
四. RoleBinding和clusterrolebinging
定义好了角色也就是一个权限的集合,然后创建了一个serviceaccount也就是一个服务账号,然后将这两个东西绑定起来,就是授权的过程了。
例子如下:
kind:RoleBinding
apiVersion:rbac.authorization.k8s.io/v1
metadata:
name:read-pods
namespace:default
subjects: #主体
- kind:ServiceAccount
name:jane
apiGroup:rbac.authorization.k8s.io
roleRef: #引用的角色
kind:Role
name:pod-reader
apiGroup:rbac.authorization.k8s.io
集群角色绑定同上
kind:ClusterRoleBinding
apiVersion:rbac.authorization.k8s.io/v1
metadata:
name:read-secrets-global
subjects:
- kind:ServiceAccount
name:manager
apiGroup:rbac.authorization.k8s.io
roleRef:
kind:ClusterRole
name:secret-reader
apiGroup:rbac.authorization.k8s.io
这样就完成了一个完整的授权!!!
网页标题:K8SRBAC详解
本文URL:http://scyanting.com/article/jegieg.html