共計 2323 個字符,預計需要花費 6 分鐘才能閱讀完成。
這篇文章主要講解了“怎么理解 Kubernetes 認證和授權”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“怎么理解 Kubernetes 認證和授權”吧!
當設置產品 Kubernetes 集群的時候,認證和授權是兩個很重要的基本需求。在這篇文章中,讓我們來瀏覽一些細節,這些細節可以幫助 Kubernetes 環境做好方案。
比如說,你現在已經引發了通過輸入 yaml 文件到 kubectl(kubectl create-f pod.yaml)創建 POD 的命令。這個命令被發送到有安全保障的 api-server 端口(http://),然后身份驗證流就開始生效了。注意,如果你正在為 api-server 使用不安全的端口(http://),那么驗證就無法應用。(http://)理想情況下生產環境設置中應該避免不安全端口(http://)。
以下是這篇文章中會提到的在 Kubernetes 中可使用的驗證途徑。
客戶證書驗證
為了使用這個方案,api-server 需要用-client-ca-file= PATH_TO_CA_CERTIFICATE_FILE 選項來開啟。
CA_CERTIFICATE_FILE 肯定包括一個或者多個認證中心,可以被用來驗證呈現給 api-server 的客戶端證書。客戶端證書的/CN 將作為用戶名。
基于令牌的身份驗證
為了使用這個方案,api-server 需要用-token-auth-file= PATH_TO_TOKEN_FILE 選項來開啟。TOKEN_FILE 是個 csv 文件,每個用戶入口都有下列格式:token,user,userid,group。
Group 的名字是隨意的。
令牌文件的例子:
生成 tokens 的一個非常簡單的方法就是運行以下命令:
基于令牌的身份驗證面臨的挑戰就是,令牌是無期限的,而且對令牌清單做任何的修改都需要重新啟動 api-server。
基本認證
為了使用這個方案,api-server 需要使用-basic-auth-file= PATH_TO_HTTP_AUTH 選項來開啟。HTTP_AUTH_FILE 是個 csv 文件,每個用戶入口都有下列格式:password,user name,userid。目前,對 AUTH_FILE 的任意修都需要重新啟動 api-server。
Open ID
Open ID 支持也是可用的,但是還在試驗階段。
Keystone
Keystone 支持也是可用的,但是還在試驗階段。如果你想要將 keystone 跟 LDAP 或者動態目錄服務整合到一起,那么就要使用 keystone 認證方法。為了使用這個方案,api-server 需要用-experimental-keystone-url= KEYSTONE_URL 選項來開啟服務。
驗證成功之后,下一步就是找出對于驗證用戶來說,哪些操作是允許的。目前來講,Kubernetes 支持 4 種驗證策略方案。api-server 需要使用-authorization-mode= AUTHORIZATION_POLICY_NAME 選項來開啟。
始終否認
這個策略否認所有的請求。
始終允許
這個策略允許所有的請求。
基于屬性的訪問控制
ABAC 允許靈活的用戶特定授權策略。當使用-authorization-policy-file= PATH_TO_ABAC_POLICY_FILE 選項開啟 api-sever 的時候,ABAC 的策略文件需要指定。目前,對策略文件有任何的修改都需要重啟 api-server。
ABAC 策略文件樣本如下所示:
在以上例子中,策略文件中的每一行都是 JSON 對象,且指定一個策略。這是從 Kubernetes 文檔頁面上對策略對象的簡要描述。
版本控制特性——允許多版本和策略的轉換格式。
api 版本,字符串類型:有效值就是“abac.authorization.kubernetes.io/v1beta1”。
kind,字符串類型:有效值是“policy”。
規格屬性——是一個用以下屬性的映射:
面向對象匹配屬性:
用戶,字符串:用戶字符串不是從-token-auth-file,就是從證書文件的普通名字(CN)而來。如果你指定用戶,那么它就肯定跟經過身份驗證的用戶匹配。*跟所有請求都匹配。
group,字符串:如果你指定 group,那么它肯定跟 groups 中經過身份驗證的用戶相匹配。*跟所有請求都匹配。
資源匹配屬性
apiGroup,字符串類型:API group,比如拓展版本。*跟所有 APIgroup 相匹配。
命名空間,字符串類型:命名空間字符串。*跟所有的資源請求相匹配。
資源,字符串類型:資源,比如 pods。*匹配所有的資源請求。
非資源匹配屬性:
nonResourcePath,字符串類型:跟所有的非資源請求路徑相匹配(比如/version,/apis)。*跟匹配所有非資源請求。/foo/*跟/foo/,以及它的子路徑。
只讀,布爾型:當為真,也就意味著策略只應用于獲取,列出和監測操作。
Webhook
調出一個外部 RESTful 授權服務。
身份驗證和授權機制的選擇取決于你的要求。然而在我的經驗看來,我發現基于證書的身份驗證方法,基于身份驗證方法的 keystone(LDAP),基于身份驗證策略的 ABAC,這三種方法的靈活結合提供了所需的功能,來培養 Kubernetes 環境。
感謝各位的閱讀,以上就是“怎么理解 Kubernetes 認證和授權”的內容了,經過本文的學習后,相信大家對怎么理解 Kubernetes 認證和授權這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!