1. 程式人生 > 其它 >|NO.Z.00218|——————————|CloudNative|——|KuberNetes&細粒度許可權控制.V02|------------------------------------------------|RBAC.v02|role&ClusterRole|

|NO.Z.00218|——————————|CloudNative|——|KuberNetes&細粒度許可權控制.V02|------------------------------------------------|RBAC.v02|role&ClusterRole|



[CloudNative:KuberNetes&細粒度許可權控制.V02]                                                    [Applications.KuberNetes] [|DevOps|k8s|細粒度許可權控制|RBAC|許可權管理概念|]








一、rbac在安裝k8s的時候就已經啟用了
### --- rbac在安裝的時候就已經啟用它了
~~~     RBAC是可以接入第三方的。   

[root@k8s-master01 ~]# more /usr/lib/systemd/system/kube-apiserver.service 
[Service]
ExecStart=/usr/local/bin/kube-apiserver \
      --authorization-mode=Node,RBAC  \  // 基於RBAC認證已經啟用了   
二、role只作用於namespace之下
### --- 檢視Ingress-nginx的role

[root@k8s-master01 ~]# kubectl get role --all-namespaces
ingress-nginx          ingress-nginx                                    2021-04-21T16:09:29Z
[root@k8s-master01 ~]# kubectl get role -n ingress-nginx
[root@k8s-master01 ~]# kubectl get role -n ingress-nginx -oyaml
- apiVersion: rbac.authorization.k8s.io/v1
  kind: Role    
### --- 指定的role的型別是role

[root@k8s-master01 ~]# kubectl get role -n ingress-nginx ingress-nginx -oyaml 
kind: Role          
~~~     注:kind:是role
rules:
- apiGroups:                        // 這個角色是切片形式的,每個APIGroups是一個切片的集合。
  - ""
  resources:                        // 是對那些資源配置許可權
  - namespaces          
  verbs:                            // verbs是許可權的型別,作用於什麼,get是隻能檢視
  - get
~~~     注:這是一個定義許可權
- apiGroups:
  - ""
  resourceNames:                    // 這個resourceNames是隻能對這一個configmaps進行更新和檢視
  - ingress-controller-leader-nginx
  resources:                        // 也是對configmaps進行授權
  - configmaps
  verbs:                            // 操作型別是:get和update
  - get
  - update
~~~     注:這是一個更細維度的許可權控制
- apiGroups:
  - ""
  resources:
  - configmaps
  verbs:
  - create
~~~     注:定義了對configmap的建立許可權
- apiGroups:
  - ""
  resources:
  - endpoints
  verbs:
  - create
  - get
  - update
~~~     注:對endpoints進行授權的
三、ClusterRole:作用與所有的namespace
### --- 檢視當前的ClusterRole
~~~     注:k8s內建的許可權,可以檢視整個叢集的許可權,就是可以檢視整個namespace的所有資源

[root@k8s-master01 ~]# kubectl get clusterrole
view                                                                   2021-04-09T13:52:18Z 
### --- 匯出view.的許可權

[root@k8s-master01 ~]# kubectl get clusterrole view -oyaml > /tmp/view.yaml
 [root@k8s-master01 ~]# vim /tmp/view.yaml  
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole                   // 可以看到kind是ClusterRole許可權 
#許可權的規則的寫法是一致的,就是型別不一樣。 
rules:
- apiGroups:
  - ""
  resources:
  - configmaps
  - endpoints
  - persistentvolumeclaims
  - persistentvolumeclaims/status   // 這個status相當於PVC的下級資源
  - pods
  - replicationcontrollers
  - replicationcontrollers/scale        
  - serviceaccounts
  - services
  - services/status
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - ""
  resources:
  - bindings
  - events
  - limitranges
  - namespaces/status
  - pods/log                        // 經常用到的是pods/log,
  - pods/status
  - replicationcontrollers/status
  - resourcequotas
  - resourcequotas/status
  verbs:
  - get                             // 檢視
  - list                            // 列出所有資源
  - watch                           // 檢視相當於w的許可權








===============================END===============================


Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart                                                                                                                                                    ——W.S.Landor



來自為知筆記(Wiz)