kubernetes RBAC授权配置
一、RBAC授权流程图:
角色分类有两种:
Role:普通角色,可以应用于某一个命名空间,使用的是RoleBinding与User、Group、serviceaccount进行角色绑定
ClusterRole:集群角色,应用于整个集群,所有命名空间,使用的是ClusterRoleBinding与User、Group、serviceaccount进行集群角色绑定
主体:
User:根据ssl证书CN字段上配置的
Group:根据ssl证书O字段上配置的
serviceaccount:应用于服务配置的,根据serviceAccountName进行应用到yaml文件中
操作(verbs)
get、list、watch、create、delete、deletecollection、patch、update
查询权限:get、list、watch
修改权限:create、delete、deletecollection、patch、update
二、用户与角色绑定实例
2.1、创建证书文件
k8s的User是从CN上配置的。 组是从O上配置的。这个用户或者组用于后面的角色绑定使用,下图创建了User为ahi,Group为system:k8s-user
cat > ahi-csr.json << EOF EOF |
2.2、生成证书文件
cfssl gencert -ca=/opt/kubernetes/ssl/ca.pem -ca-key=/opt/kubernetes/ssl/ca-key.pem -config=/root/k8s/install/ssl/ca/ca-config.json -profile=kubernetes ahi-csr.json | cfssljson -bare ahi
2.3、配置ahi用户的kubectl
配置apiserver地址:
kubectl config set-cluster kubernetes --certificate-authority=/home/ahi/.kube/keys/ca.pem --server=https://172.21.0.7:6443
设置客户端认证参数:
kubectl config set-credentials ahi --client-certificate=/home/ahi/.kube/keys/ahi.pem --client-key=/home/ahi/.kube/keys/ahi-key.pem
设置上下文参数:
kubectl config set-context kubernetes --cluster=kubernetes --user=ahi
设置莫认上下文:
kubectl config use-context kubernetes
2.4、授权ahi用户只能访问default命名空间的pod、services
--- resources: ["pods","services"] ## 授权pods、services可访问 verbs: ["get","list","watch"] ## 只有查询的操作 --- |
2.5、经过授权后的用户访问其它资源的报错信息
相关地址链接:
https://www.kubernetes.org.cn/4062.html
https://studygolang.com/articles/11730?fr=sidebar