k8s rbac 角色管理

关于RBAC的概念我这里就不阐述了(能力有限说不明白)

role是权限的集合,定义了这个角色有什么权限。

binding 是关联这个权限集合,让你继承role权限。

k8s使用上经常犯的错误:

binding时没有指定用户,自定义的证书里面是写了用户的,去匹配k8s里面同名的用户去获取权限。

正确:

k8s rbac 角色管理

错误:

k8s rbac 角色管理

k8s rbac 角色管理

证书制作:

官网步骤如下:

 

k8s rbac 角色管理

k8s rbac 角色管理

1. 创建key

openssl genrsa -out server.key 2048

2. 创建 csr,指定用户(CN=用户名)这步很重要,用户名要与binding的subects里user一致。

openssl req -new -key server.key -out server.csr -subj "/CN=test"

3.使用k8s里面的ca证书进行签发证书,生成crt

openssl x509 -req -in server.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out server.crt -days 10000

制作:config 文件

1. set-credentials。 使用自己制作的证书,--kubeconfigg 保存到新文件中,默认保存到 当前用户 /home/家目录/.kube/config

kubectl config --kubeconfig test  set-credentials test --client-certificate=./server.crt  --client-key=./server.key  --embed-certs=true

2. set-cluster 添加 集群信息。 --certificate-authority 如果server 是使用https 的一定要添加上k8s 的证书。 不然报证书验证错误。

kubectl config  --kubeconfig test set-cluster test --server=https://192.168.229.135:6443 --certificate-authority=/etc/kubernetes/pki/ca.crt --embed-certs=true

3. 定义上下文信息, user 须与 证书 CN 项 和 binding 的 --user 一致。

kubectl config --kubeconfig test  set-context test --cluster=test --user=test

4. 定义默认使用哪一个上下文 

kubectl config --kubeconfig test set-context --current --cluster=test

 

验证:

案例1 : clusterrolebinding cluster-admin  拥有管理员权限:

1. clusterrolebinding 管理员

kubectl create clusterrolebinding test --clusterrole=cluster-admin

k8s rbac 角色管理

案例2:  rolebinding cluster-admin 绑定default 命名空间拥有最高管理权限。

kubectl create rolebinding test --clusterrole=cluster-admin  --user=test -n default

k8s rbac 角色管理

 

扩展:

自定义role:

kubectl create role  otherrole --verb=get,create,delete,watch --resource=deployment,statefulset,daemonset,pods

系统预设的clusterrole有:

view

edit

常用的 verb :

查看类

  - get
  - list
  - watch
编辑类:

  - create
  - delete
  - deletecollection
  - patch
  - update
 

 

上一篇:RGAC-laravel权限管理


下一篇:应对“角色爆炸”,PBAC 真香!