Role

  Role只是一组许可权限集合,名称空间级别的资源,资源配置清单中使用rules字段嵌套授权规则。
例:

  1. vim Role_test.yaml
  2. kind: Role
  3. apiVersion: rbac.authorization.k8s.io/v1
  4. metadata:
  5. namespace: testing
  6. name: pods-reader
  7. rules:
  8. - apiGroups: [""] # ""标示 core API group
  9. resources ["pods","pods/log"]
  10. 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” 来创建

  1. 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拥有次角色的权限许可。

  1. vim RoleBinding_to_carry.yaml
  2. kind: RoleBinding
  3. apiVersion: rbac.authorization.k8s.io/v1
  4. metadata:
  5. name: resources-reader
  6. namespace: testing
  7. subjects:
  8. - kind: User
  9. name: carry
  10. apiGroup: rbac.authorization.k8s.io
  11. roleRef:
  12. kind: Role
  13. name: pods-reader
  14. 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也可以在命令行中定义如下:

  1. kubectl create rolebinding pods-reader --role=pods-reader --user=carry -n testing
文档更新时间: 2019-07-29 22:08   作者:张尚