kubernetes Authorization
2019獨角獸企業(yè)重金招聘Python工程師標準>>>
kubernetes Authorization 博客分類: Kuberneteskubernetes授權設置
在kubernetes中授權 和 認證是各自獨立的部分。認證部分參見?kubernetes認證。
授權操作適用于所有面向于kubernetes api的http請求。
授權 將會針對每一個請求,根據訪問策略來檢查對比請求中的屬性信息(比如 用戶,資源,namespace等)。一個API請求必須滿足指定的策略才能繼續(xù)執(zhí)行。
有如下幾種策略方式:
- --authorization_mode=AlwaysDeny
- --authorization_mode=AlwaysAllow
- --authorization_mode=ABAC
AlwaysDeny?阻止所有請求(通常用在測試環(huán)境);AlwaysAllow允許所有請求,如果不想用授權機制可以這么設置;ABAC允許用戶自定義的授權策略,ABAC的全寫為:Attribute-Based Access Control(面向屬性的授權控制)。
ABAC Mode
請求屬性
在授權設置中,可以用到的屬性設置有4個:
- user ,已經被認證的用戶;
- 請求是否是只讀的;
- 被請求的資源是什么,只接受針對api endpoint的請求,如/api/v1/namespaces/default/pods,對于其他的endpoint,如/version,資源描述則為空string;
- 訪問對象的namespace,如果訪問的對象不支持namespace,則為空string
授權文件格式
設置參數為: --authorization_policy_file=SOME_FILENAME,這樣便開啟ABAC模式。?在指定的文件中,一行為一個json對象,這個json對象包含幾個map格式,這些map對象有如下:
- user,string類型,對應--token_auth_file 中的user屬性;
- readonly,bool類型,當設置為true時,只接受GET請求;
- resource,string類型,請求URL中對應的資源類型,如pod;
- namespace,string類型,對應namespace。
如果屬性沒有設置,那么默認值為0 或 false 或 空string。
授權算法
一個請求中設置的屬性決定了這個請求所能擁有的特性(好繞~)
當收到一個請求,就獲取了這個請求應該擁有的相應特性,如果某些屬性沒有設置,那么會默認設置為這個屬性類型對應的空值,如0,false,空string 等。
如果在授權文件中某個屬性被重復定義了,那么只要有一個滿足授權條件,那么這個請求就被認為是被授權的。
如果在授權條件中將user設置為空,那么不會對任何用戶做限制; 如果在授權條件中獎namespace設置為空,那么不對任何namespace做限制。
Examples
用戶alice 可以做任何事!
kubelet可以GET任何pod的信息。
kubelet可以對events做任何讀寫操作。
Bob 僅僅能GET處于namespace projectCaribou下的pod。
?
kubernetes認證設置kubernetes中,驗證用戶是否有權限操作api的方式有三種:證書認證,token認證,基本信息認證。證書認證設置apiserver的啟動參數:--client_ca_file=SOMEFILE ,這個被引用的文件中包含的驗證client的證書,如果被驗證通過,那么這個驗證記錄中的主體對象將會作為請求的username。token認證設置apiserver的啟動參數:--token_auth_file=SOMEFILE,目前使用token還存在爭議,而且如果變更了這個文件內容,只有重啟apiserver才能使配置生效。token file的格式包含三列:token,username,userid。當使用token作為驗證方式時,在對apiserver的http請求中,增加一個Header字段:Authorization ,將它的值設置為:Bearer SOMETOKEN?;拘畔⒄J證設置apiserver的啟動參數:--basic_auth_file=SOMEFILE,如果更改了文件中的密碼,只有重新啟動apiserver使其重新生效。其文件的基本格式包含三列:passwork,username,userid。當使用此作為認證方式時,在對apiserver的http請求中,增加一個Header字段:Authorization ,將它的值設置為: Basic BASE64ENCODEDUSER:PASSWORD.
?
https://segmentfault.com/a/1190000002919433?utm_source=tuicool
http://www.coin163.com/it/x2700960886745827433/kubernetes-authentication-herman-liu
轉載于:https://my.oschina.net/xiaominmin/blog/1598573
總結
以上是生活随笔為你收集整理的kubernetes Authorization的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jQuery 遍历|祖先
- 下一篇: 从Apache Kafka 重温文件高效