Welcome to the K-free blog;|

k-free

园龄:5年8个月粉丝:5关注:7

Kubernetes ---- RBAC授权管理

RBAC(授权插件)

RBAC基于角色访问控制: 

  许可: 对于任何一个被访问的对象(k8s组件),对于对象能施加的操作组合,将某些操作权限赋给角色,就完成了授权;
  角色: 可以让一个用户扮演一个角色,而这个角色拥有些权限,那么这个用户就拥有了这个角色的权限,权限授权给角色,与rolebinding工作在名称空间级别,授予名称空间范围内的许可权限的;
    operations: 允许角色做的操作,写进来就是说明允许,不能定义拒绝;
    subject: 对象,对哪些对象做哪些操作;
    rolebinding:
      将user account OR service account 绑定在哪个角色;
    clusterrole: 定义了角色允许的操作后, 与角色绑定的用户执行的操作位于集群,而不仅限于某个名称空间;
    clusterrolebinding: 将user account OR service account 绑定在哪个角色;

:
  user可通过rolebinding绑定clusterrole:
  所有操作依然是在名称空间范围内,当名称空间过多时,而且每个名称空间都需要一个管理员,直接定义一个clusterrole使用rolebinding就相当于每个用户都是在自己的名称空间中操作的,如果不用这种
  方法的话,有N个名称空间就要创建N个role,N个rolebinding;

创建角色:

复制代码
$ kubectl create role --help
  Usage:
    kubectl create role NAME --verb=verb --resource=resource.group/subresource [--resource-name=resourcename] [--dry-run]
$ kubectl create role pod-reader --verb=get,list,watch --resource=pods --dry-run -o yaml > role-demo.yaml
$ vim role-demo.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: pod-reader
  namespace: default
rules:
- apiGroups:
  - ""
  resources:
  - pods
  verbs:
  - get
  - list
  - watch
$ kubectl get role 
NAME       AGE
pod-reader   39s

$ kubectl describe role pod-reader
....
PolicyRule:
Resources Non-Resource URLs Resource Names     Verbs
--------- ----------------- --------------     -----
pods     []          []           [get list watch]
复制代码

 

rolebinding创建并绑定:

复制代码
$ kubectl create rolebinding --help
  Usage:
    kubectl create rolebinding NAME --clusterrole=NAME|--role=NAME [--user=username] [--group=groupname]
    [--serviceaccount=namespace:serviceaccountname] [--dry-run] [options]
$ kubectl create rolebinding kfree-read-pods --role=pod-reader --user=kfree --dry-run -o yaml > rolebinding-demo.yaml
$ vim rolebinding-demo.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: kfree-read-pods
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: pod-reader
subjects:
  - apiGroup: rbac.authorization.k8s.io
  kind: User
  name: kfree

$ kubectl config use-context kfree@kubernetes
# 发现之前创建的用户已经有了查看pods的权限;
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
deploy-demo-854b57c687-4hbp4 1/1 Running 0 5h26m
deploy-demo-854b57c687-f7txr 1/1 Running 0 5h26m
deploy-demo-854b57c687-t9bbl 1/1 Running 0 5h26m
复制代码

clusterrole创建并绑定:

复制代码
$ kubectl create clusterrole --help
  Usage:
    kubectl create clusterrole NAME --verb=verb --resource=resource.group [--resource-name=resourcename] [--dry-run]
$ kubectl create clusterrole cluster-readers --verb=get,list,watch --resource=pods,deployment --dry-run -o yaml > clusterrole-demo.yaml
$ kubectl apply -f clusterrole-demo.yaml
$ kubectl get clusterrole
....
cluster-readers 
....
复制代码

绑定:

复制代码
$ kubectl create clusterrolebinding --help
  Usage:
    kubectl create clusterrolebinding NAME --clusterrole=NAME [--user=username] [--group=groupname]
    [--serviceaccount=namespace:serviceaccountname] [--dry-run] [options]
$ kubectl create clusterrolebinding kfree-read-all-pods --clusterrole=cluster-readers --user=kfree --dry-run -o yaml > clusterrolebinding-demo.yaml
$ kubectl apply -f clusterrolebinding-demo.yaml
$ kubectl config use-context kfree@kubernetes
# 绑定后发现所有名称空间的deployment与pods资源都可以查看(get,list,watch)
$ kubectl get pods && kubectl get pods -n kube-system
$ kubectl get deploy && kubectl get deploy -n kube-system
复制代码
使用rolebinding绑定clusterrole:
复制代码
$ kubectl delete clusterrolebinding kfree-read-all-pods
$ kubectl create rolebinding kfree-read-pods --clusterrole=cluster-readers --user=kfree --dry-run -o yaml > rolebinding-clusterrole-demo.yaml
$ kubectl apply -f rolebinding-clusterrole-demo.yaml
$ kubectl get rolebinding
NAME       AGE
kfree-read-pods 3m
$ kubectl config view
....    
current-context: kfree@kubernetes
....
$ kubectl get pods -n kube-system
Error from server (Forbidden): pods is forbidden: User "kfree" cannot list resource "pods" in API group "" in the namespace "kube-system"
$ kubectl get pods 
NAME READY STATUS RESTARTS AGE
deploy-demo-854b57c687-4hbp4 1/1 Running 1 18h
deploy-demo-854b57c687-f7txr 1/1 Running 1 18h
deploy-demo-854b57c687-t9bbl 1/1 Running 1 18h
复制代码

 

 

本文作者:k-free

本文链接:https://www.cnblogs.com/k-free-bolg/p/13201408.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   k-free  阅读(195)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 新時代 (ウタ from ONE PIECE FILM RED) Ado
新時代 (ウタ from ONE PIECE FILM RED) - Ado
00:00 / 00:00
An audio error has occurred.

作词 : 中田ヤスタカ

作曲 : 中田ヤスタカ

新時代はこの未来だ

世界中全部 変えてしまえば

変えてしまえば

ジャマモノ やなもの なんて消して

ジャマモノ やなもの なんて消して

この世とメタモルフォーゼしようぜ

ミュージック

キミが起こす マジック

目を閉じれば未来が開いて

目を閉じれば未来が開いて

いつまでも終わりが来ないようにって

この歌を歌うよ

Do you wanna play? リアルゲーム ギリギリ

Do you wanna play? リアルゲーム ギリギリ

綱渡りみたいな旋律

認めない戻れない忘れたい

夢の中に居させて I wanna be free

見えるよ新時代が 世界の向こうへ

さあ行くよ NewWorld

新時代はこの未来だ

新時代はこの未来だ

世界中全部 変えてしまえば

変えてしまえば

果てしない音楽がもっと届くように

夢は見ないわ キミが話した

「ボクを信じて」

あれこれいらないものは消して

あれこれいらないものは消して

リアルをカラフルに越えようぜ

ミュージック

今始まる ライジング

目をつぶりみんなで逃げようよ

目をつぶりみんなで逃げようよ

今よりイイモノを見せてあげるよ

この歌を歌えば

Do you wanna play? リアルゲーム ギリギリ

Do you wanna play? リアルゲーム ギリギリ

綱渡りみたいな運命

認めない戻れない忘れたい

夢の中に居させて I wanna be free

見えるよ新時代が 世界の向こうへ

さあ行くよ NewWorld

新時代わ この未来を

新時代わ この未来を

世界中全部 変えてしまえば 変えてしまえば

果てしない音楽がもっと届くように

夢を見せるよ 夢を見せるよ

新時代だ

新時代だ

新時代だ