千家信息网

K8S RBAC详解

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,一.RBAC介绍 RBAC是kubernetes的一种认证访问授权机制,通过设置-authorization-mode=RBAC开启RBAC。RBAC的授权步骤分为两步:1)定义角色:在定义角色时会
千家信息网最后更新 2025年12月02日K8S RBAC详解

一.RBAC介绍

  RBAC是kubernetes的一种认证访问授权机制,通过设置-authorization-mode=RBAC开启RBAC。RBAC的授权步骤分为两步:

1)定义角色:在定义角色时会指定此角色对于资源的访问控制的规则;

2)绑定角色:将主体与角色进行绑定,对用户进行访问授权。

如下是官网的图解:

二. role和clusterrole

role是权限的定义,在kubernetes中角色分为两种一种是role针对特定的命名空间,一种是clusterrole在整个集群范围内都生效。

例子如下:

kind: RoleapiVersion: rbac.authorization.k8s.io/v1metadata:  namespace: default  name: pod-readerrules:- apiGroups: [""] # "" indicates the core API group  resources: ["pods"]  verbs: ["get", "watch", "list"]

clusterrole 例子如下:

kind:ClusterRoleapiVersion:rbac.authorization.k8s.io/v1metadata:  name:secret-readerrules:- apiGroups:[""]  resources:["secrets"] #明确资源类型  verbs:["get","watch","list"]

三. serviceaccount
Service account是为了方便Pod里面的进程调用Kubernetes API或其他外部服务而设计的,可以简单的理解为服务账户,一般RBAC的最普遍的使用都是使用serviceaccount,因为k8s默认的user资源是不在集群管理内的,而且使用方式过于繁琐。serviceaccount可以简单方便的实现认证和授权。
四. RoleBinding和clusterrolebinging
定义好了角色也就是一个权限的集合,然后创建了一个serviceaccount也就是一个服务账号,然后将这两个东西绑定起来,就是授权的过程了。
例子如下:

kind:RoleBindingapiVersion:rbac.authorization.k8s.io/v1metadata:  name:read-pods  namespace:defaultsubjects: #主体- kind:ServiceAccount  name:jane  apiGroup:rbac.authorization.k8s.ioroleRef: #引用的角色  kind:Role  name:pod-reader  apiGroup:rbac.authorization.k8s.io

集群角色绑定同上

kind:ClusterRoleBindingapiVersion:rbac.authorization.k8s.io/v1metadata:  name:read-secrets-globalsubjects:- kind:ServiceAccount  name:manager  apiGroup:rbac.authorization.k8s.ioroleRef:  kind:ClusterRole  name:secret-reader  apiGroup:rbac.authorization.k8s.io

这样就完成了一个完整的授权!!!

0