RBAC 基於權限的訪問控制 serviceaccount -- clusterRole clusterRoleBinding

1.Role , RoleBinding 的做用對象都是namespace。html

2.經過RoleRef,能夠看到,RoleBinding對象經過名字,直接引用前面定義的Role,實現subject(user)和Role的綁定node


role -- namespace -- RoleBinding -- mynamespace
                                      |
                               roleRef -- subject -- user -- example-user
                                      |
                               role(mynamespace) -- example-roleshell

 

 

3.Service Account 是面向 namespace 的;json

而且這個 Service Account 只能訪問該 namespace 的資源。Service Account 和 pod、service、deployment 同樣是 kubernetes 集羣中的一種資源.api

4.建立一個能夠訪問全部 namespace 的ServiceAccountjsonp

若是咱們如今建立一個新的 ServiceAccount,須要他操做的權限做用於全部的 namespace,這個時候咱們就須要使用到 ClusterRole 和 ClusterRoleBinding 這兩種資源對象了spa

4.1 建立serviceaccount 對象code

[root@node1 tmp]# cat xiaowei-sa2.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: xiaowei-sa2
namespace: kube-systemhtm

4.2 而後建立一個 ClusterRoleBinding 對象對象

[root@node1 tmp]# cat xiaowei-clusterolebinding.yaml
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: xiaowei-sa2-clusterrolebinding
subjects:
- kind: ServiceAccount
name: xiaowei-sa2
namespace: kube-system
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io

5.從上面咱們能夠看到咱們沒有爲這個資源對象聲明 namespace,由於這是一個 ClusterRoleBinding 資源對象,是做用於整個集羣的,咱們也沒有單獨新建一個 ClusterRole 對象,而是使用的 cluster-admin 這個對象

6.獲取token

$ kubectl get secret xiaowei-sa2-token-nxgqx -o jsonpath={.data.token} -n kube-system |base64 -d # 會生成一串很長的base64後的字符串參考: https://www.qikqiak.com/k8s-book/docs/30.RBAC.html
相關文章
相關標籤/搜索