Role
Role只是一组许可权限集合,名称空间级别的资源,资源配置清单中使用rules字段嵌套授权规则。
例:
vim Role_test.yaml
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: testing
name: pods-reader
rules:
- apiGroups: [""] # ""标示 core API group
resources: ["pods","pods/log"]
verbs: ["get","list","watch"]
- apiGroups: 包含了资源的API组名,支持列表格式指定的多个组,空串””标示核心组。
- resourceNames: 规则应用的目标资源名称列表,可选,缺省时意味着指定资源类型下的所有资源。
- resources: 规则应用的目标资源类型组成的列表,如 “deployments pods daemonsets roles”
- verbs: 可操作列表,必选字段,其值可以有”get list create udate patch watch proxy redirect delete deletecollection”
出了编写配置清单创建Role资源之外,还可以使用 “kubectl greate role” 来创建
kubectl create role pods-reader --verb="*" --resource="service,services/*" -n testing
RoleBinding
RoleBinding用于将Role中定义的权限赋予一个或一组用户,它由一组主题,以及一个要引用来赋予这组主题的Role组成。RoleBinding可以绑定Role也能ClusterRole。当RloeBinding绑定在ClusterRole资源之上时,用户只可以访问名称空间内的ClusterRole权限。如下示例,将pods-reader定义的权限赋予用户carry,从而使carry拥有次角色的权限许可。
vim RoleBinding_to_carry.yaml
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: resources-reader
namespace: testing
subjects:
- kind: User
name: carry
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: pods-reader
apiGroup: rbac.authorization.k8s.io
- subjects.apiGroup: 主要引用的主题所属的API群组,对于ServiceAccount类的主体来说默认为””,User和Group类主题的默认值为”rbac.authorization.k8s.io”
- subjects.kind: 要引用的资源对象类别
- subjects.name: 引用的主体的名称,必选字段
- subjects.namespace: 引用的主题所属名称空间
- roleRef.apiGroup: 引用的资源(Role或ClusterRole)所属的API群组,
- roleRef.kind: 引用的资源所属类别
- roleRef.name: 引用的资源名称
RoleBinding也可以在命令行中定义如下:
kubectl create rolebinding pods-reader --role=pods-reader --user=carry -n testing
文档更新时间: 2019-07-29 22:08 作者:张尚