這篇文章主要介紹了kubernetes中安全機(jī)制API Server認(rèn)證之Service Account Token的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
為鎮(zhèn)坪等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及鎮(zhèn)坪網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)、鎮(zhèn)坪網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
一:前言
Kubernetes有User Account和Service Account兩套獨(dú)立的賬號(hào)系統(tǒng)。
1.User Account是給人用的,Service Account 是給Pod 里的進(jìn)程使用的,面向的對(duì)象不同。
2.User Account是全局性的,Service Account 是屬于某個(gè)具體的Namespace
3.User Account是與后端的用戶數(shù)據(jù)庫(kù)同步的。
二:Kubernetes API Server簡(jiǎn)介
Kubernetes API Server通過(guò)一個(gè)名為kube-apiserver的進(jìn)程提供服務(wù),該進(jìn)程運(yùn)行在Master節(jié)點(diǎn)上。在默認(rèn)情況下,kube-apiserver進(jìn)程在本機(jī)的8080端口(--insecure-port)提供REST服務(wù)。我們可以同時(shí)啟動(dòng)HTTPS安全端口(--secure=6443)來(lái)啟動(dòng)安全機(jī)制,加強(qiáng)REST API訪問(wèn)的安全性。
通常我們使用kubectl來(lái)與Kubernetes API Server交互,它們之間的接口是REST調(diào)用。也可以使用curl命令行工具進(jìn)行快速驗(yàn)證。
另外是通過(guò)編程的方式調(diào)用Kubernetes API Server 具體又細(xì)分為以下兩種場(chǎng)景:
1. 運(yùn)行在POD里的進(jìn)程調(diào)用Server
API. Pod中的進(jìn)程如何指定API
Server的訪問(wèn)地址呢?答案很簡(jiǎn)單,因?yàn)镵ubernetes API Server本身也是一個(gè)Service,它的名字是“kubernetes”,IP地址是ClusterIP地址池里面的第一個(gè)地址。服務(wù)端口是HTTPS端口443.
2. 開(kāi)發(fā)基于Kubernetes的管理平臺(tái),比如調(diào)用Kubernetes API來(lái)完成Pod,Service,RC等資源對(duì)象的圖形化創(chuàng)建和管理界面??刹捎蒙鐓^(qū)中相關(guān)的Client Library.
正常情況下,為了確保Kubernetes集群的安全,API Server都會(huì)對(duì)客戶端進(jìn)行身份認(rèn)證,認(rèn)證失敗則無(wú)法調(diào)用API。此外,Pod中訪問(wèn)Kubernetes API Server服務(wù)的時(shí)候,是以Service方式訪問(wèn)服務(wù)名為kubernetes的這個(gè)服務(wù),而kubernetes服務(wù)又只在HTTPS 443上提供服務(wù),那么如何進(jìn)行身份認(rèn)證呢? 答案是 Service Account Token.
三: Service Account
公鑰證書(shū),用于Pod中的Process對(duì)API Server的服務(wù)端數(shù)字證書(shū)進(jìn)行校驗(yàn)時(shí)使用的),namespace和token被放到了容器內(nèi),這樣容器就可以通過(guò)https的請(qǐng)求訪問(wèn)apiserver了。
四:
以kube-system namespace下的“default” service account為例,Pod的usrname全稱為:system:serviceaccount:kube-system:default。有了username,那么credentials呢?就是上面提到的service-account-token中的token。API Server的驗(yàn)證環(huán)節(jié)支持多種身份校驗(yàn)方式:CA 證書(shū)認(rèn)證、Token 認(rèn)證、Base 認(rèn)證。一旦API Server發(fā)現(xiàn)client發(fā)起的request使用的是service account token的方式,API Server就會(huì)自動(dòng)采用signed bearer token方式進(jìn)行身份校驗(yàn)。而request就會(huì)使用攜帶的service account token參與驗(yàn)證。該token是API Server在創(chuàng)建service account時(shí)用API server啟動(dòng)參數(shù):–service-account-key-file的值簽署(sign)生成的。如果–service-account-key-file未傳入任何值,那么將默認(rèn)使用–tls-private-key-file的值,即API Server的私鑰。
五:
Kubernetes提供了Secret來(lái)處理敏感信息,目前Secret的類(lèi)型有3種:
1.Opaque(default): 任意字符串
2.kubernetes.io/service-account-token: 作用于ServiceAccount,就是上面說(shuō)的。
3.kubernetes.io/dockercfg: 作用于Docker
registry,用戶下載docker鏡像認(rèn)證使用。
每個(gè)Namespace下有一個(gè)名為default的默認(rèn)的Service Account對(duì)象,這個(gè)Service Account里面有一個(gè)名為T(mén)okens的可以當(dāng)作Volume一樣被Mount到Podcast里的Secret,當(dāng)Pod 啟動(dòng)時(shí),這個(gè)Secret會(huì)自動(dòng)被Mount到Pod的指定目錄下,用來(lái)協(xié)助完成Pod中的進(jìn)程訪問(wèn)API Server時(shí)的身份鑒權(quán)過(guò)程。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“kubernetes中安全機(jī)制API Server認(rèn)證之Service Account Token的示例分析”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
名稱欄目:kubernetes中安全機(jī)制APIServer認(rèn)證之ServiceAccountToken的示例分析
文章分享:http://jinyejixie.com/article12/gceidc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、網(wǎng)站設(shè)計(jì)公司、標(biāo)簽優(yōu)化、網(wǎng)站內(nèi)鏈、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)