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


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

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


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

 

 

3.Service Account 是面向 namespace 的;

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

4.創建一個可以訪問所有 namespace 的ServiceAccount

如果我們現在創建一個新的 ServiceAccount,需要他操作的權限作用於所有的 namespace,這個時候我們就需要使用到 ClusterRole 和 ClusterRoleBinding 這兩種資源對象了

4.1 創建serviceaccount 對象

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM