k8s新建用戶並授權


k8s中用戶與用戶組

在k8s中也有用戶和組的概念,只是不如openshift那么清晰與好操作。但是原理基本上可以套用,畢竟openshift可以看作是k8s的封裝發行版,可參考Openshift用戶與權限思維導圖

新建用戶

新建一個k8s用戶大概可以分為以下幾步:

  • 生成用戶的證書key
  • 通過用戶的證書key,生成用戶的證書請求
  • 通過k8s的api的ca證書去簽發用戶的證書請求,生成用戶的證書
  • 配置kubectl config
    • kubectl config set-cluster                           //集群配置
    • kubectl config set-credentials NAME         //用戶配置
    • kubectl config set-context                  //context配置
    • kubectl config use-context                 //切換context

具體操作:

# (umask 077; openssl genrsa -out baison.key 2048)      //創建用戶證書key
# openssl req -new -key baison.key -out baison.csr -subj "/O=Baison/CN=baison"      //創建用戶證書請求,-subj指定組和用戶,其中O是組名,CN是用戶名
# openssl x509 -req -in baison.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out baison.crt -days 3650      //使用k8s的ca簽發用戶證書
# kubectl config set-credentials baison --client-certificate=baison.crt --client-key=baison.key --embed-certs=true      //用戶配置
# kubectl config set-context baison@kubernetes --cluster=kubernetes --user=baison      //context設置

# 可以切換到新用戶了,但此時用戶啥權限都沒有
# kubectl config use-context baison@kubernetes

簡單說明:

  • 沒有使用kubectl config set-cluster ,因為集群就使用本身的集群,也默認使用本集群的默認config文件
  • kubectl config set-cluster --kubeconfig=/PATH/TO/SOMEFILE    ---kubeconfig=/PATH/TO/SOMEFILE用於創建新的配置文件,如果不加此選項,則內容會添加到家目錄下.kube/config文件中,可以使用use-context來切換不同的用戶管理k8s集群
  • context,就是用什么用戶來管理哪個集群,即用戶和集群的結合

用戶授權

k8s的用戶授權有很多種,其中最普遍的是RBAC——基於角色的授權機制。

  • 某個用戶屬於某個角色
  • 某個角色擁有某些操作
  • 某些操作綁定到某些資源上

即最終效果是:某個用戶對某些資源擁有某些操作。下面以上面創建的baison用戶為例,讓此用戶對default空間擁有查看pod與進入到pod里的權限。

# kubectl create role only-read-pods --verb=get,list,watch,create --resource=pod,pod/exec
# kubectl create rolebinding bind-only-read-pods --role=only-read-pods --user=baison

簡單說明:

  • 除了role、rolebinding外,還有cluserrole、clusterrolebinding,他們的區別就是作用域不同,很明顯帶cluser的作用與整個集群。
  • rolebinding可以綁定role,也可以綁定clusterrole,綁定cluserrole的時候,clusterrole作用域降級為namespace級別。
  • 集群有很多內置role、rolebinding和cluserrole、clusterrolebinding,可以用yaml方式打開作為借鑒。


免責聲明!

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



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