Kubernetes 之RBAC基于角色的访问控制

RBAC基于角色的访问控制--全拼Role-Based Access Control

Kubernetes 之RBAC基于角色的访问控制_第1张图片
创建k8s账号与RBAC授权使用
1、创建私钥
(umask 077; openssl genrsa -out soso.key 2048)
用此私钥创建一个csr(证书签名请求)文件
openssl  req -new -key soso.key -out soso.csr -subj  "/CN=soso"
拿着私钥和请求文件生成证书
openssl x509 -req -in soso.csr -CA  /opt/kubernetes/ssl/ca.pem  -CAkey /opt/kubernetes/ssl/ca-key.pem -CAcreateserial -out soso.crt -days 365

2、查看证书内容
openssl  x509 -in soso.crt -text -noout
生成账号
kubectl config set-credentials soso --client-certificate=soso.crt --client-key=soso.key --embed-certs=true

3、设置上下文环境--指的是这个账号只能在这个环境中才能用
kubectl config set-context soso@kubernetes --cluster=kubernetes --user=soso

查看当前的工作上下文
kubectl config view

4、切换用户(切换上下文)
kubectl  config use-context soso@kubernetes
验证是否已经切换到了新的上下文
kubectl config current-context
5.测试(还未赋予权限)
kubectl  get pod
Error from server (Forbidden): pods is forbidden: User "soso" cannot list resource "pods" in API group "" in the namespace "default"

创建一个角色(role)---权限
1.先切回管理帐号
kubectl config use-context kubernetes-admin@kubernetes
kubectl config use-context default@kubernetes

创建角色:
kubectl  create role  sosorole --verb=get,list,watch --resource=pod,svc

2.绑定用户soso(上面创建的用户),绑定role为sosorole
kubectl  create  rolebinding sosorole-binding  --role=sosorole  --user=soso

3.切换用户
kubectl  config use-context soso@kubernetes

6.删除soso账号之前绑定的rolebinding
kubectl delete rolebinding sosorole-binding

7.创建clusterrole #可以访问全部的namespace

kubectl create clusterrole sosoclusterrole --verb=get,list,watch --resource=pod,svc

8.绑定集群角色到用户soso
kubectl  create clusterrolebinding soso-rolebinding   --clusterrole=sosoclusterrole --user=soso


kubectl config set-cluster kubernetes \
  --certificate-authority=/opt/kubernetes/ssl/ca.pem \
  --embed-certs=true \
  --server=https://10.115.92.43:6443 \
  --kubeconfig=soso.kubeconfig
  
#设置客户端认证
kubectl config set-credentials soso \
  --client-key=soso.key \
  --client-certificate=soso.crt \
  --embed-certs=true \
  --kubeconfig=soso.kubeconfig
 
#设置默认上下文
kubectl config set-context kubernetes \
  --cluster=kubernetes \
  --user=soso \
  --kubeconfig=soso.kubeconfig
  
#设置当前使用配置 
kubectl config use-context kubernetes --kubeconfig=soso.kubeconfig

你可能感兴趣的:(kubernetes,容器)