今天要討論的是當我們對API Server下Request時的權限控管,首先我們要談的是Kubernetes的API~
Kubernetes的API主要分為兩大類:
其他的API Groups可以在官網中找到,或是直接問我們的API Server~
# 看全部的API Groups
curl [http://localhost:6443](http://localhost:6443) -k
# 只看Named Groups
curl h[ttp://localhost:6443](http://localhost:6443)/apis -k | grep "name"
如果我們直接Call API Server,那麼高機率會出現Failure。這是因為我們沒有權限可以做這件事,那要如何做到呢?只需要加上授權,讓集群的安全機制知道我們是有受過認證的就行了~
curl [http://localhost:6443](http://localhost:6443) -k --key admin.key --cert admin.crt --cacert ca.crt
我們還可以透過kubectl來代替我們做到這件事~
kubectl proxy
這行指令的作用是將本地的8001 Port,作為API Server的代理,所以當kubectl proxy正在運作時,我們就可以直接透過8001 Port來對API Server下指令而不需要授權了~
curl [http://localhost:](http://localhost:6443)8001 -k
另外要注意的是,這邊的kubectl proxy和kube proxy是不同的喔~
我們在使用Kubernetes應該會有很多種角色,像是管理人員、開發者、Bots,而他們彼此之間所需要的功能與權限也不是一樣的,為了安全性考量,控管他們的權限就是非常重要的。
Kubernetes的權限控管機制主要可以分為四大類:
除了這四種機制以外,還有另外兩種模式:
要設定這些權限控管模式可以在API Server中使用這個參數:
--authorization-mode=RBAC
# 也可以同時設置多個
--authorization-mode=Node,RBAC,Webhook
若是同時設置多個模式,那系統在會先測試某一個,若是發生錯誤,再測試下一個,直到成功或是全都失敗才結束。
明天會討論RBAC~