K8S權限管理-普通用戶


普通用戶的信息無法通過 API 調用添加到集群中。Kubernetes 能夠提供由集群的證書 機構簽名的合法證書的用戶是通過身份認證的用戶。基於這樣的配置,Kubernetes 使用證書中的 'subject' 的通用名稱(Common Name)字段(例如,"/CN=bob")來 確定用戶名。接下來,基於角色訪問控制(RBAC)子系統會確定用戶是否有權針對 某資源執行特定的操作。

1、創建證書

1.1、k8s證書和私鑰:

kubeasz安裝的k8s集群:

          kubernetes-ca的私鑰和公鑰:ca.pem和ca-key.pem

           管理服務器上/etc/kubeasz/clusters/myland-01/ssl/  ca.pem和ca-key.pem #myland-01為k8s集群名稱

           master節點:在/etc/kubernetes/ssl/下 

kubeadm安裝的k8s集群:

          私鑰和公鑰:ca.key和ca.crt

          位置: master節點:在/etc/kubernetes/pki/ 下 

 

1.2、新建文件夾用於工作目錄,為了輸入簡單也可以把上述ca.pem和ca-key.pem也復制到這個文件夾

mkdir pki

cd pki

cp /etc/kubeasz/clusters/myland-01/ssl/ca.pem ./

cp /etc/kubeasz/clusters/myland-01/ssl/ca-key.pem ./ 

1.3、創建用戶的私鑰(如:user1)

 (umask 077;openssl genrsa -out user1.key 2048) 

1.4、創建證書簽署請求

 openssl req -new -key user1.key -out user1.csr -subj "/O=myland-01 /CN=user1" 

O:組織名 CN:用戶名

1.5、簽署證書

 openssl x509 -req -in user1.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out user1.crt -days 365 

2、創建配置文件

2.1、集群配置

kubectl config set-cluster myland-01 --server=https://10.0.8.101:6443 \

--certificate-authority=ca.pem \

--embed-certs=true \

--kubeconfig=/data/project/pki/user1.conf 

2.2、用戶配置

kubectl config set-credentials user1 \

--client-certificate=/data/project/pki/user1.crt \

--client-key=user1.key \

--embed-certs=true \

--kubeconfig=/data/project/pki/user1.conf 

2.3、創建context

kubectl config set-context user1@myland-01 \

--cluster=myland-01 \

--user=user1 \

--kubeconfig=/data/project/pki/user1.conf 

查看該kubeconfig信息

2.4、切換context

  kubectl config use-context user1@myland-01 --kubeconfig=/data/project/pki/user1.conf 

 3、綁定角色

上述操作完成后,用戶還沒有具體的訪問權限,創建Role和RoleBinding,為該用戶授權

只有test名稱空間的相關權限

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: test
  name: pods-reader    
rules: 
- apiGroups: [""] 
  resources: ["pods","services","pods/*"]  
  verbs: ["get","watch","list","create"] 
/role-pod-reader.yaml
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: user1
  namespace: test
subjects:
- kind: User
  name: user1
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: pods-reader
  apiGroup: rbac.authorization.k8s.io
role-binding-user1.yaml

4、驗證

kubectl --kubeconfig /data/project/pki/user1.conf get pods -n test 

 


免責聲明!

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



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